0

我正在努力将数据插入到通过 TDataSourse 链接到网格的 TdxMemData 中。MemData - 称为 PurchaseData- 有 3 列:Date(日期)、Place(字符串)和 Value(货币)。我有一个执行以下操作的按钮:

PurchaseData->Insert();
PurchaseData->FieldByName("Date")->Value = TDateTime::CurrentDate().DateString();
PurchaseData->FieldByName("Place")->Value = "";
PurchaseData->FieldByName("Value")->Value = 0.0f;
PurchaseData->Post();

单击一次,它会正常插入一行,数据出现在网格的新行中,但是当再次单击按钮时,我在 Insert() 上弹出一个窗口,说“无法将类型的变体 (Null) 转换为类型 (String )”。

我担心列的属性“KeyFields”在其组合中显示除其他 3 个字段之外的字段“RecId”。我不记得创建任何名为 RecId 的列,如果我这样做了,我将其删除。我不知道它是什么,也找不到帮助。

4

2 回答 2

0

我现在不在一个地方测试这个,但把它改成这个可能会奏效

PurPurchaseData->FieldByName("Place")->Value = String("");

如果这对您不起作用,那将是您设置列的方式。

于 2010-01-19T15:43:25.713 回答
0

我已经映射了网格的事件 OnSelectionChanged 并读取了新选择的行中的数据。不幸的是,当调用 PurchaseData->Insert() 时,会立即触发 SelectionChanged 事件。在下一行设置新行的数据之前。我从读取的数据中得到了 Null 并用它做了坏事,比如用它设置一个编辑->文本,因此弹出窗口中的消息。

于 2010-01-19T19:31:47.513 回答