想问下,我想做一个更新数据的窗口
用户可以通过输入一个条件,来查询出跟这个条件相关的所有数据,然后将这些数据显示在EDIT里
如果用户需要维护这些数据,可以直接在EDIT里更改,然后通过点更新按钮来保存.
用户有可能只会更改其中的一些数据,而不是全部更改
我写的这个可以更新,但老是提示不能设置重复的值.也就是用户没更改的EDIT的值变成重复了.代码如下:
procedure TForm1.btn1Click(Sender: TObject);
begin
if edt1.Text='' then //判断用户是否输入过查询条件
begin
ShowMessage('消费者姓名不能为空');
end else
with qry1 do //开始执行查询语句
begin
Close;
SQL.Clear;
SQL.Add('select T0.消费者姓名,T0.消费者所在城市,T1.发票编号,T1.开发票日期 from 顾客信息 T0');
SQL.Add('JOIN 发票信息 T1 ON T0.消费者编号=T1.消费者编号');
SQL.Add('where T0.消费者姓名='''+edt1.Text+'''');
Open;
if not Eof then //如果EOF为真,将查询的数据输入到各个文本框里
begin
edt2.Text:=FieldByName('消费者姓名').AsString;
edt3.Text:=FieldByName('消费者所在城市').AsString;
edt4.Text:=FieldByName('发票编号').AsString;
edt5.Text:=FieldByName('开发票日期').AsString;
end else
begin
ShowMessage('没有相关记录');
end;
end;
end;procedure TForm1.btn2Click(Sender: TObject);
begin
if (edt1.Text='') and (edt2.Text='') and (edt3.Text='') and (edt4.Text='')
and (edt5.Text='') then //判断用户是否查询的数据
begin
ShowMessage('没更新值');
end else
with qry1 do
begin //更新
Close;
SQL.Clear;
SQL.Add('update 顾客信息 set 消费者姓名=:消费者姓名1,消费者所在城市=:消费者所在城市1');
SQL.Add('update 发票信息 set 发票编号=:发票编号1,开发票日期=:开发票日期1');
Parameters.ParamByName('消费者姓名1').Value:=edt2.Text;
Parameters.ParamByName('消费者所在城市1').Value:=edt3.Text;
Parameters.ParamByName('发票编号1').Value:=edt4.Text;
Parameters.ParamByName('开发票日期1').Value:=edt5.Text;
Open;
end;
end;
我是个新手,请高手指教谢谢!
用户可以通过输入一个条件,来查询出跟这个条件相关的所有数据,然后将这些数据显示在EDIT里
如果用户需要维护这些数据,可以直接在EDIT里更改,然后通过点更新按钮来保存.
用户有可能只会更改其中的一些数据,而不是全部更改
我写的这个可以更新,但老是提示不能设置重复的值.也就是用户没更改的EDIT的值变成重复了.代码如下:
procedure TForm1.btn1Click(Sender: TObject);
begin
if edt1.Text='' then //判断用户是否输入过查询条件
begin
ShowMessage('消费者姓名不能为空');
end else
with qry1 do //开始执行查询语句
begin
Close;
SQL.Clear;
SQL.Add('select T0.消费者姓名,T0.消费者所在城市,T1.发票编号,T1.开发票日期 from 顾客信息 T0');
SQL.Add('JOIN 发票信息 T1 ON T0.消费者编号=T1.消费者编号');
SQL.Add('where T0.消费者姓名='''+edt1.Text+'''');
Open;
if not Eof then //如果EOF为真,将查询的数据输入到各个文本框里
begin
edt2.Text:=FieldByName('消费者姓名').AsString;
edt3.Text:=FieldByName('消费者所在城市').AsString;
edt4.Text:=FieldByName('发票编号').AsString;
edt5.Text:=FieldByName('开发票日期').AsString;
end else
begin
ShowMessage('没有相关记录');
end;
end;
end;procedure TForm1.btn2Click(Sender: TObject);
begin
if (edt1.Text='') and (edt2.Text='') and (edt3.Text='') and (edt4.Text='')
and (edt5.Text='') then //判断用户是否查询的数据
begin
ShowMessage('没更新值');
end else
with qry1 do
begin //更新
Close;
SQL.Clear;
SQL.Add('update 顾客信息 set 消费者姓名=:消费者姓名1,消费者所在城市=:消费者所在城市1');
SQL.Add('update 发票信息 set 发票编号=:发票编号1,开发票日期=:开发票日期1');
Parameters.ParamByName('消费者姓名1').Value:=edt2.Text;
Parameters.ParamByName('消费者所在城市1').Value:=edt3.Text;
Parameters.ParamByName('发票编号1').Value:=edt4.Text;
Parameters.ParamByName('开发票日期1').Value:=edt5.Text;
Open;
end;
end;
我是个新手,请高手指教谢谢!
储存过程?
能提示下吗?
with ADOQuery1 do
begin
close;
SQL.clear;
SQL.add('update gongzi set dx='''+trim(DBedit2.Text)+''',tc='''+trim(DBedit6.Text)+''',cf='''+trim(DBedit6.Text)+''',jj='''+trim(DBedit7.Text)+''',fk='''+trim(DBedit4.Text)+''',qt='''+trim(DBedit8.Text)+''',hj='''+trim(DBEDIT5.Text)+''' where name='''+trim(DBedit1.Text)+'''');
ExecSQL;
end;
showmessage('修改成功');
except
ShowMessage('修改失败');
我的这段代码没有出过错误啊
在哪里去了?