我正在努力将数据插入到TDataSourse链接到网格的TdxMemData中。 MemData -called PurchaseData-有3列:日期(日期),地点(字符串)和价值(货币)。 我有一个按钮,执行以下操作:
PurchaseData->Insert();
PurchaseData->FieldByName("Date")->Value = TDateTime::CurrentDate().DateString();
PurchaseData->FieldByName("Place")->Value = "";
PurchaseData->FieldByName("Value")->Value = 0.0f;
PurchaseData->Post();
单击一次,它会正常插入一行并且数据显示在网格的新行中,但是再次单击该按钮时,我会在Insert()上弹出一个“无法将类型的变体(Null)转换为type(String)“。
我担心列的属性“KeyFields”在其组合中显示除了其他3个字段之外的字段“RecId”。我不记得创建任何名为RecId的列,如果我这样做,我将其删除。我无法弄清楚它是什么,也找不到帮助。
答案 0 :(得分:0)
我现在不在一个地方进行测试,但将其改为可能会有效
PurPurchaseData-> FieldByName(“Place”) - > Value = String(“”);
如果这不起作用,那将与您设置列的方式相同。
答案 1 :(得分:0)
我已经映射了网格的事件OnSelectionChanged并读取了新选择的行中的数据。不幸的是,当调用PurchaseData-> Insert()时,会立即触发SelectionChanged事件。在新行的数据由下一行设置之前。我从数据读取中获得了Null,并使用它设置了一个编辑 - >文本,然后在弹出窗口中显示消息。