我用delphi写一个程序
程序如下:
procedure Tfr_shoufei.BitBtn7Click(Sender: TObject);
begin
datamodule1.ado_shoufri.Active:=true;
if self.e_zhuhuname.Text='' then
begin
showmessage('请输入住户名字才可以操作');
end
else if self.e_zhuhufh.Text='' then
begin
showmessage('请输入房间号才可以操作');
end
else if self.Edit15.Text='' then
begin
showmessage('请输入电视费');
end
else if datamodule1.ado_zhuhu.Locate('zhuhu',e_zhuhuname.Text,[])then
begin
if datamodule1.ado_zhuhu.Locate('fangmenhao',e_zhuhufh.Text,[])then
begin
if datamodule1.ado_shoufri.Locate('zhuhu',self.e_zhuhuname.text,[])then
begin
datamodule1.ado_shoufri.Edit;
datamodule1.ado_shoufri.Fields[6].Value:=self.Edit15.Text;
datamodule1.ado_shoufri.Post;
end
else
begin
datamodule1.ado_shoufri.Close;
datamodule1.ado_shoufri.Active:=true;
datamodule1.ado_shoufri.insert;
datamodule1.ado_shoufri.Fields[0].Value:=self.e_zhuhuname.Text;
datamodule1.ado_shoufri.Fields[6].Value:=self.Edit15.Text;
datamodule1.ado_shoufri.Fields[8].Value:=self.e_zhuhufh.Text;
datamodule1.ado_shoufri.Post;
end;
end
else
begin
showmessage('该住户和房间号不吻合');
end;
end
else
begin
showmessage('住户名出错或是不存在');
end;
end;运行是出错如下
project wygl.exe raised exception class Eoleexception with message’row cannot
be located for updating. Some values may have been changed since it was last
read’.process stopped user step or run to continue.
请高手帮个忙解决
程序如下:
procedure Tfr_shoufei.BitBtn7Click(Sender: TObject);
begin
datamodule1.ado_shoufri.Active:=true;
if self.e_zhuhuname.Text='' then
begin
showmessage('请输入住户名字才可以操作');
end
else if self.e_zhuhufh.Text='' then
begin
showmessage('请输入房间号才可以操作');
end
else if self.Edit15.Text='' then
begin
showmessage('请输入电视费');
end
else if datamodule1.ado_zhuhu.Locate('zhuhu',e_zhuhuname.Text,[])then
begin
if datamodule1.ado_zhuhu.Locate('fangmenhao',e_zhuhufh.Text,[])then
begin
if datamodule1.ado_shoufri.Locate('zhuhu',self.e_zhuhuname.text,[])then
begin
datamodule1.ado_shoufri.Edit;
datamodule1.ado_shoufri.Fields[6].Value:=self.Edit15.Text;
datamodule1.ado_shoufri.Post;
end
else
begin
datamodule1.ado_shoufri.Close;
datamodule1.ado_shoufri.Active:=true;
datamodule1.ado_shoufri.insert;
datamodule1.ado_shoufri.Fields[0].Value:=self.e_zhuhuname.Text;
datamodule1.ado_shoufri.Fields[6].Value:=self.Edit15.Text;
datamodule1.ado_shoufri.Fields[8].Value:=self.e_zhuhufh.Text;
datamodule1.ado_shoufri.Post;
end;
end
else
begin
showmessage('该住户和房间号不吻合');
end;
end
else
begin
showmessage('住户名出错或是不存在');
end;
end;运行是出错如下
project wygl.exe raised exception class Eoleexception with message’row cannot
be located for updating. Some values may have been changed since it was last
read’.process stopped user step or run to continue.
请高手帮个忙解决
解决方案 »
- 明天婚宴请同事朋友,有来的吧? 小散200
- 已经用FINDWINDOW找到外部应用程序的窗口的句柄,如何通过这些来找该应用程序的实例的句柄呢?
- DBGrid 问题
- delphi中鼠标拖动的事件是什么,怎么使用?
- 调用application.messagebox()时出现的小问题!
- 关于Activex控件内部进行数据库连接的问题
- 怎么自定义类?高手请进,在线等待!
- 请教spcomm串口如何做一问一答呢?
- 请问用Currency定义的变量是什么类型?????????????????
- adoconnection正在尝试连接数据库,但未返回结果时,怎样取消这个连接?
- 招聘Delphi软件工程师要求(上海)
- DBGrid能不能用程序直接一行一行赋值?(不给DataSource赋值)
if self.e_zhuhuname.Text='' then
begin
showmessage('请输入住户名字才可以操作');
end
else if self.e_zhuhufh.Text='' then
begin
showmessage('请输入房间号才可以操作');
end
else if self.Edit15.Text='' then
begin
showmessage('请输入电视费');
end
ELSE
begin
WITH QUERY1 DO//在窗口上访一个QUERY1
begin
close;
sql.clear;
sql.add('select * from 表名');
sql.add('where 字段一='+#39+zhuhu.text+#39'');
prepare;
open;
end;
if query1.recordcount=0 then
begin
showmessage('住户不存在或者住户名出错');
exit;
end;
WITH QUERY1 DO//在窗口上访一个QUERY1
begin
close;
sql.clear;
sql.add('select * from 表名');
sql.add('where 字段一='+#39+zhuhu.text+#39'');
sql.add('and 字段二='+#39+e_zhuhufh.text+#39'');
prepare;
open;
end;
if query1.recordcount=0 then
begin
showmessage('该住户和房间号不吻合');
exit;
end;
再做一次判断,加上最后一个条件,方法和上面的一样。
end;
begin
if datamodule1.ado_zhuhu.Locate('fangmenhao',e_zhuhufh.Text,[])then
begin
if datamodule1.ado_shoufri.Locate('zhuhu',self.e_zhuhuname.text,[])
>>>你的这几个locate好像是没有什么实际的意义的
你本来的意思是三个条件同时成立的 但是实际上不是的 就是说你的第一个条件成立的
但是你的第二个不是在并不是在你的第一个条件基础上查询的 而是只是寻找该字断有没有匹配的结果的建议用adoquery查询出fangmenhao字段为e_zhuhufh.Text的值 然后判断其他字段的值是否相等进行操作
在多人用您的程序的时候, 您insert 语句可能有相同的纪录insert
update 的时候您的没有字段可能别别人覆盖了.
像hncx一样用query比较好’