这样的问题是不是和SQL92有关?(0分)

  • 主题发起人 主题发起人 wilsonlee
  • 开始时间 开始时间
W

wilsonlee

Unregistered / Unconfirmed
GUEST, unregistred user!
有点怪,比如我有一个数据表score.db,结构如下
第一个字段 Name:Line Type:N
第二个字段 Name:Indicator Type:N
在先前的语句中我想删除某一记录,我用这样的语句:
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('Delete from score.db where Line=:Line1');
ParamByName('Line1').AsInteger:=StrToInt(Edit1.Text);
ExecSQL;
end;
上面的EDIT1,我假设有一个edit组件,用来输入行号.这条语句编译和运行都没问题.
可是我想插入一条记录,我用
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into score.db (Line,Indicator) values (:Line2,:Indcator2)');
ParamByName('Line2').AsInteger:=StrToInt(Edit1.Text);
ParamByName('indicator2').AsInteger:=StrToInt(Edit2.Text);//同理,edit2是一个组件,用来输入INDICATOR
ExecSQL;
end;
编译没问题,一运行,总提示'类型不匹配' Type Mismatch in the expression.
这个问题困扰我很久了,用
SQL.Add('Insert into score.db (line,Indicator) values (1,2)');
也就是用具体的数字,可行.
我又改,将score.db的字段改成字符型.
上面的sql语句改为:
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('insert into score.db (Line,Indicator) values (:Line2,:Indcator2)');
ParamByName('Line2').AsString:=Edit1.Text;
ParamByName('indicator2').AsString:=Edit2.Text;//同理,edit2是一个组件,用来输入INDICATOR
ExecSQL;
end;
也可行.
不知道为什么在插入记录的时候会提示类型不匹配?
多谢指教!
 
后退
顶部