请问这个SQL语句有什么错误?(30分)

  • 主题发起人 主题发起人 esgeht
  • 开始时间 开始时间
E

esgeht

Unregistered / Unconfirmed
GUEST, unregistred user!
请问下面的SQL语句有什么错误?可以编译通过
但一执行这个插入操作就报错
ADOConnection1.open;
ADOQuery1.close;
with ADOQuery1 do begin
with SQL do begin
Clear;
Add('insert into tbl_histWeather');
Add('values('''+datetostr(date)+''',''+trackbar2.Position+'',''+trackbar1.Position+'',''+trackbar3.Position+'',');
Add('''+trackbar4.position+'',''未知'','''+radiogroup1.items[radiogroup1.itemindex]+''',');
Add('''+trackbar5.position+'','''+radiogroup2.items[radiogroup2.itemindex]+''',');
Add(''''+radiogroup3.items[radiogroup3.itemindex]+''','''+radiogroup4.items[radiogroup4.itemindex]+''','''+radiogroup5.items[radiogroup5.itemindex]+''',');
Add(''''+edit1.Text+''')');
end;
ExecSQL;
end;
ADOConnection1.Close;
ADOQuery1.close;
ADOQuery1.active:=false;

 
暫時我不想詳細看你上面的代碼!你能詳細一點把報錯時的代碼全部照抄下來嗎?
 
报错信息写出来!
 
trackbar2.Position是什么类型的?为什么旁边是两个单引号?
如果是字符串,就要用''','''+trackbar2.Position+''','''......等
还有add('''+为什么不用  add(''''+ ?
难道编译的时候没有报错吗?
 
将varchar值'+trackbar5.position+'转化为数据类型为int时发生错误

就是说变量赋值发生错误,我将+trackbar5.position+'变成int型常量时
错误提示就是'将varchar值'+trackbar4.position+'转化为数据类型为int时发生错误'
所以我觉得应该是+trackbar5.position+前后加引号的问题,不知道应该加几个引号
就是说整形变量改加几个单引号
 
這樣,凡是類似''+trackbar2.Position+''樣的都改為
'+inttostr(trackbar2.Position)+'看看。
 
应该是SQL字符串错误,字符串中的’号之前要再加一个’号才能表示一个’号,
如’ABC’写成Delphi的字符串是这样写的:’’’ABC’’’;一个字符型字段
在SQL字符串中应写成’’’’+字段值+’’’’,比如在该字段前头还是字符
型字段,后头是数值型字段,应这样写:’’’,’’’+字段值+’’’,’;
 
eric.youbin:
trackbar.position是数值型变量
zxb200
trackbar.position是integer型变量,数据库中相应字段也是int型,而不是char型
hunterTeam
你的方法我早试过,无法编译通过
 
若trackbar.position是integer型变量,数据库中相应字段也是int型 则加入字符串时
应进行类型转换inttostr,而在数据库脚本中int型字段不需要加引号,则原代码应改为
如下:(若radiogroup1.items[radiogroup1.itemindex]为string在数据库对应字段为
varchar时不需做改动,但若为数值型则也要做类似的更改)

Add('insert into tbl_histWeather');
Add('values('''+datetostr(date)+''','+inttostr(trackbar2.Position)+','+inttostr(trackbar1.Position)+','+inttostr(trackbar3.Position)+',');
Add(inttostr(trackbar4.position)+',''未知'','''+radiogroup1.items[radiogroup1.itemindex]+''',');
Add(inttostr(trackbar5.position)+','''+radiogroup2.items[radiogroup2.itemindex]+''',');
Add(''''+radiogroup3.items[radiogroup3.itemindex]+''','''+radiogroup4.items[radiogroup4.itemindex]+''','''+radiogroup5.items[radiogroup5.itemindex]+''',');
Add(''''+edit1.Text+''')');
 
多人接受答案了。
 
后退
顶部