0

TDataSourse によってグリッドにリンクされている TdxMemData にデータを挿入するのに苦労しています。PurchaseData と呼ばれる MemData には、Date (日付)、Place (文字列)、Value (通貨) の 3 つの列があります。次のことを行うボタンがあります。

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 に答える