Le "messagedlg" en boucle. Comment y remedier... [Résolu]

Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
- - Dernière réponse : divin1975
Messages postés
83
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
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
Messages postés
260
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2016
5
3
Merci
Salut,
sort ton messagedlg de la boucle while
@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_yanb
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
33
3
Merci
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 ?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
15
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
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
Commenter la réponse de divin1975
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
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
Commenter la réponse de divin1975
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
15
0
Merci
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
Commenter la réponse de cs_cantador
Messages postés
260
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2016
5
0
Merci
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.
@+
Commenter la réponse de cs_yanb
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
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; 
Commenter la réponse de divin1975
Messages postés
260
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2016
5
0
Merci
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;
Commenter la réponse de cs_yanb
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
@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
Commenter la réponse de divin1975
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
Quelqu'un peut-il dire un mot ici s'il vous plait...
Commenter la réponse de divin1975
Messages postés
260
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
4 mars 2016
5
0
Merci
Salut,
petit soucis...je vois pas pourquoi ça fonctionnerait pas, mais fait toujours voir ce que tu as fait...
@+
Commenter la réponse de cs_yanb
0
Merci
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 ?
Commenter la réponse de Utilisateur anonyme
Messages postés
83
Date d'inscription
mardi 7 juin 2011
Statut
Membre
Dernière intervention
9 novembre 2013
0
Merci
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;
Commenter la réponse de divin1975

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.