小妹我在写一个图书管理系统,但是在借还模块中遇到了问题~请大侠帮忙解决~~~~~~
现在想要实现的就是通过输入书号,点击确定,书名,价格,数量,类别的DBEdit中自动出现相应的字段值,但是现在运行的时候总是出现"标准表达式中数据类型不匹配",代码如下:
procedure TLend.Button1Click(Sender: TObject);
begin
if trim(Edit1.Text) <> '' then
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书信息表 where 书号='''+Edit1.text+'''');
ADOQuery1.Open;
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
小妹使用的是ACCESS数据库,不知道出了什么问题,大家能不能帮忙解决一下~~~~~~~~~~~~~~~
小妹不想要更改数据库的类型,因为改了其他模块就会出问题,所以请大家尽量在代码上修改~谢谢~~~~~~~~~~
现在想要实现的就是通过输入书号,点击确定,书名,价格,数量,类别的DBEdit中自动出现相应的字段值,但是现在运行的时候总是出现"标准表达式中数据类型不匹配",代码如下:
procedure TLend.Button1Click(Sender: TObject);
begin
if trim(Edit1.Text) <> '' then
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书信息表 where 书号='''+Edit1.text+'''');
ADOQuery1.Open;
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
小妹使用的是ACCESS数据库,不知道出了什么问题,大家能不能帮忙解决一下~~~~~~~~~~~~~~~
小妹不想要更改数据库的类型,因为改了其他模块就会出问题,所以请大家尽量在代码上修改~谢谢~~~~~~~~~~
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
写反了吧,显示应该这样 DBEdit.Text:='...';
begin
if trim(Edit1.Text) <> '' then
begin
try
ADOQuery1.Active:=True; //这句话多余
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书信息表 where 书号=:BookNo');
ADOQuery1.Parameters.ParamByName('BookNo').Value := Edit1.Text;
ADOQuery1.Open;
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsFloat:= StrToFloat(DBEdit2.Text);
ADOquery1.FieldByName('数量').AsIntiger:= strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
begin
if trim(Edit1.Text) <> '' then
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书信息表 where 书号='''+Edit1.text+'''');
ADOQuery1.Open;
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
你的意思是点击确定后书名,价格,数量,类别的DBEdit中自动出现相应的字段值,你上面所写是错误的,具体做法是分别设置DBEdit1,DBEdit2,DBEdit3,DBEdit4的DataSource属性为ADOQuery1所对应的DATASource1,如果没有添加DataSource控件的话,添加一个,然后再分别设置DBEdit1,DBEdit2,DBEdit3,DBEdit4控件的DataField属性为书名,价格,数量,类别即可
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
begin
if trim(Edit1.Text) <> '' then
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from 图书信息表 where 书号='''+Edit1.text+'''');
ADOQuery1.Open;
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;
except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end; 强,用了Data-Ware控件,又手动赋值。
别让我们瞎猜不过,我也要猜一下,应该99.999% 被猜对了!!错误在这里: ...书号='''+Edit1.text+''''; "书号"为数字类型,Edit1输入为字符
那么ADOQuery1.Open时就会这样出错: "标准表达式中数据类型不匹配"!