Delphi数据集未处于编辑或插入模式

时间:2017-10-28 14:33:49

标签: delphi

我试图搜索这个,但发现没有任何帮助我。我正在尝试在一个学校项目上工作,我需要在Access数据库中添加一条记录,但是我收到错误“数据集不在编辑或插入模式。

sName := ledName.Text;
sUName := ledUserName.Text;
sPass := ledPassword.Text;
sEmail := ledEmail.Text;
sCell := ledPhone.Text;

dmUsers.tblUsers.ReadOnly := False;

dmUsers.tblUsers.Open;
dmUsers.tblUsers.Insert;

dmUsers.tblUsers.Last;
dmUsers.tblUsers['UserName'] := sUName;
dmUsers.tblUsers['Password'] := sPass;
dmUsers.tblUsers['Email'] := sEmail;
dmUsers.tblUsers['Cell Number'] := sCell;
dmUsers.tblUsers['Actual Name'] := sName;
dmUsers.tblUsers['Balance'] := 0;
dmUsers.tblUsers['Points'] := 0;

dmUsers.tblUsers['Present'] := False;

dmUsers.tblUsers.Post;

我不知道我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您在数据集上调用可以更改活动记录的方法(例如FirstLastNextLocate),数据集将调用{{3} },如果修改后Post会更改;如果未修改则会Cancel更新。结果是数据集位于dsBrowse,导致它不接受编辑。

因此,请将您的代码更改为以下内容。我将使用CheckBrowseMode,因为您的Last调用表明您希望在数据集的末尾添加新记录。

sName := ledName.Text;
sUName := ledUserName.Text;
sPass := ledPassword.Text;
sEmail := ledEmail.Text;
sCell := ledPhone.Text;

dmUsers.tblUsers.ReadOnly := False;

dmUsers.tblUsers.Open;

dmUsers.tblUsers.Append;

dmUsers.tblUsers['UserName'] := sUName;
dmUsers.tblUsers['Password'] := sPass;
dmUsers.tblUsers['Email'] := sEmail;
dmUsers.tblUsers['Cell Number'] := sCell;
dmUsers.tblUsers['Actual Name'] := sName;
dmUsers.tblUsers['Balance'] := 0;
dmUsers.tblUsers['Points'] := 0;

dmUsers.tblUsers['Present'] := False;

dmUsers.tblUsers.Post;