Insert + update en Delphi avec base access

Signaler
Messages postés
13
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
7 octobre 2012
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
Je repose ma question, voici le code écrit, peut on l'optimiser

Langage DELPHI7

Base de données : Access
qpay.Active:=false;
qpay.SQL.Clear;
qpay.SQL.Add('SELECT * FROM Papaye ');
qpay.SQL.Add(' WHERE Salarie = '+quotedstr(Presal)+' ');
qpay.SQL.Add(' AND Papaye.Rubrique = '+inttostr(qrub.fieldbyname('Code').asinteger)+' ');

qpay.Active:=true;


if qpay.RecordCount > 0 then
begin
qecr.Active:=false;
qecr.SQL.Clear;
qecr.SQL.Add('UPDATE Papaye SET ');
qecr.SQL.Add(' Libelle = '+quotedstr(qrub.fieldbyname('Libelle_Long').asstring)+' ');
qecr.SQL.Add(' WHERE Salarie = '+quotedstr(Presal)+' ');
qecr.SQL.Add(' AND Papaye.Rubrique = '+inttostr(qrub.fieldbyname('Code').asinteger)+' ');
qecr.SQL.Add(' AND Papaye.Date_D = cdate('+quotedstr(datetostr(datdeb))+') ');
qecr.ExecSQL;
qecr.Active:=false;
end
else
begin
qecr.Active:=false;
qecr.SQL.Clear;
qecr.SQL.Add('INSERT INTO Papaye (Salarie,Rubrique,Montant,Libelle,Date_D,Date_F,Coef,Base) ');
qecr.SQL.Add('VALUES ('+quotedstr(Presal)+','+inttostr(qrub.fieldbyname('Code').asinteger)+', ');
qecr.SQL.Add(''+floattostrf(0.00,Fffixed,10,2)+','+quotedstr(qrub.fieldbyname('Libelle_Long').asstring)+', ');
qecr.SQL.Add('cdate('+quotedstr(datetostr(datdeb))+'),'+quotedstr(datetostr(datfin))+'),');
qecr.SQL.Add(''+floattostrf(0.00,Fffixed,10,2)+',sum(0.00) ),'+floattostrf(0.00,Fffixed,10,2)+' ');
qecr.ExecSQL;
qecr.Active:=false;
end;
qpay.Active:=false;

Merci d'avance

Carpiste

2 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
33
Salut,



Pour la reponse le forum delphi te seras plus utile.



Sinon pour SELECT count(*) as nb FROM Papaye ... sera plus rapide

pour le calcul du nombre d'enregistrements.



Ensuite si tu met une cle sera sera plus rapide.

En plus sur les champ de la recherche un index est conseillé

et dans le select prends que les champs utiles

ou un champ



evites l'etoile ;-)

SELECT count(Salarie) as nb FROM Papaye



Esperant avoir guidant un peu.

Pour delphi, je ne connais pas trop les optimisations de ce langage









voila
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
une seule fonction qecr.SQL.Add par requettes pourrait optimiser la partie dephi

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy