如何在Delphi中以编辑/插入模式打开表

如何在Delphi中以编辑/插入模式打开表,delphi,delphi-2010,Delphi,Delphi 2010,我尝试使用以下代码在Delphi中打开我的表: for I := 0 to Datamodule1.ComponentCount - 1 do if Datamodule1.Components[I] is TADOTable then Begin TADOTable(datamodule1.Components[i]).EDIT; End; 但当我想发布时,它会给我一个错误,即表未处于编辑或插入模式。我做错了什么?标准代码的一个示例如下: // open the tab

我尝试使用以下代码在Delphi中打开我的表:

for I := 0 to  Datamodule1.ComponentCount - 1 do
  if Datamodule1.Components[I] is TADOTable then
  Begin
    TADOTable(datamodule1.Components[i]).EDIT;
  End;

但当我想发布时,它会给我一个错误,即表未处于编辑或插入模式。我做错了什么?

标准代码的一个示例如下:

// open the table
ADOTable1.Open;  // Mode = dsBrowse
// Enter in Edit mode
ADOTable1.Edit;   //Mode = dsEdit
// Change field values
ADOTAble1.FieldByName('NOM').AsString := 'Lou';
...
// Try to save
try 
  ADOTable1.Post;
except
  // Capture the error
  // Show Message
  //...
end;
有关方法,请参见帮助:发布取消编辑,。。。属于TDataSet

将此示例代码改编为您的工作代码很简单


问候。

谢谢您的反馈。我设法解决了这个问题。在将表设置为编辑模式状态之前,首先检查状态,因为在调用此过程之前,我已经将表设置为编辑状态

for I := 0 to  Datamodule1.ComponentCount - 1 do
 if Datamodule1.Components[I] is TADOTable then
  Begin
     if not (TADOTable(datamodule1.Components[i]).State in [dsEdit]) then
       TADOTable(datamodule1.Components[i]).EDIT;
  End;

不能在编辑/插入模式下打开表。你打开桌子。当您想要编辑或插入时,可以调用edit或insert,设置字段内容,然后调用Post。如果您处于编辑/插入模式并滚动表格,它会自动发布任何更改并使表格退出编辑/插入模式。您应该找到一个Delphi数据库教程(如文档中的教程)来学习基础知识。我想在编辑模式下打开表以修改数据。在我编辑表单上的数据之后。我调用了一个类似的过程来发布数据。答案仍然是一样的。不能在插入/编辑模式下打开表。。再次阅读我之前的评论。我想你已经错过了@KenWhite所说的要点。“在编辑模式下”无法打开数据集。您必须首先打开表,将其置于浏览模式(DataSet.State=dsBrowse),然后调用DataSet.Edit将其置于编辑模式。完成编辑后,在调用DataSet.Close之前,应该调用DataSet.Post(它会停止更改并使其再次处于浏览模式),然后再调用DataSet.Close。您的表是否处于打开/活动状态?您的表是否已连接到TADOconnection且ADOConnection已连接?您似乎没有注意到一些人提出的在编辑表中的数据之前需要打开表的意见。你的“答案”至少应该说明你是如何解决这个问题的。我想在编辑状态下打开表。该表已打开以供浏览,我找到了要编辑的记录。我知道上面的答案,没有给我任何帮助。我想我把我的问题表达错了,因此没有得到我想要的答案。我还发现(在调试时)所讨论的表已经处于编辑状态,当我想再次将其置于编辑状态时,delphi感到困惑。因此,插入额外的“if not”命令解决了问题。