我弄了3个edit控件和一个dbgrid控件,一个button控件
请问如何通过按钮将3个edit的text分别插入到dbgrid控件的3个列里?(其中有id是自动增加的)
procedure TForm1.btn2Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into BM (aa,bb,cc) values('''+rzedit1.text+','+rzedit2.text+','+rzedit3.text+''')');
ADOQuery1.Active:=True;
end;
请问如何通过按钮将3个edit的text分别插入到dbgrid控件的3个列里?(其中有id是自动增加的)
procedure TForm1.btn2Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into BM (aa,bb,cc) values('''+rzedit1.text+','+rzedit2.text+','+rzedit3.text+''')');
ADOQuery1.Active:=True;
end;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into BM (aa,bb,cc) values('+''''+rzedit1.text+''''+','+''''+rzedit2.text+''''+','+''''+rzedit3.text+''''+')');
//aa,bb,cc字段类型为字符串,如是数字就取消'''': ADOQuery1.SQL.Add('insert into BM (aa,bb,cc) values('+rzedit1.text+','+rzedit2.text+','+rzedit3.text')');
ADOQuery1.ExceSQL;
end;
多个edit用于显示/修改一条记录的多个字段(edit)
然后由按钮决定是添加还是修改,形成一个sql去提交
然后dbgrid重新取多行记录,之前记住当前行,之后自动定位到当前行添加或修改后,dbgrid重新取多行记录,效率有点低,不过目前只做到这个程度其实,重新取多行记录 是通过http协议向一个位于iis后面的isapi请求进行的(添加或修改也是向它请求的)——这就是我的client/webserver的实现机制
只是,添加或修改的sql也是自动生成的,开发者只要把edit/combobox/checklistbox/memo的名字设为 指定前缀+字段名,即可
s := Format(strsql,[QuotedStr(),...QuotedStr()]);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(s);
ADOQuery1.ExceSQL;
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(Format('insert into BM (aa,bb,cc) values(''%s'',''%s'',''%s'')',[rzedit1.text, rzedit2.text, rzedit3.text]));
ADOQuery1.Active:=True;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
SQL: string;
begin
SQL := Format('insert into BM (aa,bb,cc) values(''%s'',''%s'',''%s'')',[rzedit1.text, rzedit2.text, rzedit3.text]));
ADOQuery1.Connection.Execute(SQL );
ADOQuery1.Active:=False;
ADOQuery1.Active:=True;
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM BM');
ADOQuery1.Active:=True;
ADOQuery1.Insert;
ADOQuery1.Fields[0].Value := rzedit1.text;
ADOQuery1.Fields[1].Value := rzedit2.text;
ADOQuery1.Fields[2].Value := rzedit3.text;
ADOQuery1.Post;end;
if adoquery1.state in [dsinsert ,dsedit] then
begin
with adoquery1 do
begin
...
替换为values('''+rzedit1.text+''','''+rzedit2.text+''','''+rzedit3.text+''');
ExceSQL;
end;
end;