这段查询代码为什么出错?急急急!(50分)

C

czzz

Unregistered / Unconfirmed
GUEST, unregistred user!
出错现象:数据类型错,用的是paradox7的表。
with Dm_1.Xszy_Q do
begin
close;
SQL.Clear;
SQL.Add('Insert into xszy (S_Grade,S_Zy) values :)s_grade,:s_zy)');
ParamByName('s_grade').AsInteger:=SpinEdit1.Value;
ParamByName('s_zy').AsString:=edit1.text;
ExecSQL;
end;
 
错误提示是什么?
 
而这句却没有问题,为什么会有这种情况?我用的是Delphi6
SQL.Add('select from xszy ');
SQL.Add('where S_Grade=:s_grade and s_zy=:s_zy)');
ParamByName('s_grade').AsInteger:=SpinEdit1.Value;
ParamByName('s_zy').AsString:=edit1.text;
ExecSQL;
 
错误提示是:
Type mismatch in expression
 
问题在这句:
ParamByName('s_grade').AsInteger:=SpinEdit1.Value;
我的表里的S_grade字段是Short型的,要怎么样转换?
 
控制SpinEdit1.Value在Short的范围之内!!!
 
short的范围是多少?
 
改成这样也没有问题:是不是Delphi 6有Bug
with DM_1.Xszy do
begin
Append;
FieldByName('s_grade').AsInteger:=SpinEdit1.Value;
FieldByName('s_zy').AsString:=Edit1.Text;
Post;
end;
 
ParamByName('s_grade').AsSmallInt:=SpinEdit1.Value;
 
sql有问题,改改吧,你不认为values:)a,:b)有错吗,在看看书吧
 
to killerbug:
参数查询有什么错?没有错!
 
表xszy 中只有2个字段吗?
SQL.Add('Insert into xszy (S_Grade,S_Zy) values :)s_grade,:s_zy)');
是你的 Insert 语句错误了
'Insert 要求字段匹配
 
就是只有两个字段
 
ParamByName('s_grade').AsInteger:=SpinEdit1.Value;
改为
ParamByName('s_grade').Value:=SpinEdit1.Value;
如果是SpinEdit1.Value出界则可将S_grade字段改为整形
 
把表中的字段改成长整型试试
 
改成这样试试:
FieldByName('s_grade').AsInteger:=StrToInt(SpinEdit1.Value);
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
556
import
I
S
回复
0
查看
828
SUNSTONE的Delphi笔记
S
顶部