unit uDevConfig; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, Grids, BaseGrid, AdvGrid, AdvUtil, AdvObj, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client; type TfrmDevConfig = class(TForm) Label1: TLabel; cb_nilm: TComboBox; Label2: TLabel; AdvStringGrid1: TAdvStringGrid; Button1: TButton; Button2: TButton; Button3: TButton; Label3: TLabel; cb_nilmCh: TComboBox; Label4: TLabel; edt_devName: TEdit; edt_devID: TEdit; Edt_idxNo: TEdit; Label5: TLabel; FDQuery1: TFDQuery; Button4: TButton; Label6: TLabel; edt_range: TEdit; procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); procedure AdvStringGrid1ClickCell(Sender: TObject; ARow, ACol: Integer); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } select_devID : integer; function CheckDev(DevIdx : integer) : Boolean; public { Public declarations } procedure ShowDev(); end; var frmDevConfig: TfrmDevConfig; implementation uses uMain; {$R *.dfm} procedure TfrmDevConfig.ShowDev(); var idxNo, i, nilmid, nilmCh, range : integer; devID, devName, S : string; begin try if not frmMain.FDConnection1.Connected then frmMain.FDConnection1.Connected := True; if frmMain.FDConnection1.Connected then begin FDQuery1.Close; FDQuery1.SQL.Clear; FDQuery1.SQL.Text := 'SELECT * FROM "dev_info" ORDER BY "idxNo" '; FDQuery1.Open; if FDQuery1.RecordCount> 0 then begin FDQuery1.First; i := 0; AdvStringGrid1.RowCount := FDQuery1.RecordCount + 1; While not FDQuery1.Eof do begin Inc(i, 1); idxNo := FDQuery1.FieldByName('idxNo').asInteger; devID := FDQuery1.FieldByName('devID').asString; nilmid := FDQuery1.FieldByName('nilm_id').asInteger; nilmCh := FDQuery1.FieldByName('nilm_chNo').asInteger; devName := FDQuery1.FieldByName('devName').asString; range := FDQuery1.FieldByName('range').asInteger; AdvStringGrid1.Cells[0, i] := inttostr(idxNo); AdvStringGrid1.Cells[1, i] := devID; AdvStringGrid1.Cells[2, i] := devName; AdvStringGrid1.Cells[3, i] := inttostr(nilmid); AdvStringGrid1.Cells[4, i] := inttostr(nilmCh); AdvStringGrid1.Cells[5, i] := FDQuery1.FieldByName('dev_status').asString; AdvStringGrid1.Cells[6, i] := FDQuery1.FieldByName('lastUpdate').asString; AdvStringGrid1.Cells[7, i] := inttostr(range); FDQuery1.Next; end; end; end; except on e : exception do begin frmMain.printlog('Database Connect Error :: '+e.Message, 'DB'); end; end; end; procedure TfrmDevConfig.FormShow(Sender: TObject); begin ShowDev(); end; procedure TfrmDevConfig.Button1Click(Sender: TObject); var sql, devID, nilmID, nilmCh, S : string; begin sql := ''; S := ''; S := cb_nilm.Text; nilmID := Copy(S, 1, Pos(':',S)-1); nilmCh := cb_nilmCh.Text; devID := edt_devID.Text; sql := 'INSERT INTO "dev_info" VALUES(DEFAULT, '+ ''''+devID+''', '+ ''+nilmID+', '+ ''+nilmCh+', '+ ''+edt_devName.Text+', '+ ''+edt_range.Text+''+ ')'; frmMain.insertSQL(sql); ShowDev(); end; procedure TfrmDevConfig.Button2Click(Sender: TObject); var sql : string; begin if (not CheckDev(StrToInt(edt_devID.Text))) and (select_devID>0) then begin sql := ''; { sql := 'INSERT INTO "dev_info" VALUES(DEFAULT, '+ ''''+devID+''', '+ ''+nilmID+', '+ ''+nilmCh+', '+ ''''+edt_devName.Text+''' '+ ')'; idxNo := FDQuery1.FieldByName('idxNo').asInteger; devID := FDQuery1.FieldByName('devID').asString; nilmid := FDQuery1.FieldByName('nilm_id').asInteger; nilmCh := FDQuery1.FieldByName('nilm_chNo').asInteger; devName := FDQuery1.FieldByName('devName').asString; } frmMain.insertSQL(sql); sql := 'UPDATE "dev_info" SET '+ '"devID"='+edt_devID.Text+', '+ '"nilm_id"='+Copy(cb_nilm.Text, 1, Pos(':',cb_nilm.Text)-1)+', '+ '"nilm_chNo"='''+cb_nilmCh.Text+''', '+ '"devName"='''+edt_devName.Text+''', '+ '"range"='''+edt_range.Text+''' '+ ' WHERE "idxNo"='+inttostr(select_devID); frmMain.insertSQL(sql); ShowDev(); select_devID := 0; end else begin ShowMessage('Dev ID¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù.'); end; end; function TfrmDevConfig.CheckDev(DevIdx: Integer): Boolean; begin result := true; try if not frmMain.FDConnection1.Connected then frmMain.FDConnection1.Connected := True; if frmMain.FDConnection1.Connected then begin FDQuery1.Close; FDQuery1.SQL.Clear; FDQuery1.SQL.Text := 'SELECT * FROM "dev_info" WHERE "idxNo"='+inttostr(DevIdx); FDQuery1.Open; if FDQuery1.RecordCount> 0 then begin result := false; end; end; except on e : exception do begin frmMain.printlog('Database Connect Error :: '+e.Message, 'DB'); end; end; end; procedure TfrmDevConfig.Button3Click(Sender: TObject); var sql : string; begin if not CheckDev(StrToInt(Edt_idxNo.Text)) then begin sql := ''; sql := 'DELETE FROM "dev_info" WHERE "idxNo"='+Edt_idxNo.Text; frmMain.insertSQL(sql); ShowDev(); Edt_idxNo.Text := '0'; end else begin ShowMessage('Idx No¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù.'); end; end; procedure TfrmDevConfig.Button4Click(Sender: TObject); begin ShowDev(); end; procedure TfrmDevConfig.AdvStringGrid1ClickCell(Sender: TObject; ARow, ACol: Integer); var nilmID : integer; begin if ARow > 0 then begin select_devID := StrToIntDef(AdvStringGrid1.Cells[0, ARow], 0); Edt_idxNo.Text := AdvStringGrid1.Cells[0, ARow]; edt_DevID.Text := AdvStringGrid1.Cells[1, ARow]; edt_devName.Text := AdvStringGrid1.Cells[2, ARow]; edt_range.Text := AdvStringGrid1.Cells[7, ARow]; nilmID := StrToIntDef( AdvStringGrid1.Cells[3, ARow], 0); if nilmID > 0 then begin if frmMain.fNILM[nilmID].idxNo>0 then begin cb_nilm.Text := format('%d:%s',[nilmID, frmMain.fNILM[nilmID]._NAME]); end; end; cb_nilmCh.Text := AdvStringGrid1.Cells[4, ARow]; //AdvStringGrid1.Cells[5, ARow] := ''; //AdvStringGrid1.Cells[6, ARow] := ''; //AdvStringGrid1.Cells[7, ARow] := ''; end; end; end.