[R] Affichage dans msgbox de string récupérée d'une BDD

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

[R] Affichage dans msgbox de string récupérée d'une BDD

#1

Message par novembrezoulou »

Bonjour,
Je reprend une ancienne application et essaie de la rendre plus "propre".
Ainsi, je cherche à gérer les messages d'erreur en partant d'une BDD, le n° de l'erreur permettant l'affichage du texte et de l'icône...
Le script

Code : Tout sélectionner

MsgBox(16, "Erreur !", "Suite à 3 saisies erronées de votre mot de passe, " & @CRLF & _
    "     vous n'avez plus accès à l'application" & @CRLF & _
    "   Merci de contacter un des responsable de l'association")
Fonctionne, bien sûr parfaitement.
J'ai mis ce même texte dans un champ de BDD (mysql) et j'ai créé une fonction :

Code : Tout sélectionner

Func _GesErreurs($NumeroErreur)
    $Erreur=_EzMySql_GetTable2d("SELECT * FROM erreurs WHERE Id_Erreur='" & $NumeroErreur & "'")
    MsgBox($Erreur[1][1], $Erreur[1][2], $Erreur[1][3])
EndFunc
 
dans lequel $Erreur[1][1 est l'icône de la msgbox, ], $Erreur[1][2] le titre de la msgbox et $Erreur[1][3] le texte à afficher.

Lorsque j'appelle la fonction, par exemple _GesErreurs(1) qui est la première erreur logée dans la base, le texte s'affiche littéralement (avec les guillemets, les @CRLF en clair, etc.) dans la msgbox, au lieu de tenir compte des sauts de lignes. J'ai tenté de supprimer tous les guillemets, d'en rajouter au début et à la fin de la chaîne, d'échapper les guillemets avec des "\" mais rien n'y fait...

Cette gestion est-elle possible ou dois-je en rester à des messages individuels logés dans l'application ? Certains étant redondants, la solution base de données me semblait plus propre...

Merci !

Remarque : je n'ai pas joint l'UDF EzMySq.au3 afin de ne pas charger le serveur d'autant que je ne pense pas que le problème vienne de lui puisque je récupère bien ma chaîne...
Modifié en dernier par novembrezoulou le dim. 17 nov. 2013 01:12, modifié 4 fois.
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#2

Message par jguinch »

Si j'ai bien tout compris, la fonction Execute() devrait régler ton problème :
$sText = '"ceci est un texte " & @CRLF & "Ce texte contient des retours à la ligne"'
MsgBox(0, "", $sTextt)
$sDisplayText = Execute($sText)
MsgBox(0, "", $sDisplayText)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#3

Message par novembrezoulou »

Un grand merci pour ce renseignement :D

Avec l'aide, on arrive à solutionner pas mal de cas mais certaines fonctions ne font pas penser à ce pour quoi elles sont faites ! Heureusement, il y a ceux qui ont plus de maîtrise du langage...

Pour "execute()", je pensais à l’exécution d'un programme externe, un peu comme "run()". Du coup, je suis passé dessus !

Cordialement
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#4

Message par novembrezoulou »

Bonsoir
Finalement, il me reste un problème, si j'utilise une variable.
Le texte de la msgbox

Code : Tout sélectionner

MsgBox(0, "Erreur !", "Le mot de pase ne correspond pas à celui de l'utilisateur" & @CRLF & Il vous reste " & $EssaisRestants & " essais")
incluant le nom de la variable dans le texte de la base de données ne fonctionne pas et ne renvoie qu'une chaîne vide...
J'ai essayé avec "eval($EssaisRestants)" ou un deuxième "execute($EssaisRestants)" dans le texte de la BDD mais ça ne renvoie toujours qu'une chaîne vide...
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#5

Message par lesolutionneur »

Que contient $EssaisRestants exactement ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#6

Message par mikell »

Pas impossible que le problème vienne de l'apostrophe contenue dans le texte (qu'il faut doubler)

Code : Tout sélectionner

$n = 3
$sText = '"Le mot de passe ne correspond pas à celui de l''utilisateur" & @CRLF & "Il vous reste " & $n & " essais"'
MsgBox(0, "", $sText)
$sDisplayText = Execute($sText)
MsgBox(0, "", $sDisplayText)
Mais si la bdd ne sert qu'à ça, c'est pas un peu se compliquer la vie ?

Code : Tout sélectionner

_Erreur(16, "Erreur !", 3)

Func _Erreur($ico, $titre, $n)
  $txt = "Le mot de passe ne correspond pas à celui de l'utilisateur" & @CRLF & "Il vous reste " & $n & " essais"
  Return Msgbox($ico, $titre, $txt)
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#7

Message par novembrezoulou »

lesolutionneur a écrit :Que contient $EssaisRestants exactement ?
Il contient le nombre d'essais (variable numérique).
mikell a écrit :Pas impossible que le problème vienne de l'apostrophe contenue dans le texte (qu'il faut doubler)
Hélas non... Je viens de faire l'essai.
mikell a écrit :Mais si la bdd ne sert qu'à ça, c'est pas un peu se compliquer la vie ?
Cette base ne contient pas que ça... Elle contient les renseignements sur les membres, La liste des enregistrements musicaux disponibles (compositeurs, version, date et lieu d'enregistrement, solistes, orchestre, chef...), etc...
Là, on sort du cadre du forum AutoIt et je ne veux pas le polluer... Gérer une table de plus n'était pas gênant puisque la base existe déjà.
L'idée consistait donc à unifier toutes les méthodes de communication en les affichant via une msgbox et éviter de nombreuses lignes de code aujourd'hui redondantes. (La mise à jour des compositeurs ou celle des solistes, par exemple, appelle les mêmes messages d'erreur...).
Si l'appel à la msgbox standard n'est pas possible, je vais m'orienter vers une gui dédiée. En fait, au départ, je ne souhaitais pas "réinventer la roue"...
En fonction de la solution trouvée, je l'indiquerai (pour le bénéfice d'autres...) et je clôturerai le post.
Claude_NZ
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#8

Message par mikell »

Je ne connais pas MySql mais en SQLite ça marche
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#9

Message par novembrezoulou »

@Mikell
Merci. J'ai utilisé ton code "en l'état", ne connaissant pas SQLite (même s'il parait très ressemblant avec MySql...) et j’obtiens une erreur :
► Afficher le texte
Y a t'il une manip ou un autre include à charger en plus des deux SQLite ? ?
Je précise qu'en dehors de tous les "include" (il y en a un max...) il n'y a que ce code dans le script, "pour voir" me permettant d'isoler et de déboguer plus facilement mes misères...
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#10

Message par mikell »

Non, c'est le côté "intégriste" de Scite rapport aux ByRef sur les paramètres dans la définition de la fonction _SQLite_GetTable2d ... essaye avec ça

Code : Tout sélectionner

Func _GesErreurs($NumeroErreur, $n)
     Local $Erreur, $iRows, $iColumns
    _SQLite_GetTable2d(-1, "SELECT * FROM erreurs WHERE id='" & $NumeroErreur & "';", $Erreur, $iRows, $iColumns)
    MsgBox($Erreur[1][1], $Erreur[1][2], Execute($Erreur[1][3]))
EndFunc
Cela dit si ça marche avec SQlite ça serait surprenant que ça ne marche pas avec MySql, la syntaxe interne étant (apparemment) quasiment la même
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
novembrezoulou
Niveau 4
Niveau 4
Messages : 53
Enregistré le : dim. 06 nov. 2011 14:06
Localisation : Joinville le pont
Status : Hors ligne

Re: [..] Affichage dans msgbox de string récupérée d'une BDD

#11

Message par novembrezoulou »

On ne cherche plus !!!
J'avais tout bêtement un problème de portée de variable :(
La remettre en global puis la passer en paramètre facultatif a réglé le problème :D
Execute fonctionne à merveille.
Je passe le post en résolu
L'aviation est un moyen de transport rapide pour gens pas pressés.
Plus on va moins vite, moins le temps est plus court...
Répondre