我用ADO连接了数据库
  但是下边的语句说找不到字段!
self.DataSource1.DataSet.Close;
self.DataSource1.DataSet.FieldByName('stwork').AsString:=edit1.Text;
self.DataSource1.DataSet.FieldByName('sttime').AsDateTime:=cxdateedit1.Date;
self.DataSource1.DataSet.FieldByName('edtime').AsDateTime:=cxdateedit2.Date;
self.DataSource1.DataSet.FieldByName('edwork').AsString:=edit2.Text;
i:=self.DataSource1.DataSet.Fields.count;
self.DataSource1.DataSet.FieldByName('no').AsInteger:=i;
self.DataSource1.DataSet.FieldByName('flag').AsString:='未完成';
self.DataSource1.DataSet.Open;请你们看看怎么错了!急

解决方案 »

  1.   

    self.DataSource1.DataSet.Close;   // 都close了还怎么取值?
      

  2.   

    你是要保存数据就不能用open用post还有你的数据集都close了你能知道i:=self.DataSource1.DataSet.Fields.count;
      

  3.   

    self.DataSource1.DataSet.Open;
    self.DataSource1.DataSet.Insert;
    self.DataSource1.DataSet.FieldByName('stwork').AsString:=edit1.Text;
    self.DataSource1.DataSet.FieldByName('sttime').AsDateTime:=cxdateedit1.Date;
    self.DataSource1.DataSet.FieldByName('edtime').AsDateTime:=cxdateedit2.Date;
    self.DataSource1.DataSet.FieldByName('edwork').AsString:=edit2.Text;
    i:=self.DataSource1.DataSet.Fields.count;
    self.DataSource1.DataSet.FieldByName('no').AsInteger:=i;
    self.DataSource1.DataSet.FieldByName('flag').AsString:='未完成';
    self.DataSource1.DataSet.Post;
      

  4.   

    它提示我错误:你们看是那里错了?
    ADOQURY1:COMMANDTEXT DOES NOT RETURN A RESULT SET
    这是我第一个单元的代码:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, ExtCtrls, DBCtrls;type
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        ADOQuery1sttime: TDateTimeField;
        ADOQuery1stwork: TStringField;
        ADOQuery1edtime: TDateTimeField;
        ADOQuery1edwork: TStringField;
        ADOQuery1no: TIntegerField;
        ADOQuery1flag: TStringField;
        Button1: TButton;
        Label1: TLabel;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        DBNavigator1: TDBNavigator;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
    application.CreateForm(tform,form2);
    form2.show;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    application.CreateForm(tform,form3);
    form3.show;
    end;end.
    这是我第二而单元的代码:
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, ADODB, cxControls, cxContainer, cxEdit,
      cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar;type
      TForm2 = class(TForm)
        Label1: TLabel;
        Edit1: TEdit;
        Label2: TLabel;
        cxDateEdit1: TcxDateEdit;
        cxDateEdit2: TcxDateEdit;
        Label3: TLabel;
        Label4: TLabel;
        Edit2: TEdit;
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;implementation{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
    var
     i:integer;
    begin
    self.DataSource1.DataSet.Open;
    self.DataSource1.DataSet.Insert;
    self.DataSource1.DataSet.FieldByName('stwork').AsString:=edit1.Text;
    self.DataSource1.DataSet.FieldByName('sttime').AsDateTime:=cxdateedit1.Date;
    self.DataSource1.DataSet.FieldByName('edtime').AsDateTime:=cxdateedit2.Date;
    self.DataSource1.DataSet.FieldByName('edwork').AsString:=edit2.Text;
    i:=self.DataSource1.DataSet.Fields.count;
    self.DataSource1.DataSet.FieldByName('no').AsInteger:=i;
    self.DataSource1.DataSet.FieldByName('flag').AsString:='未完成';
    self.DataSource1.DataSet.Post;end;procedure TForm2.Button2Click(Sender: TObject);
    begin
    self.Close;
    end;procedure TForm2.FormCreate(Sender: TObject);
    begin
     self.DataSource1.DataSet.Open;
     self.DataSource1.DataSet.Insert;
    end;end.
    这是我第三个单元的代码:
    unit Unit3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;type
      TForm3 = class(TForm)
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form3: TForm3;implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
    begin
    if messagedlg('您确定要删除吗?',mtinformation,[mbyes,mbno],0)=mryes then
       begin
            self.DataSource1.DataSet.Open;
            self.DataSource1.DataSet.Delete;
       end;
    end;end.
    我一运行它就提示我上边的错误!
    我真的搞不东了郁闷啊!
    我把他们放在了一个APPLICATION里
    原来第三个单独的运行是可以的
      

  5.   

    procedure TForm2.FormCreate(Sender: TObject);
    begin
     self.DataSource1.DataSet.Open;
     self.DataSource1.DataSet.Insert;
    end;在这里打个段点
    估计是你连库不正常
      

  6.   

    把ADOQuery1里的SQL粘上来,估计是这得总是
      

  7.   

    select * from maintable
      

  8.   

    你的self.DataSource1.DataSet是不是挂错了地方,没用对应ADOQuery1