1
테이블에서 데이터를 읽고 데이터를 cxGrid의 열에 복사 한 다음이 데이터를 데이터베이스로 직접 업데이트하려고합니다. 가능합니까?델파이, 컬럼 값을 설정하고 데이터베이스를 업데이트하는 cxGrid
내가 setEditValue를 사용하여 시도했지만 하나는 유형의 매개 변수가 필요합니다
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;
합니다. – nil
당신은 정말로 나를 깨운다! 위의 코드를 어떻게 변경했는지 보여주기 위해 위 코드를 변경했습니다. 단순하고 그리드에 데이터를 추가 할 필요가 없었습니다. 감사! – larand
환영합니다. 그건 그렇고, 이제 질문은 더 이상 의심스럽지 않게 바뀌 었습니다. 이 변경 사항을 질문으로 되돌려 놓는 것이 낫습니다. 어떻게 해결했는지 자신의 답변을 게시하는 것은 절대적으로 좋습니다. – nil