【问题标题】:field num_med cannot be modified [closed]无法修改字段 num_med [关闭]
【发布时间】:2018-09-13 17:17:29
【问题描述】:

我已将此代码放在 speedbutonclick 中,但当我尝试执行它时,我收到消息说字段 num_med 无法修改 代码是

   procedure TAddEdiMedForm.SpeedButton1Click(Sender: TObject);
   begin
   DM.MedicamentTable.InsertRecord([ Edit1.Text, Edit2.Text, Edit3.text,
                                            Edit4.Text, Edit5.Text, Edit6.Text, 
   Edit7.Text]);
   CloseModal;                                              
   end;

【问题讨论】:

  • 您使用的是什么组件(DM.MedicamentTable)?
  • 我正在使用 TFDQUERY
  • 您的num_med 字段是什么字段类型,在 FDQuery 和它后面的 RDMS 中,在这两种情况下都标记为只读吗?
  • 字段类型为int
  • 我不确定“当然”你没有为任何人提供足够的信息来诊断你的问题。所以我投票关闭它,到目前为止还有其他 2 人。如果它获得 5 票接近,即使他们知道问题所在,也没有人能够发布答案。

标签: delphi


【解决方案1】:

问题是尝试为 AutoInc 字段插入一个值,而您正尝试使用 InsertRecord 语句执行此操作。插入新行后,您需要(从服务器)检索 AutoInc 值,而不是尝试从客户端强制一个值!

由于在添加新行时无法为 AutoInc 字段指定值,因此需要避免使用 InsertRecord。相反,在数据集上调用 Insert,通过单独的赋值语句填充其他(非 AutoInc)字段,然后调用 Post。检索 AutoInc 值的最佳方式取决于后端服务器,尽管 FireDAC 通常会为您完成这项工作 - 查找如何从在线帮助或谷歌中获取该值。

您应该提到 Num_med 字段是您的 q 中的 AutoInc,而不是在回复您应该首先提供的信息的查询的评论中轻率地说它是 Int 字段。将来,请在您的初始 q 中包含所有相关信息,为读者考虑一下。

【讨论】:

    猜你喜欢
    • 2023-02-05
    • 1970-01-01
    • 2013-06-22
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多