SmartFactory_NEOL/SOURCE/Agent,Kiosk/NILM_Viewer_D104_PostgreSQL/uConfigNILM.pas
2026-09-04 14:08:41 +09:00

260 lines
6.5 KiB
ObjectPascal
Raw Permalink Blame History

unit uConfigNILM;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, Grids, BaseGrid, AdvGrid,
ExtCtrls, StdCtrls, AdvUtil, AdvObj;
type
TfrmNILM = class(TForm)
AdvStringGrid1: TAdvStringGrid;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
btnAdd: TButton;
btnEdit: TButton;
btnDelete: TButton;
ComboBox1: TComboBox;
Edit2: TEdit;
Edit7: TEdit;
procedure FormShow(Sender: TObject);
procedure AdvStringGrid1ClickCell(Sender: TObject; ARow,
ACol: Integer);
procedure btnAddClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
private
{ Private declarations }
select_nilm_idxNo : integer;
procedure CreateTableNilmValueLog(nilm_idxno : integer);
procedure DropTableNilmValueLog(nilm_idxno : integer);
function CheckNILM(nilmID : integer) : Boolean;
function Get_NILM_idxNo(nilmID : integer) : integer;
public
{ Public declarations }
procedure ShowNILM();
end;
var
frmNILM: TfrmNILM;
implementation
uses uMain, uDevConfig;
{$R *.dfm}
procedure TfrmNILM.DropTableNilmValueLog(nilm_idxno : integer);
var
sql : string;
begin
sql := '';
sql := 'DROP TABLE IF EXISTS nilm_'+format('%.5d',[nilm_idxno]);
frmMain.insertSQL(sql);
end;
procedure TfrmNILM.CreateTableNilmValueLog(nilm_idxno : integer);
var
sql : string;
begin
sql := '';
sql := 'CREATE TABLE IF NOT EXISTS nilm_'+format('%.5d',[nilm_idxno])+' ('+
'aNo int(11) NOT NULL AUTO_INCREMENT,'+
'NilmID int(11) DEFAULT NULL,'+
'pf_1 float DEFAULT NULL,'+
'CorrectFactor_1 float DEFAULT NULL,'+
'Vrms_1 float DEFAULT NULL,'+
'Irms_1 float DEFAULT NULL,'+
'Var_1 float DEFAULT NULL,'+
'Va_1 float DEFAULT NULL,'+
'Pwr_1 float DEFAULT NULL,'+
'pf_2 float DEFAULT NULL,'+
'CorrectFactor_2 float DEFAULT NULL,'+
'Vrms_2 float DEFAULT NULL,'+
'Irms_2 float DEFAULT NULL,'+
'Var_2 float DEFAULT NULL,'+
'Va_2 float DEFAULT NULL,'+
'Pwr_2 float DEFAULT NULL,'+
'pf_3 float DEFAULT NULL,'+
'CorrectFactor_3 float DEFAULT NULL,'+
'Vrms_3 float DEFAULT NULL,'+
'Irms_3 float DEFAULT NULL,'+
'Var_3 float DEFAULT NULL,'+
'Va_3 float DEFAULT NULL,'+
'Pwr_3 float DEFAULT NULL,'+
'gX float DEFAULT NULL,'+
'gY float DEFAULT NULL,'+
'gZ float DEFAULT NULL,'+
'aX float DEFAULT NULL,'+
'aY float DEFAULT NULL,'+
'aZ float DEFAULT NULL,'+
'TempC float DEFAULT NULL,'+
'lastUpdate datetime DEFAULT NULL,'+
'UNIQUE KEY aNo (aNo)'+
') ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci';
frmMain.insertSQL(sql);
end;
procedure TfrmNILM.ShowNILM();
var
i, idxNo, nilmID, nilmType : integer;
nilmName, S : string;
srcAddr, srcMac, dstAddr, topic : string;
dstPort : integer;
begin
select_nilm_idxNo := 0;
try
except
on e : exception do
begin
frmMain.printlog('Database Connect Error :: '+e.Message + ' [DB]');
end;
end;
end;
function TfrmNILM.CheckNILM(nilmID : integer) : Boolean;
begin
result := true;
end;
function TfrmNILM.Get_NILM_idxNo(nilmID : integer) : integer;
begin
end;
procedure TfrmNILM.FormShow(Sender: TObject);
begin
ShowNILM();
end;
procedure TfrmNILM.AdvStringGrid1ClickCell(Sender: TObject; ARow,
ACol: Integer);
var
nilmType : integer;
begin
if ARow > 0 then
begin
select_nilm_idxNo := StrToIntDef(AdvStringGrid1.Cells[0, ARow], 0);
Edit2.Text := IntToStr(StrToIntDef(AdvStringGrid1.Cells[1, ARow], 0));
Edit1.Text := AdvStringGrid1.Cells[2, ARow];
nilmType := StrToIntDef(AdvStringGrid1.Cells[3, ARow], 0);
ComboBox1.ItemIndex := nilmType;
Edit3.Text := AdvStringGrid1.Cells[4, ARow];
Edit4.Text := AdvStringGrid1.Cells[5, ARow];
Edit5.Text := AdvStringGrid1.Cells[6, ARow];
Edit7.Text := IntToStr(StrToIntDef(AdvStringGrid1.Cells[7, ARow], 0));
Edit6.Text := AdvStringGrid1.Cells[8, ARow];
end;
end;
procedure TfrmNILM.btnAddClick(Sender: TObject);
var
sql : string;
nilm_idxno : integer;
begin
if CheckNILM(StrToInt(Edit2.Text)) then
begin
sql := '';
sql := 'INSERT INTO nilm_info VALUES(null, '+
''+Edit2.Text+', '+
''+inttostr(ComboBox1.ItemIndex)+', '+
''''+Edit1.Text+''', '+
''''+Edit3.Text+''', '+
''''+Edit4.Text+''', '+
''''+Edit5.Text+''', '+
''+Edit7.Text+', '+
''''+Edit6.Text+''' '+
')';
frmMain.insertSQL(sql);
sql := '';
sql := 'INSERT INTO nilm_value VALUES('+
''+Edit2.Text+',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,now() '+
')';
frmMain.insertSQL(sql);
nilm_idxno := Get_NILM_idxNo(StrToInt(Edit2.Text));
if nilm_idxno > 0 then CreateTableNilmValueLog(nilm_idxno);
ShowNILM();
select_nilm_idxNo := 0;
end else
begin
ShowMessage('<27>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> NILM ID <20>Դϴ<D4B4>.');
end;
end;
procedure TfrmNILM.btnEditClick(Sender: TObject);
var
sql : string;
begin
if (not CheckNILM(StrToInt(Edit2.Text))) and (select_nilm_idxNo>0) then
begin
sql := '';
sql := 'UPDATE nilm_info SET '+
'NilmID='+Edit2.Text+', '+
'nilmType='+inttostr(ComboBox1.ItemIndex)+', '+
'nilmName='''+Edit1.Text+''', '+
'srcAddr='''+Edit3.Text+''', '+
'srcMac='''+Edit4.Text+''', '+
'dstAddr='''+Edit5.Text+''', '+
'dstPort='+Edit7.Text+', '+
'topic='''+Edit6.Text+''' '+
' WHERE idxNo='+inttostr(select_nilm_idxNo);
frmMain.insertSQL(sql);
ShowNILM();
select_nilm_idxNo := 0;
end else
begin
ShowMessage('NILM ID<49><44> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.');
end;
end;
procedure TfrmNILM.btnDeleteClick(Sender: TObject);
var
sql : string;
begin
if (not CheckNILM(StrToInt(Edit2.Text))) and (select_nilm_idxNo>0) then
begin
sql := '';
sql := 'DELETE FROM nilm_info WHERE idxNo='+inttostr(select_nilm_idxNo);
frmMain.insertSQL(sql);
DropTableNilmValueLog(select_nilm_idxNo);
ShowNILM();
select_nilm_idxNo := 0;
end else
begin
ShowMessage('NILM ID<49><44> ã<><C3A3> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>.');
end;
end;
end.