【问题标题】:Delphi Error Dataset not in Insert or Edit ModeDelphi 错误数据集不在插入或编辑模式下
【发布时间】:2013-06-23 04:07:28
【问题描述】:

目标:

  1. 点击TRxDBCombo上的按钮调用搜索框
  2. 在从搜索框中选择记录时,结果将设置为 TComboEditBox 的字段值并发布在 TRxMemoryData 数据集中

错误:

第二次调用此函数时出现不在插入或编辑模式的数据集

TDBEditBox1.SetFocus;
Form_Search:= TForm_Search.Create(Application);
with Form_Search do
  Begin
    showmodal;
    //Get Result from Database
    if trim(TempResult) <> '' then
      Begin
        TDBEditBox1.Field.Value := MResult;
      End;
  End;

设置包括:

  1. 数据源连接到 TDataSource 的 TJvDBGrid
  2. TDataSource 连接到 TRxMemoryData
  3. 一个 TRxDBComboEdit,其数据源在上述步骤 2 中设置为 TDataSource

请帮忙

【问题讨论】:

  • 我不确定这里的问题是什么。 (您的控件可能命名为DBEditBox1 而不是TBEditBox1,顺便说一句。)显而易见的解决方案是将数据集(附在DBEditBox1.Field 上的表格)置于InsertEdit 模式,然后再尝试分配字段的值。
  • 抱歉,但不是那么明显...如果您在表单上将数据组件与 Grid 或 DBNavigator 结合使用,您可能会在不知情的情况下退出编辑或插入模式,直到您得到一个错误消息。

标签: delphi delphi-7


【解决方案1】:

由于以下行而出现错误: TDBEditBox1.Field.Value := MResult; 在这一行,您的数据集未处于插入或编辑模式。您可以添加以下检查以避免此错误:

if not (TDBEditBox1.DataSource.DataSet.State in [dsEdit, dsInsert]) then
begin
  TDBEditBox1.DataSource.DataSet.Edit;
  // Or TDBEditBox1. DataSource.DataSet.Insert; depending on the operation you are doing (Edit or Insert) 
end;
TDBEditBox1.Field.Value := MResult;

【讨论】:

    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多