我在Uses 中加了db, 但
    With datat.Table4 do
      if not active then open;
      namea:=fieldbyname('name').asstring;
      begin
      ...
然后就报错:Undelclared identifier:'fiedlbyname'?
如果用namea:=datat.table4.fieldbyname('name').asstring;就好了,
是with语句有问题吗?
在线等待!!!
谢谢!!!程序如下:
uses  ... db,...Dialogs,
  Buttons, ExtCtrls, StdCtrls, ComCtrls, Mask, DBCtrls,db, Grids, DBGrids,
  RXDBCtrl, GDBGrid, Animate, GIFCtrl, DBTables, DBGridEh;procedure TRecForm.SpeedButton1Click(Sender: TObject);
var i:integer;
    noo:string;
    boo:Tbook;
begin
    if not DataT.Table4.Active then
        DataT.Table4.Open;
    if DataT.Table4.RecordCount = 0 then noo:='0';
    if DataT.Table4.RecordCount > 0 then
        Begin
            boo:= DataT.Table4.GetBook;
            DataT.Table4.Close;
            DataT.Table4.Open;
            DataT.Table4.Last;
            noo:=DataT.Table4.fieldbyname('EmpId').AsString;
            DataT.Table4.GotoBook(boo);
            DataT.Table4.FreeBook(boo);
        End;
    noo:=FloatToStr(StrToInt(noo)+1);
    For i:=1 to 5-Length(noo) do
    begin
            noo:='0'+noo;
    end;
    application.CreateForm(Taddform,addform);
    if AddForm.ShowModal=mrOk then
    begin
       if not DataT.Table4.Active then
          DataT.Table4.Open;
        case AddForm.RadioGroup1.ItemIndex of
        0:  begin
                DataT.Table4.Edit;
                DataT.Table4.insert;
            end;
        1:  begin
                DataT.Table4.Next;
                DataT.Table4.Edit;
                DataT.Table4.Insert;
            end;
        2:  begin
                DataT.Table4.Last;
                DataT.Table4.Edit;
                DataT.Table4.Append;
            end;
        end;
    end;
    Dbedit1.SetFocus;
    Dbedit1.Text:=noo;
    RecForm.Caption:='记录管理  记录数为:'+IntToStr(DataT.Table4.RecordCount)+'人';
    AddForm.Release;
end;procedure TRecForm.SpeedButton3Click(Sender: TObject);
begin
try
  try
    with DataT.Table4 do
    begin
      if not active then open;
      edit;
      Post;
    end;
  except
    Application.MessageBox('数据发生错误!!!请运行<维护>---><数据清理>菜单项!!!','提示框',mb_ok+mb_iconstop);
    abort;
  end;
Finally
  Application.MessageBox('数据成功保存!!!','提示框',mb_ok+mb_iconinformation);
End;
end;procedure TRecForm.SpeedButton2Click(Sender: TObject);
Var
 namea:String;
  noo:string;
begin
  application.CreateForm(TDelRecForm,DelRecForm);
  If DelRecForm.ShowModal=MrOk then
  begin    With datat.Table4 do
      if not active then open;
      noo:=DataT.Table4.fieldbyname('EmpId').AsString;
      namea:=datat.Table4.fieldbyname('name').asstring;
      begin
        Case DelRecForm.RadioGroup1.ItemIndex of
            0:
            begin
               datat.Table4.Edit;
               if messagedlg('你确定这条纪录-->'+#13+#10+'姓名:  '+namea+#13+#10+'退休吗?定以为退休后此人不再参与每月数据计算',mtconfirmation,
               [mbyes,mbno],0)=mryes then FieldByName('ManFlag').AsString:='退休';
               post;
            end;
             1:
            begin
               edit;
               if messagedlg('你确定这条纪录-->'+#13+#10+'姓名:  '+namea+#13+#10+'定以为停薪吗?定义为停薪后此人各项数据清零',mtconfirmation,
               [mbyes,mbno],0)=mryes then FieldByName('ManFlag').AsString:='停薪';
               post;
            end;
             2:
            begin
               edit;
               if messagedlg('你确定这条纪录-->'+#13+#10+'姓名:  '+namea+#13+#10+'定义为调出吗?,定以为调出后此人各项数仍存在,为以后计算台帐做基数.',mtconfirmation,
               [mbyes,mbno],0)=mryes then FieldByName('ManFlag').AsString:='调出';
               post;
            end;
             3:
            begin
               edit;
               if messagedlg('你确定这条纪录-->'+#13+#10+'姓名:  '+namea+#13+#10+'定以为其他吗?',mtconfirmation,
               [mbyes,mbno],0)=mryes then FieldByName('ManFlag').AsString:='其他';
               post;
            end;
             4:
            begin
               if messagedlg('你确定这条纪录-->'+#13+#10+'姓名:  '+namea+#13+#10+'彻底删除吗?,删除后此记录将不可能恢复,台帐数也没有.',mtconfirmation,
               [mbyes,mbno],0)=mryes then
               begin
                 delete;
                 datat.Table4.Close;
                 datat.table4.Open;
                 //packtable(datat.table4);
                 datat.Table4.Close;
                 datat.table4.Open;
                end;
            end;
      end;
  end;
  end;
end;
end.

解决方案 »

  1.   

    With datat.Table4 do      begin   //需要加
          
    if not active then open;
          namea:=fieldbyname('name').asstring;
    .....
        end;//需要加
      

  2.   

    不是吧
    没有问题啊
    是不是你把fieldbyname写错了(Undelclared identifier:'fiedlbyname');
      

  3.   

    同意楼上,是单词拼写错误
    fiedlbyname --》fieldbyname
      

  4.   

    没有仔细看
        With datat.Table4 do
          if not active then open;
          namea:=fieldbyname('name').asstring;with table4..
      这句只对下面第一句有效,即 if not active then open;
      对以后的语句就在这个WITH块范围之外了
      应该用BEGIN。。END包括起来