unit add;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;type
  TaddForm = class(TForm)
    nameEdit: TEdit;
    man: TRadioButton;
    women: TRadioButton;
    city: TComboBox;
    Label1: TLabel;
    addButton: TButton;
    closeButton: TButton;
    ADOQuery1: TADOQuery;
    procedure closeButtonClick(Sender: TObject);
    procedure addButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  addForm: TaddForm;implementation
uses ado;
{$R *.dfm}procedure TaddForm.closeButtonClick(Sender: TObject);
begin
  addForm.Close;
end;procedure TaddForm.addButtonClick(Sender: TObject);
var strsex: String;
begin  if(addForm.man.Checked) then
       strsex:='男'
  else
       strsex:='女';  ADOQuery1.SQL.Text:='insert into users (name,sex,city) values ('+addform.nameEdit.text+','+strsex+','+addForm.city.Text+')';
  ADOQuery1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;'+'Data Source=db.mdb;Persist Security Info=False';
  ADOQuery1.Open;
  ADOQuery1.Close;
  addform.nameEdit.text:=''   ;
  addform.man.Checked;
  addform.city.Text:='';
end;end.RUN通过,但是在运行是,点“添加”按钮后出现异常,提示说我少参数。俺刚写DELPHI,请指教。。

解决方案 »

  1.   

    ADOQuery1.SQL.Text:='insert into users (name,sex,city) values ('+ quotedstr(addform.nameEdit.text)+','+ quotedstr(strsex) +','+ quotedstr(addForm.city.Text)+')';
      

  2.   

    adoquery1.close;
     adoquery1.clear;
     ADOQuery1.SQL.Text:='insert into users (name,sex,city) values (:n,:s,:c);
    adoquery1.Parameters.ParamByName('n').Value :=nameEdit.text;
     adoquery1.Parameters.ParamByName('n').Value :=strsex;
    adoquery1.Parameters.ParamByName('n').Value :=city.text;
    open;
      

  3.   

    //不好意思上边错了。。
    adoquery1.close;
     adoquery1.clear;
     ADOQuery1.SQL.Text:='insert into users (name,sex,city) values (:n,:s,:c);
    adoquery1.Parameters.ParamByName('n').Value :=nameEdit.text;
     adoquery1.Parameters.ParamByName('n').Value :=strsex;
    adoquery1.Parameters.ParamByName('n').Value :=city.text;
    execsql;
      

  4.   

    SQL语句那已经搞定。但是有新的错误,数据可以插进去,但在插的过程中提示错误:“当前提供者不能单一行恢复多个记录”什么意思??还有“CommandText does't return a result set”
      

  5.   

    //不好意思上边错了。。adoquery1.close;
     adoquery1.clear;
     ADOQuery1.SQL.Text:='insert into users (name,sex,city) values (:n,:s,:c);
    adoquery1.Parameters.ParamByName('n').Value :=nameEdit.text;
     adoquery1.Parameters.ParamByName('n').Value :=strsex;
    adoquery1.Parameters.ParamByName('n').Value :=city.text;
    adoquery1.execsql;
      

  6.   

    adoquery1.close;
     adoquery1.clear;
    加上试试。。
      

  7.   

    with AdoQuery1 do
      begin
        Close;
        SQL.Clear;
        SQL.Add('写上你的插入语句');
        ExecSQL;
      end;
      

  8.   

    还是hnhb(不死鸟) 的方法还用,可否告诉我:我错在哪里,好下次不犯?谢谢!!
      

  9.   


       strSQL:='insert into users (name,sex,city) values'
            +'('''+addform.nameEdit.text+''','''+strsex+''','''
            +addForm.city.Text+''')';
       query1.close;
       query1.sql.clear;
       query1.sql.add(strSQL);
       query1.execsql;