1
テーブルからデータを読み込み、cxGridの列にデータをコピーした後、これを直接データベースに更新したいと思います。 可能ですか?Delphi、cxGrid列の値を設定してデータベースを更新する
私はsetEditValueを使用してみましたが、その1つの型のパラメータを必要とします。
TcxDataEditValueSource = (evsValue, evsText, evsKey);
そして、私は」このタイプを見つけることができます。 DeveloperExpressのいくつかの例では、1に設定されていますが、動作しません。間違った型はコンパイラです。
これはデータをグリッドにするために使用したコードですが、データセットを更新できるようにすることはできますか?
var
RecIDx,
ColIdx,
sorNo,
RecID,
i: integer;
AB,
AT: double;
begin
try
// Get marked row and column
RecIDx := grGeneralInfoMallDBTableView1.Controller.SelectedRecords[0]
.RecordIndex;
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('ID').Index;
// Get SortingOrderNo
sorNo := grGeneralInfoMallDBTableView1.DataController.Values
[RecIDx, ColIdx];
// Get AB and AT from SortingOrderRow with highest priority (lowest number)
dmsSortOrder.sq_Get_AB_AT.Active := false;
dmsSortOrder.sq_Get_AB_AT.ParamByName('sorNo').AsInteger := sorNo;
dmsSortOrder.sq_Get_AB_AT.Active := true;
dmsSortOrder.sq_Get_AB_AT.First;
if dmsSortOrder.sq_Get_AB_AT.EOF then
begin
showMessage('ERROR! Could not find record for sortorder: ' +
intToStr(sorNo));
exit;
end;
// Copy AT and BT to the grid.
AT := dmsSortOrder.sq_Get_AB_AT.FieldByName('AT').AsFloat;
AB := dmsSortOrder.sq_Get_AB_AT.FieldByName('AB').AsFloat;
// Set the cell value
grGeneralInfoMallDBTableView1.DataController.DataSource.DataSet.Edit;
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('AT').Index;
grGeneralInfoMallDBTableView1.DataController.SetValue(RecIDx,ColIdx, AT);
ColIdx := grGeneralInfoMallDBTableView1.DataController.GetItemByFieldName
('AB').Index;
grGeneralInfoMallDBTableView1.DataController.SetValue(RecIDx,ColIdx, AB);
grGeneralInfoMallDBTableView1.DataController.DataSource.DataSet.Post;
finally
end;
end;
あなたのGridViewをデータバインドされている場合は、単に基礎となる 'TDataSet'のフィールドを更新することができるはずです。 – nil
あなたは本当に私を起こす!上記のコードを変更して、私がどのようにしたかを示しました。シンプルで、グリッドにデータを追加する必要はありませんでした。ありがとう! – larand
ようこそ。ちなみに、あなたは今質問をもう間違いなく変更しました。この変更を質問に戻す方が良いでしょう。解決した方法で自分の答えを投稿することは絶対に賢明です。 – nil