Delphi7+ADOTable+Access2000
在ADOTable的AfterScroll事件中给Edit控件赋值,希望可以在Edit控件中显示当前记录,但是在添加记录时却出错:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EOleException with message '字段 '表2.学号' 不能是零长度的字符串。'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------
该表只有三个字段,学号(文本类型)、姓名(文本类型)、备注(备注类型),其中学号为主键。
如何解决,是否有其他办法,实现这个简单功能?

解决方案 »

  1.   

    ADoTable.AfterScroll := nil;
    ADoTable.Insert;
    ADoTable.AfterScroll := ADOTableAfterScroll;
    SetDate;
    Post;
      

  2.   

    没有明白,我初学Delphi,不是很熟
      

  3.   

    procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
    begin
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOTable1.Append;
      ADOTable1.FieldByName('学号').AsString:=Edit1.Text;
      ADOTable1.FieldByName('姓名').AsString:=Edit2.Text;
      ADOTable1.FieldByName('备注').AsString:=Memo1.Text;
      ADOTable1.Post;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
    procedure TForm1.ADOTable1AfterPost(DataSet: TDataSet);
    begin
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
      

  4.   

    请试一下这个看行不行。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOTABLE1。DISENABLE;
      ADOTable1.Append;
      ADOTable1.FieldByName('学号').AsString:=Edit1.Text;
      ADOTable1.FieldByName('姓名').AsString:=Edit2.Text;
      ADOTable1.FieldByName('备注').AsString:=Memo1.Text;
      ADOTable1.Post;
      ADDTABLE1。ENABLE;{应该有一对这样属性我记不清,我在网吧上网,不能在机上操作一 下。错了不要见怪}
    end;
      

  5.   

    procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
    begin
     
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ADOTable1.Append;
      ADOTable1.FieldByName('学号').AsString:=Edit1.Text;//确定Edit1/Edit2/Memo1都不为空
      ADOTable1.FieldByName('姓名').AsString:=Edit2.Text;
      ADOTable1.FieldByName('备注').AsString:=Memo1.Text;
      ADOTable1.Post;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
    procedure TForm1.ADOTable1AfterPost(DataSet: TDataSet);
    begin
      Edit1.Text:=ADOTable1.FieldByName('学号').AsString;
      Edit2.Text:=ADOTable1.FieldByName('姓名').AsString;
      Memo1.Text:=ADOTable1.FieldByName('备注').asString;
    end;
    ----------------
    沉沦中..........
      

  6.   

    多谢二位,clh1981(玉猫) 你说的做法不可以,因为是无法在关闭的DataSet上操作的,以下是出错提示:
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project Project1.exe raised exception class EDatabaseError with message 'ADOTable1: Cannot perform this operation on a closed dataset'. Process stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help   只是在加入处理ADOTable1AfterScroll之后,才出问题的。---------------------------
      

  7.   

    你的问题不是SQL查询语句的问题。请用ACCESS
    打开你的MDB文件。进入设计视图
    将表2的学号字段
    下面的属性“是否允许为空字符串”改成“是”。希望能解决你的问题。
    一般来说,如果是ACCESS的数据库,
    那么文本型字段的这一项一般设为“是”,否则容易异常。
      

  8.   

    没辙,把"是否允许变字符串"改为"是"还是不行,还是这样的提示:
    ---------------------------
    Debugger Exception Notification
    ---------------------------
    Project Project1.exe raised exception class EOleException with message '字段 '表2.学号' 不能是零长度的字符串。'. Process stopped. Use Step or Run to continue.
    ---------------------------
    OK   Help   
    ---------------------------
    实在不行,我就添加和浏览数据分开,烦