有关图书管理系统的问题~急请教~

heqian11 2008-04-09 07:41:39
小妹我在写一个图书管理系统,但是在借还模块中遇到了问题~请大侠帮忙解决~~~~~~
现在想要实现的就是通过输入书号,点击确定,书名,价格,数量,类别的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数据库,不知道出了什么问题,大家能不能帮忙解决一下~~~~~~~~~~~~~~~
小妹不想要更改数据库的类型,因为改了其他模块就会出问题,所以请大家尽量在代码上修改~谢谢~~~~~~~~~~
...全文
84 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
不会,帮顶
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
不知,帮顶
kaikai_kk 2008-04-11
  • 打赏
  • 举报
回复
F7 看看,到那一句出错?
别让我们瞎猜

不过,我也要猜一下,应该99.999% 被猜对了!!

错误在这里: ...书号='''+Edit1.text+'''';

"书号"为数字类型,Edit1输入为字符
那么ADOQuery1.Open时就会这样出错: "标准表达式中数据类型不匹配"!
ctx62 2008-04-10
  • 打赏
  • 举报
回复
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 书号=: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;
UndefinedCoder 2008-04-10
  • 打赏
  • 举报
回复
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;

强,用了Data-Ware控件,又手动赋值。
阿三 2008-04-10
  • 打赏
  • 举报
回复
按3楼的试一下,应该没有问题的。
heqian11 2008-04-10
  • 打赏
  • 举报
回复
回复pengxuan :我想知道是哪个数据类型不对呢?
喝口水 2008-04-10
  • 打赏
  • 举报
回复
补充,把上面红色部分删除,几个DBEdit控件按照上面蓝色部分所说方法设置即可
喝口水 2008-04-10
  • 打赏
  • 举报
回复
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;

你的意思是点击确定后书名,价格,数量,类别的DBEdit中自动出现相应的字段值,你上面所写是错误的,具体做法是分别设置DBEdit1,DBEdit2,DBEdit3,DBEdit4的DataSource属性为ADOQuery1所对应的DATASource1,如果没有添加DataSource控件的话,添加一个,然后再分别设置DBEdit1,DBEdit2,DBEdit3,DBEdit4控件的DataField属性为书名,价格,数量,类别即可


except
MessageDlg('数据操作出错',mtError,[mbok],0);
end;
end;
end;
pengxuan 2008-04-10
  • 打赏
  • 举报
回复
数据类型不对啊,代码没看出有什么问题来
kaikai_kk 2008-04-09
  • 打赏
  • 举报
回复
ADOquery1.fieldbyname('书名').AsString:=DBEdit1.Text;
ADOquery1.FieldByName('价格').AsVariant:=DBEdit2.Text;
ADOquery1.FieldByName('数量').AsVariant:=strtoint(DBEdit3.Text);
ADOquery1.fieldbyname('类别').AsString:=DBEdit4.Text;

写反了吧,显示应该这样 DBEdit.Text:='...';

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧