想问下,我想做一个更新数据的窗口
用户可以通过输入一个条件,来查询出跟这个条件相关的所有数据,然后将这些数据显示在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;
我是个新手,请高手指教谢谢!

解决方案 »

  1.   

    SQL数据库
    储存过程?
    能提示下吗?
      

  2.   

    try
    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('修改失败');
    我的这段代码没有出过错误啊
      

  3.   

    WHERE ???WHERE???
    在哪里去了?
      

  4.   

    发现楼主的SQL语句好像真没有where限制条件 这样不全部更新才怪呢