先在有个问题
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
 adoconnection1.Close;
adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\jdl1\My Documents\教学管理系统\教学管理系统\教务课程管理系统\教务课程管理系统\db1.mdb;Persist Security Info=False';
 adoquery1.SQL.Clear;
adoquery1.Connection:=adoconnection1;
adoquery1.SQL.Add('select * from class');
adoquery1.Open;
datasource1.DataSet:=adoquery1;
dbgrid1.DataSource:=datasource1;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.Connection:=adoconnection1;
adoquery1.SQL.Add('insert into class(id,name,monitor,department) values('+edit3.Text+','+'"'+edit1.Text +'"'+','+edit2.Text +','+edit4.Text +')');
adoquery1.Open ;
end;
end.
因为我才学了5天不懂请见量,这段是我吓写的,先在有个问题,他好象有警告,
警告是:‘对象和提供者不能执行所需要的操作’。请问着是不是跟我用的是TADOQUERY 有关,有什么解决办法吗?因为我以前是学VB的,所以我用VB的办法做的。

解决方案 »

  1.   

    应该是
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.SQL.Clear;
    adoquery1.Connection:=adoconnection1;
    adoquery1.SQL.Add('insert into class(id,name,monitor,department) values('+edit3.Text+','+'"'+edit1.Text +'"'+','+edit2.Text +','+edit4.Text +')');
    adoquery1.ExecSQL ;
    end;
      

  2.   

    建议再加一个ADOQuery2procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.close;
    adoquery2.Connection:=adoconnection1;
    adoquery2.close; 
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('insert into class(id,name,monitor,department) values('+edit3.Text+','+''''+edit1.Text +''''+','+edit2.Text +','+edit4.Text +')');
    adoquery2.ExecSQL;
    adoquery1.Open;
    end;
      

  3.   

    select ______ADOQuery.open
    insert ______ADOQuery.ExecSQL;
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.close;
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('insert into class(id,name,monitor,department) values('+edit3.Text+','+''''+edit1.Text +''''+','+edit2.Text +','+edit4.Text +')');
    adoquery2.ExecSQL;
    end;
      

  5.   

    不好意思
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    adoquery1.close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('insert into class(id,name,monitor,department) values('+edit3.Text+','+''''+edit1.Text +''''+','+edit2.Text +','+edit4.Text +')');
    adoquery1.ExecSQL;
    end;
      

  6.   

    procedure TForm1.Button1Click(Sender: TObject)的时候应该在sql.clear前面先close吧,你的做法应该没有问题。至于什么有警告我就不知道了。还有不必每次都为ado组件的connection赋值,如果只有一个数据库的话,就是用设计期连接好,我就是这样做。
      

  7.   

    查查这条语句,最好让它等于一个字符串变量:STR:='insert into class(id,name,monitor,department) values('+edit3.Text+','+'"'+edit1.Text +'"'+','+edit2.Text +','+edit4.Text +')';
      

  8.   

    看了你的代码,感觉手工成分太大了。
    设置ADOConnection的连接属性的正常方法是双击ADOConnection,打开可视对话框,用向导的方式进行设置。
      

  9.   

    改成
    adoquery1.SQL.Add('insert into class(id,name,monitor,department) 
       values('+quotedstr(edit3.Text)+','+quotedstr(edit1.Text) +','+quotedstr(edit2.Text) +','+quotedstr(edit4.Text) +')');
      

  10.   

    提点建议,你的代码很多都可以在IDE中设置属性就可完成,没有必要在这里敲这么多代码!
      

  11.   

    我现在试出来了但是DBGRID1的网格表会消失,有别的办法让它重新刷新一下
    并且在重现,是什么属性???
    谢谢
      

  12.   

    天呐,大伙都喜欢这样写代码吗?都是SQL语句不断的往后加,难道不能用Parambyname吗?这样写的语句清淅多了!
      

  13.   

    我现在试出来了但是DBGRID1的网格表会消失,有别的办法让它重新刷新一下
    并且在重现,是什么属性???
    谢谢
    告诉我,我在开一贴加分
      

  14.   

    因为
    (1)datasource1.DataSet:=adoquery1;
    (2)最后adoquery1.SQL.Add('insert ......'),不是 Select 语句
    所以网格表会消失;* 建议做'insert ......'用adoquery2
    * adoquery2 做完 insert 后执行下面语句:
      ;adoquery1.close;
       adoquery1.open;           //end。