qry1.Open;
            qry1.Edit;
            qry1.FieldByName('date').AsString := instRecord.date;
            qry1.FieldByName('name').AsString := instRecord.name;
            qry1.FieldByName('time').AsString := instRecord.time;
            qry1.FieldByName('pass').AsString := instRecord.pass;
            qry1.FieldByName('prbl').AsString := instRecord.prbl;
            qry1.Open;
instRecord结构中的值都已经有了,qry1中的Fieldkind都是fkLookup
报的错是Qur1:Field'date'not found
为了让Qry1打开,随便连了个SQL数据库,做了一次空查询,我只想把instRecord赋值给qry1

解决方案 »

  1.   

    qry1查询返回结果集中不存在date列,注意字段的命名规则,
      

  2.   

    date 是 SQL 关键字,qry1.FieldByName('[date]').AsString := instRecord.date;
      

  3.   

    还是一样的,不是这个问题.
    FIeld是我自己定义的 ,不是从数据库查询出来的,和SQL语句应该没有关系吧?
    附上全部代码.
    控件是一个DBgridEH.一个Datasource.一个ADOquery.一个Opendialog.一个Button.很简单的一个小程序,就是想把一个Execl表中的内容导入到ADOquery中\\unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, Grids, DBGridEh, ADODB, ExtCtrls, StdCtrls,ComObj;type
        TInstructRecord = record
        date: string;
        name: string;
        time: string;
        pass: string;
        prbl: string;    end ;
      TForm1 = class(TForm)
        pnl1: TPanel;
        qry1: TADOQuery;
        dbgrdh1: TDBGridEh;
        ds1: TDataSource;
        dlgOpen1: TOpenDialog;
        btn1: TButton;
        strngfldqry1Field: TStringField;
        strngfldqry1Field1: TStringField;
        strngfldqry1Field2: TStringField;
        strngfldqry1Field3: TStringField;
        strngfldqry1Field4: TStringField;    function  LoadExcel(AFileName: String): Boolean;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function TForm1.LoadExcel(AFileName: String): Boolean;
    var
      vExcel: Variant;
      i, RowCount: integer;
      instRecord: TInstructRecord;
      sMessage,sTemp: string;
    begin
       vExcel := CreateOleObject('Excel.Application'); //创建应用对象
       vExcel.WorkBooks.Open(AFileName);
       RowCount := vExcel.Worksheets[1].UsedRange.Rows.Count; //读行数
       qry1.DisableControls();
             for i := 2 to RowCount do
          begin
          instRecord.date := trim(vExcel.Worksheets[1].Cells[i, 1].Value);
          instRecord.name := trim(vExcel.Worksheets[1].Cells[i, 10].Value);
          instRecord.time := trim(vExcel.Worksheets[1].Cells[i, 11].Value);
          instRecord.pass := trim(vExcel.Worksheets[1].Cells[i, 19].Value);
          instRecord.prbl := trim(vExcel.Worksheets[1].Cells[i, 20].Value);
            end;
                begin            qry1.Open;
                qry1.Edit;
                qry1.FieldByName('date').AsString := instRecord.date;
                qry1.FieldByName('name').AsString := instRecord.name;
                qry1.FieldByName('time').AsString := instRecord.time;
                qry1.FieldByName('pass').AsString := instRecord.pass;
                qry1.FieldByName('prbl').AsString := instRecord.prbl;
                qry1.Open;
                end;
                qry1.EnableControls;
                vExcel.WorkBooks.Close;
                vExcel.Quit;
                vExcel := Unassigned;
           end;procedure TForm1.btn1Click(Sender: TObject);
    var
        sFileName:String;
    begin
    if Not dlgOpen1.Execute() then Exit;
      sFileName := dlgOpen1.FileName;
      LoadExcel(sFileName)
    end;end.