델파이코딩_개발일지

오라클 언바운드 모드로 쿼리 조회 / 추가 / 삭제 / 저장 하기

천재메기 2023. 2. 13. 17:42

 

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  i_row : integer;

begin
//
  with view1.DataController do
  begin
    recordCount := 0;

    with OraQuery1 do
    begin
      close;
      SQL.Clear;
      SQL.Add('SELECT * FROM TEST');
      open;


      first;
      while not eof do
      begin
        i_row := view1.DataController.appendrecord;
        values[i_row,0] := FieldByName('dep_id').AsString;
        values[i_row,1] := FieldByName('emp_id').AsString;
        values[i_row,2] := FieldByName('emp_name').AsString;
        values[i_row,3] := FieldByName('emp_tel').AsString;
        next;

      end;
    end;
  end;
end;

procedure TForm3.Button2Click(Sender: TObject);
begin
  view1.DataController.AppendRecord;
end;

procedure TForm3.Button3Click(Sender: TObject);
var
  num : integer;

begin
  num := view1.DataController.FocusedRecordIndex;
  with OraQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('DELETE FROM TEST');
    SQL.Add('WHERE EMP_ID = :EMP_ID');
    ParamByName('EMP_ID').AsString := view1.DataController.Values[num, 1];
    ExecSQL;
  end;

  Button1Click(nil);

//  ShowMessage(IntToStr(num));
//ShowMessage(view1.DataController.Values[num, 1]);
end;

procedure TForm3.Button4Click(Sender: TObject);
var
  iRow : Integer;
begin
  for iRow := 0 to view1.DataController.RecordCount-1 do
  begin
    with Oraquery1 do
    begin
      close;
      SQL.Clear;
      SQL.Add('SELECT * FROM TEST');
      SQL.Add('WHERE EMP_ID = :EMP_ID');
      ParamByName('EMP_ID').AsString := VIEW1.DataController.Values[IROW,1];
      open;

      if eof then
      begin
        close;
        SQL.Clear;
        SQL.Add('INSERT INTO TEST(DEP_ID, EMP_ID, EMP_NAME, EMP_TEL)');
        SQL.ADD('          VALUES(:DEP_ID, :EMP_ID, :EMP_NAME, :EMP_TEL)');
        ParamByName('DEP_ID').AsString := VIEW1.DataController.Values[IROW,0];
        ParamByName('EMP_ID').AsString := VIEW1.DataController.Values[IROW,1];
        ParamByName('EMP_NAME').AsString := VIEW1.DataController.Values[IROW,2];
        ParamByName('EMP_TEL').AsString :=  VIEW1.DataController.Values[IROW,3];
        EXECSQL;

      end
      else
      begin
        close;
        SQL.Clear;
        SQL.Add('UPDATE TEST SET EMP_NAME = :EMP_NAME, EMP_TEL = :EMP_TEL');
        SQL.Add('WHERE EMP_ID = :EMP_ID');
        ParamByName('EMP_ID').AsString := VIEW1.DataController.Values[IROW,1];
        ParamByName('EMP_NAME').AsString := VIEW1.DataController.Values[IROW,2];
        ParamByName('EMP_TEL').AsString := VIEW1.DataController.Values[IROW,3];
        EXECSQL;
      end;
    end;
  end;
end;

end.