小弟有个按钮进行如下设置:
edit1.text := '';
edit2.text := '';
...
edit8.text := ''
用于把edit控件清空,然后提示用户输入相关的输入,然后执行下面的代码:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;                               
ADOQuery1.SQL.Add('Insert into distributor');
ADOQuery1.SQL.Add('(Distri_num,Boss_name,Distri_company,Address,Phone,Bank_name,Bank_num,Memo)');
ADOQuery1.SQL.Add('Values');
ADOQuery1.SQL.Add('(:Distri_num,:Boss_name,:Distri_company,:Address,:Phone,:Bank_name,:Bank_num,:Memos)');ADOQuery1.Prepared := False;
ADOQuery1.Parameters.ParamByName('Distri_num').value :=Edit1.Text;
ADOQuery1.Parameters.ParamByName('Boss_name').value :=Edit3.Text;
ADOQuery1.Parameters.ParamByName('Distri_company').value := Edit2.Text;
ADOQuery1.Parameters.ParamByName('Address').value := Edit4.Text;
ADOQuery1.Parameters.ParamByName('Phone').value := Edit5.Text;
ADOQuery1.Parameters.ParamByName('Bank_name').value := Edit6.Text;
ADOQuery1.Parameters.ParamByName('Bank_num').value := Edit7.Text;
ADOQuery1.Parameters.ParamByName('Memos').value := Edit8.Text;ADOQuery1.Prepared;
ADOQuery1.ExecSQL;但是系统执行后出现如下的问题,提示数据库出错,我试过了,将Edit1.text :=''这一段设置去掉的话,下面的代码是可以正确执行的,我用单步调试进行了测试,发现
ADOQuery1.Parameters.ParamByName('Distri_num').value :=Edit1.Text
所接受的edit.text数据不是我后来输入的数据,而是‘’,因为Distri_num是关键字,所以系统报错,请问大大为什么edit.text不是我后来要求用户输入的数据阿?
如何改写?

解决方案 »

  1.   

    你可以把编辑框清空事件写在窗体初始化中
    procedure TForm1.Create(Sender: TObject);
    begin
    edit1.text :='';
    ...
    ....
    end;
      

  2.   

    我试过了,可是这样还是无法接收数据,不知道为什么阿?
    ADOQuery1.Parameters.ParamByName('Distri_num').value :=Edit1.Text;
    始终接收不到我要输入的数据。
      

  3.   

    看上去没问题啊。你跟踪一下看是不是有什么其它的事件改写了text值。