Pourquoi , interdiction d'autres codes de fonctionner.

Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015 - 2 juin 2012 à 14:00
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 - 11 juin 2012 à 18:53
Salut!

Je me pose bien la question de savoir pourquoi après ces codes, aucun autres codes s'executes. Sauf les premiers:

///////////////////
Salaire.Filter:='=matric' +quotedtsr(matriculecons.Text);
Salaire.Filtered:= true;
if not Salaire.empty thn begin
end else
Salaire.Edit;
Salaire.FieldByName('nom').AsString:= empresaLancam.Text;
Salaire.FieldByName('mois').AsString:= mesLancam.Text;
Salaire.FieldByName('anee').AsString:= anoLancam.Text;
Salaire.Post;
end else
Salaire.Append;
Salaire.FieldByName('nom').AsString:= empresaLancam.Text;
Salaire.FieldByName('mois').AsString:= mesLancam.Text;
Salaire.FieldByName('anee').AsString:= anoLancam.Text;
Salaire.Post;
//////////////////////
//apres ces codes, il ne s'execute aucun autre. Pourquoi?, Par exemple, si je met ceci: showMessage('salut!'); Ça nous pourra pas apparaitrew. A moins que j'enlève les premiers codes "edit", "append"...



Developper est une dimension pour moi.
Leader2000

5 réponses

pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
2 juin 2012 à 22:04
Bonjour,
On peut simplifier tout ça
If not Salaire.empty then
// Ici il y a un End else à quoi sert il ??? je pense que c'est une erreur de frappe!!!
Salaire.Edit
Else
Salaire.Append;
Salaire.FieldByName('nom').AsString:= empresaLancam.Text;
Salaire.FieldByName('mois').AsString:= mesLancam.Text;
Salaire.FieldByName('anee').AsString:= anoLancam.Text;
Salaire.Post;
Si il y plusieurs instructions après le if
If .... then begin
..... les instructions
.....
.....
End // pas de point virgule après le end car le else fait parti de l'instruction IF
Else begin // Si il y a plusieurs instruction après le else il faut écrire
..... les instructions
.....
.....
End; // Terminer le else begin avec un end et un point virgule

On peut aussi écrire pour simplifier With Salaire do begin
ce qui évite de répeter les Salaire.Edit et Salaire.FieldByName()
Petite info : Année prend 2 N
Amicalement

pierrot
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
2 juin 2012 à 22:48
Bonsoir,

Dès l'instant où le code est fourni,
le mieux est peut-être de tout réécrire :

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Salaire do
  begin
    Filtered := false;
    Filter := '=matric' + quotedtsr(matriculecons.Text);
    Filtered := true;
    if not empty then
    begin
      Edit;
      FieldByName('nom').AsString := empresaLancam.Text;
      FieldByName('mois').AsString := mesLancam.Text;
      FieldByName('anee').AsString := anoLancam.Text;
      Post;
    end
    else
    begin
      Append;
      FieldByName('nom').AsString := empresaLancam.Text;
      FieldByName('mois').AsString := mesLancam.Text;
      FieldByName('anee').AsString := anoLancam.Text;
      Post;
    end;
  end;
end;


Une requête SQL paramétrée serait plus adaptée..

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 juin 2012 à 16:13
hé !

QuotedStr et non Quotedtsr

cantador
0
Leader2000 Messages postés 184 Date d'inscription mercredi 24 mai 2006 Statut Membre Dernière intervention 28 août 2015
11 juin 2012 à 16:40
Merci Pierrot et Cantador de m'avoir envoyé vos codes.
Seulement, je crois que c'est moi qui me suis mal exprimé. Au fait, je voulais dire qu'après ces codes par exemple... aucun autre code ne peut être executé. Je l'ai essayé et ça pas marché.

procedure TForm1.Button1Click(Sender: TObject);
begin
with Salaire do
begin
Filtered := false;
Filter := '=matric' + quotedtsr(matriculecons.Text);
Filtered := true;
if not empty then
begin
Edit;
FieldByName('nom').AsString := empresaLancam.Text;
FieldByName('mois').AsString := mesLancam.Text;
FieldByName('anee').AsString := anoLancam.Text;
Post;
end
else
begin
Append;
FieldByName('nom').AsString := empresaLancam.Text;
FieldByName('mois').AsString := mesLancam.Text;
FieldByName('anee').AsString := anoLancam.Text;
Post;
//par exemple ici ce bout de code ne marche pas après le "post"
showMessage('salut');
end;
end;
end;
//voir même ici ça ne marche pas
showMessage('salut');

Et que faire, pour dire qu
Merci.

Developper est une dimension pour moi.
Leader2000
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
solilog Messages postés 273 Date d'inscription samedi 13 juin 2009 Statut Membre Dernière intervention 18 avril 2015 10
11 juin 2012 à 18:53
Bonsoir,
Bravo cantador, une belle proc se lit/comprend tellement mieux. Mais vois une autre erreur:
Filter := '=matric' + quotedtsr(matriculecons.Text);
la syntaxe d'un filter est 'Fieldname=value' ou 'Fieldname="value"' (string), et toi tu as qq'chose qui ferait '=matric"XXXXXXXXXXX"' et si je teste un truc similaire ça sur une de mes tables ça plante. Ne serait-ce pas plutôt
'matric=' + quotedtsr(matriculecons.Text); ?

Pense aussi que si ton filter ne trouve jamais de record tu seras toujours en EOF. Qu'as-tu dans matriculecons.Text ?

Va dans le code ton ta procedure, ajoute point d'arret (F5) sur la 1ere instruc, puis en run tu fais des F7 pour debugger ligne/ligne et tu verra où ça déconne.

Salut.
solilog
0
Rejoignez-nous