Le "messagedlg" en boucle. Comment y remedier...

Résolu
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013 - 16 oct. 2012 à 11:54
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013 - 31 oct. 2012 à 16:17
Salut!

J'ai écrit des codes me permettant de faire un "edit" sur toute une colonne en une fois.
Primo, voici les codes qui marchent bien sans problème:

qryTS_QS.First;
while not qryTS_QS.Eof do
begin
qrtyTS_QS.Edit;
qrtyTS_QS.FieldByName('lieu_naissance').AsString:= lieu_naiss.Text;
qrtyTS_QS.Post;
qrtyTS_QS.Next;
end;
end;

Segundo, contrairement aux premiers codes. Ceux-ci marchent mais il y a un boucle sur le "messagedld". Il présente le message "Yes" ou "No". Curieusement, après avoir cliqué sur un de ces boutons. La fenêtre "messagedlg" ne sort plus. Elle reste stagner sur l'écran. Voici les codes:

qryTS_QS.First;
while not qryTS_QS.Eof do
begin
if messagedlg('Voulez-vous modifier toute la colonne "lieu_naissance"?')
then begin
qrtyTS_QS.Edit;
qrtyTS_QS.FieldByName('lieu_naissance').AsString:= lieu_naiss.Text;
qrtyTS_QS.Post;
qrtyTS_QS.Next;
end;
end;

Merci d'avance,
Divin1975

14 réponses

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
16 oct. 2012 à 12:37
Salut,
sort ton messagedlg de la boucle while
@+
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
16 oct. 2012 à 13:13
qryTS_QS.First;
if messagedlg('Voulez-vous modifier toute la colonne "lieu_naissance"?', mtConfirmation, [mbYes, mbNo],0)=mrYes then 
begin
  while not qryTS_QS.Eof do
  begin
    qrtyTS_QS.Edit;
    qrtyTS_QS.FieldByName('lieu_naissance').AsString := lieu_naiss.Text;
    qrtyTS_QS.Post;
    qrtyTS_QS.Next;
  end;
end;


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
3
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
16 oct. 2012 à 14:55
Bonjour,

Ce code fonctionne, c'est certain mais il m'interpelle,
car en fait si on répond oui, comme aucun filtre ni critère ne sont indiqués,
c'est toute la table qui va enregistrer le même lieu de naissance pour tous les enregistrements.

C'est bon à condition toutefois, que les titulaires soient tous nés au même endroit..

cantador
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
16 oct. 2012 à 17:00
Merci,
il s'agissait d'un mauvais ordre de logique.

@Cantador,
T'es marrant toi! C'est vrai que je n'ai pas mis un filtre. J'ai omis de le mettre juste pour ne pas trop "encombré" le necessaire.
Du moins, tu t'imagines qu'une table d'1 million d'enregistrements avec tous un même lieu de naissance. ça fait rigoler ça.

Merci,
Divin1975
0

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

Posez votre question
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
16 oct. 2012 à 17:50
Je reviens encore... Toujours dans le même ordre d'idées, au lieu d'ouvrir un autre post... Cette fois ci c'est une photo.

begin
if messagedlg('Etes vous sur de sauvegarder cette photo?', mtconfirmation, [mbYes, mbNo], 0) = mrYes then
begin
begin
while not qryTS_QS.Eof do
begin
if OpenPictureDialog1.Execute
Then
//try
qryTS_QS.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
qryTS_QS.Post;
//Except
showMessage('Photo sauvegardee');
end;

L'ajout sur la colonne photo (type Objecto OLE) n'obéit pas. Quand je clique sur le bouton "ajout" que j'ai crée, il ouvre le "OpenPictureDialog" et après avoir choisi la photo. Il revient sur le "messagedlg". Et ensuite il reouvre mon "OpenPictureDialog". Donc, une redondance "infinie". Que faire?

Merci,
Divin 1975
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
17 oct. 2012 à 09:23
tu t'imagines qu'une table d'1 million d'enregistrements

Si tu gères 1000 000 de profils, il va falloir sortir le grand jeu..

Je te propose une fois ton source au point de le déposer sur le site.
Ainsi, tu auras un 1000 000 de paires d'yeux qui vont le secouer, le désosser, le scruter.

et s'il passe cette terrible épreuve alors tu auras gagné.

un dernier point, lorsque tu mets du code, UTILISE LES BALISES DE CODE
comme l'a fait f0xi.

cela facilite grandement la compréhension, les tests et nous fait gagner du temps..

merci

cantador
0
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
17 oct. 2012 à 09:42
Salut,
@cantador : +1
@divin1975 : Toujours le même problème sort le OpenPictureDialog1 et le ShowMessage de la boucle While !
Et piqure de rappel UTILISE LES BALISES DE CODE comme l'a fait f0xi.
@+
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
17 oct. 2012 à 10:35
begin 
if messagedlg('Etes vous sur de sauvegarder cette photo?', mtconfirmation, [mbYes, mbNo], 0) = mrYes then 
begin 
    while not qryTS_QS.Eof do 
    begin 
if OpenPictureDialog1.Execute 
Then 
//try 
    qryTS_QS.Edit; 
    DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName); 
    qryTS_QS.Post; 
//Except 
showMessage('Photo sauvegardee'); 
end; 
0
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
17 oct. 2012 à 10:57
begin
  if OpenPictureDialog1.Execute then
  begin
    if messagedlg('Etes vous sur de sauvegarder cette photo?', mtconfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      while not qryTS_QS.Eof do
      begin
        qryTS_QS.Edit;
        DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
        qryTS_QS.Post;
      end;
      showMessage('Photo sauvegardee');
    end;
  end;
end;
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
29 oct. 2012 à 08:15
@yand
J'ai essayé tes codes. Mais après avoir cliqué sur mon button "télécharger". Mon messagedlg ne fait que reappaitre en boucle sans se lacer.

Merci,
Divin1975
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
29 oct. 2012 à 15:49
Quelqu'un peut-il dire un mot ici s'il vous plait...
0
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
29 oct. 2012 à 16:27
Salut,
petit soucis...je vois pas pourquoi ça fonctionnerait pas, mais fait toujours voir ce que tu as fait...
@+
0
Utilisateur anonyme
29 oct. 2012 à 20:40
Salut

Juste un petit pc de rappel : Pourquoi ne pas apprendre les bases (Variables, constantes, boucles, entrées, sorties) avant de se lancer dans les bases de données ? Cela ne serait il pas plus simple pour la suite ?
0
divin1975 Messages postés 81 Date d'inscription mardi 7 juin 2011 Statut Membre Dernière intervention 9 novembre 2013
31 oct. 2012 à 16:17
Merci pour vos conseils... Mais j'ai vraiment besoin dºaide. J'ai fait la même chose comme posté dans une de reponses.

begin
  if OpenPictureDialog1.Execute then
  begin
    if messagedlg('Etes vous sur de sauvegarder cette photo?', mtconfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      while not qryTS_QS.Eof do
      begin
        qryTS_QS.Edit;
        DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
        qryTS_QS.Post;
      end;
      showMessage('Photo sauvegardee');
    end;
  end;
end;
0
Rejoignez-nous