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 114 115 116 117
| procedure Tf_distribution.bt_colis_alimClick(Sender: TObject);
Var
annee , mois , jour : Word ;
text_query : String ;
tmp_colis_donne , tmp_nbre_colis ,tmp_colis_urgence : Integer ;
tmp_tot_mt_articles : Double ;
begin
If MessageDlg('Confirmation colis',
'Confirmez vous le paiement et la distribution du colis ?',
mtConfirmation,[mbYes, mbNo],0) = mrYes
Then begin
// calcul du total articles
tmp_tot_mt_articles:=0;
temp_article.Refresh;
temp_article.First;
While not temp_article.EOF Do Begin
tmp_tot_mt_articles:=tmp_tot_mt_articles + temp_article.FieldByName('prix_total').AsFloat;
temp_article.Next;
end;
// initialisation des champs de saisie
if cb_colis_donne.Checked Then Begin
tmp_colis_donne:=1 ;
tmp_nbre_colis:=1 ;
End
Else Begin
tmp_colis_donne:=0;
tmp_colis_urgence:=0;
End ;
If cb_colis_urgence.Checked Then tmp_colis_urgence:=1 Else tmp_colis_urgence:=0;
// Ouverture du fichier log
AssignFile(fichier,ExtractFilePath(Application.ExeName)+'application.log');
// Codage de la date de session PAS UTILISé pour l'instant
DecodeDate(db_session.FieldByName('ses_date').AsDateTime,annee,mois,jour);
// Construction du query pour créer une ligne_session
text_query:=
'INSERT INTO `db_ligne_session`(' +
'`ses_recid`, `lig_fam_num_carte`, `lig_type_session`, `lig_fam_recid`, `lig_fam_nom`, '+
'`lig_nbre_pers`, `lig_colis_alim`, `lig_nbre_colis`, `lig_mt_colis`, `lig_colis_urgence`, `lig_nbre_urgence`, '+
'`lig_mt_colis_urgence`, `lig_mt_tot_art` , `lig_mt_total`, `lig_mt_paye`, `lig_mt_du`) '+
' VALUES (''' +
IntToStr(db_session.FieldByName('ses_recid').AsInteger) +
''',''' +
IntToStr(sql_famille.FieldByName('fam_num_carte').AsInteger) +
''',''' +
'0' +
''',''' +
IntToStr(sql_famille.FieldByName('fam_recid').AsInteger) +
''',''' +
sql_famille.FieldByName('fam_nom').AsString +
''',''' +
IntToStr(sql_famille.FieldByName('fam_nbre_personnes').AsInteger) +
''',''' +
IntToStr(tmp_colis_donne) +
''',''' +
IntToStr(tmp_nbre_colis) +
''',''' +
FloatToStr(prix_colis) +
''',''' +
IntToStr(tmp_colis_urgence) + // colis d'urgence
''',''' +
IntToStr(tmp_colis_urgence) + // colis d'urgence
''',''' +
'0' + // colis d'urgence
''',''' +
FloatToStr(tmp_tot_mt_articles) +
''',''' +
FloatToStr(mt_du.Value) +
''',''' +
FloatToStr(mt_paye.Value) +
''',''' +
FloatToStr(mt_reste.Value) +
''')' ;
{ Exécuter la requête SQL }
try
sql_self_service.SQL.Clear;
sql_self_service.SQL.Add(text_query);
// Exécution de la requête
sql_self_service.ExecSQL;
except
// Enregistre la syntaxe de la requête en cas d'échec
Append(fichier);
WriteLn(fichier,'Le ' + datetostr(Now) + ' à ' + TimeToStr(Now));
WriteLn(fichier,'Erreur lors de l''enregistrement d''une ligne session');
Writeln(fichier,sql_self_service.SQL.Text);
WriteLn(fichier,' ');
CloseFile(fichier);
ShowMessage('Si ce message apparaît merci de consulter le fichier log');
End;
// rafraichissement de la table db_ligne_session liée à la table session
db_lig_session.Refresh;
db_lig_session.Last;
// Se positionner au début de la table temporaire
temp_article.First;
// Crédr les lignes dans la base MySQL
While not temp_article.EOF Do Begin
db_distrib_articles.Insert ;
db_distrib_articles.FieldByName('recid_session').AsInteger:=db_session.FieldByName('ses_recid').AsInteger;
db_distrib_articles.FieldByName('recid_lig_session').AsInteger:=db_lig_session.FieldByName('lig_num_ligne').AsInteger;
db_distrib_articles.FieldByName('recid_article').AsInteger:=temp_article.FieldByName('recid_article').AsInteger;
db_distrib_articles.FieldByName('desig').AsString:=temp_article.FieldByName('designation').AsString;
db_distrib_articles.FieldByName('qte').AsInteger:=temp_article.FieldByName('qte_total').AsInteger;
db_distrib_articles.FieldByName('total').AsFloat:=temp_article.FieldByName('prix_total').AsFloat;
db_distrib_articles.Post;
temp_article.Next;
end;
end;
end; |
Partager