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 109 110 111 112 113
| procedure TForm1.dClick(Sender: TObject);
var
vXLWorkbook, vXLWorkbooks,vMSExcel, vCell, vWorksheet : variant;
NomFichier, aRange, aSheetName : AnsiString;
i:integer;
max:real;
begin
i:=2;
vMSExcel := CreateOleObject('Excel.Application');
vMSExcel.Visible := true;
NomFichier := 'C:\Traitement de la pointe\'+DD.Text+'.xlsx';
vXLWorkbooks := vMSExcel.Workbooks;
vXLWorkbook := vXLWorkbooks.Open(NomFichier);
aSheetName := poste.Text;
vWorksheet := vXLWorkbook.WorkSheets[aSheetName];
with QueryDepart do
begin
Close;
SQL.Clear;
SQL.Add('select DISTINCT * from DEPART_S.DBF where POSTE_OS='''+Poste.text+''' ');
Prepare;
open;
end;
QueryDepart.Open;
QueryDepart.First;
//DBEditPoste.DataField:='depart';
with QueryDepart do
begin
while not Eof do
begin
DBEditNormal.DataField:='';
DBEditSecours.DataField:='';
//identifier la source et le départ secours
with QueryLabels do
begin
Close;
SQL.Clear;
SQL.Add('SELECT *from depart_s.dbf where depart='''+DBEditDep.Text+''' AND poste_os ='''+Poste.Text+'''');
Prepare;
open;
end;
//calcule le courant en état secours
with QuerySomme do
begin
Close;
SQL.Clear;
SQL.Add('SELECT DISTINCT D.DATE_M, D.HEURE_M, D.'+DBEditDep.Text+', D1.'+DBEditDepSec_1.Text+',( D.'+DBEditDep.Text+'+ D1.'+DBEditDepSec_1.Text+' ) as Tot FROM "'+Poste.Text+'.DBF" D, "'+DBEditSouSec_1.Text+'.DBF" D1 WHERE (D1.DATE_M = D.DATE_M) AND (D1.HEURE_M = D.HEURE_M)');
Prepare;
open;
end;
//création de la table secours
BatchMove1.execute;
with QuerySecours do
begin
Close;
SQL.Clear;
SQL.Add('SELECT DISTINCT DATE_M, HEURE_M, '+DBEditDep.Text+', '+DBEditDepSec_1.Text+'');
SQL.Add('from TOT.DBF where Tot=(SELECT DISTINCT max(D.'+DBEditDep.Text+'+ D1.'+DBEditDepSec_1.Text+')');
SQL.Add('FROM "'+Poste.Text+'.DBF" D, "'+DBEditSouSec_1.Text+'.DBF" D1');
SQL.Add('WHERE (D1.DATE_M = D.DATE_M) AND (D1.HEURE_M = D.HEURE_M))');
Prepare;
open;
end;
DBEditNormal.DataField:=DBEditDep.Text;
DBEditSecours.DataField:=DBEditDepSec_1.Text;
Secours.Text:=DBEditSecours.Text;
Normal.Text:=DBEditNormal.Text;
//max:=strtofloat(DBEditNormal.Text)+strtofloat(DBEditSecours.Text);
aRange := 'A'+inttostr(i);
edit2.text:=aRange;
vCell := vWorksheet.Range[aRange];
vCell.Value:= Poste.text;
aRange := 'B'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:= DBEditDep.text;
aRange := 'C'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:=DBEditNormal.text;
aRange := 'D'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:=DBEditSouSec_1.text;
aRange := 'E'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:=DBEditDepSec_1.text;
aRange := 'F'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:=DBEditsECOURS.text;
aRange := 'H'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:= strtodate(DBEditDate.text);
aRange := 'I'+inttostr(i);
vCell := vWorksheet.Range[aRange];
vCell.Value:=DBEdithEURE.text;
vWorksheet := vXLWorkbook.WorkSheets[aSheetName].Activate;
end; |
Partager