[DELPHI] DEVEXPRESS UNBOUND 모드(DB 프로시저 이용) 연결
DATABASE에 저장프로시저 등록. 프로시저를 이용해 언바운드 모드로 DB값 조회.
1. 조회버튼시.
procedure TForm1.Button1Click(Sender: TObject);
var
iFieldCnt : Integer;
I: Integer;
fItems : TcxCustomGridTableItem;
iRecCnt : Integer;
sp : TUniStoredProc;
test : TUniParam;
begin
sp := TUniStoredProc.Create(nil);
sp.Connection := UniConnection1;
sp.StoredProcName := '프로시저 이름';
sp.PrepareSQL;
sp.ParamByName('프로시저 입력 컬럼명').AsString := 'D01';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := cxTextEdit1.Text;
sp.ParamByName('프로시저 입력 컬럼명').AsString := cxTextEdit2.Text;
...................
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.ParamByName('프로시저 입력 컬럼명').AsString := '';
sp.Open;
Try
cxGrid1TableView1.BeginUpdate;
cxGrid1TableView1.ClearItems;
iFieldCnt := sp.FieldCount;
for I := 0 to iFieldCnt - 1 do
begin
fItems := cxGrid1TableView1.CreateItem;
fItems.Name := cxGrid1TableView1.Name + sp.Fields[i].FieldName;
if sp.Fields[i].DataType in [ftGraphic, ftBlob, ftTypedBinary ] Then
begin
fItems.PropertiesClass := TcxImageProperties;
TcxImageProperties( fItems.Properties ).GraphicClass := TBitmap;
end;
fItems.Caption := sp.Fields[i].FieldName;
end;
With sp do
begin
First;
while not Eof do
begin
Inc( iRecCnt );
cxGrid1TableView1.DataController.RecordCount := iRecCnt;
for I := 0 to iFieldCnt - 1 do
cxGrid1TableView1.DataController.Values[ iRecCnt - 1 , i ] := Fields[i].Value;
Next;
end;
end;
Finally
cxGrid1TableView1.EndUpdate;
End;
cxTextEdit4.Text := cxGrid1TableView1.DataController.RecordCount.ToString;
end;
2. 추가버튼.(마지막줄에 한줄 추가)
procedure TForm1.Button2Click(Sender: TObject);
begin
cxGrid1TableView1.DataController.InsertRecord(cxGrid1TableView1.DataController.RecordCount);
end;
3. 레코드 이동시 이벤트.
procedure TForm1.cxGrid1TableView1FocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
cxTextEdit3.Text := cxGrid1TableView1.DataController.FocusedRowIndex.ToString;
end;