개발

[DELPHI] DEVEXPRESS UNBOUND 모드(DB 프로시저 이용) 연결

천민 2018. 9. 11. 10:41

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;