VB6 - Vrai/faux dans un textbox ou une checkbox d'après base de donnée
smilingjoe2
Messages postés20Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention19 août 2005
-
18 août 2005 à 18:53
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
20 août 2005 à 12:39
bonjour,
j'ai une form qui me permet de selectionner un patient.
La liste des noms est affichée dans une listbox, les infos relatives aux patients sont dans des textbox et 1 checkbox. Infos et noms proviennent d'une table access.
Mon problème se situe au niveau du checkbox qui ne change pas. J'ai essayé differents choses :
.Add Check1, "SelectedValue", "Cathetere", , "cathetere" - text, value à la place de selected value ...
( j'utilise une databound collection)
J'ai aussi essayé d'utilsier un textbox, là les infos arrivent bien, mais sous forme de 0 / -1 à la place du oui/non de la base. Même en mettant le textbox.dataformat à boolean.
smilingjoe2
Messages postés20Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention19 août 2005 19 août 2005 à 10:46
Ok. Donc ce que j'obtiens c'est un resultat sql. Mais comment faire pour le 'traduire' soit en français dans ma textbox --> oui/Non
soit pour le faire comprendre par un checkbox ?
J'ai essayé aussi les If
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 19 août 2005 à 11:55
Je suppose que tu alimentes tes zones avec un recordset fonction d'une requête SQL avec comme critère listbox.value ?
Du style (c'est grossier hein, juste pour donner l'idée ^^) ...
txt_NomPatient.text = Recordset("Nom") si ta table contient un champ Nom,
txt_PrénomPatient.text= Recordset("Prénom")
txt_AgePatient.text = Recordset("Age")
etc ...
Et bien, pour ta checkbox, c'est quasiment la même chose, mais utilise une variable avec, par exemple :
Dim Temp as String
temp = Recordset("Cathetere")
'Comme c'est pour alimenter une checkBox, normalement, tu n'as donc que 2 valeurs possibles dans ce champ.
if temp = "<Contenu de ton champ>" then
chk_Cathetere.value = true
else
chk_Cathetere = false
end if
Et le tour est joué.
Molenn.
Vous n’avez pas trouvé la réponse que vous recherchez ?
smilingjoe2
Messages postés20Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention19 août 2005 19 août 2005 à 12:41
En fait, je crée une première requete sql qui compte le nbre d'enregistrement de la BD.
Ensuite je crée une seconde requete qui rempli ma listbox :
RequeteqSql = "SELECT * FROM Patients"
RecPatient.CursorLocation = adUseClient
RecPatient.Open RqSql, Connex, adOpenDynamic, adLockOptimistic, adCmdText
I = 0
RecPatient.MoveFirst
Do While RecPatient.EOF = False
ListPatient.AddItem RecPatient!RefPatient
ListPatient.List(I, 0) = RecPatient!RefPatient
ListPatient.List(I, 1) = RecPatient!Nom
ListPatient.ColumnWidths = "0;"
RecPatientt.MoveNext
I = I + 1
Loop
RecPatientt.MoveFirst
Ensuite je lie les textbox ( et j'aurais aimé le checkbox) à la liste des patients, ainsi, encliquant sur un nom dans la liste, les textbox sont actualisées.
Set Boundpatient.DataSource = RecPatient
With Boundpatient
.Add Pat(0), "Text", "RefPatient", , "Identifiant"
.Add Pat(1), "Text", "Nom", , "Nom du patient"
.Add Pat(2), "Text", "Prenom", , "Prénom du patient"
.Add Pat(4), "Text", "DateNais", , "Date de Naissance"
.Add Pat(5), "Text", "PoidsNais", , "Poids de Naissance"
.Add Pat(6), "Text", "TermeNaisS", , "Terme de Naissance en semaines"
.Add Pat(7), "Text", "TermeNaisJ", , "Terme de Naissance en Jours"
.Add Pat(3), "Text", "Parents", , "Nom des parents"
.Add Pat(8), "Text", "Commentaire", , "Commentaire" 'invisible
.Add Pat(9), "Text", "Cathetere", , "cathetere" ' --- > resultat = 1- / 0
End With
Il est (semble ?) impossible de lier un checkbox avec Boundpatient. Avec un Boundpatient2 ça ne marchait pas non plus.
Donc, j'ai triché ( je sais c'est pas beau) en reprenant un peu de toutes vos sugegstions :
pat(9).visible = false je cache la textbox qui m'em.. ennuyait!
Private Sub Pat_Change(Index As Integer)
Dim Temp As String
Temp = Pat(9)
If Temp = "-1" Then
chk_Cathetere.Value = Unchecked
Else
chk_Cathetere =Checked
End If
End Sub
Merci à tous. 'Ma' solution n'est pas trés propre, mais elle fonctionne alors .......
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 14:03
"Boundpatient" est une ListView?
désolé, j'ai un peu perdu le fil.
ta checkBox, c'est un bouton radio séparé? ou la propriété de la liste.
ton bidouillage, j'ai vu pire, mais c'est dommage d'en arriver là....
si tu arrive à récupérer maintenant la bonne valeur, supposons un chechbox (CHK), et le résultat [-1 / 0] en variable REZ
CHK.Value IIf(REZ 0, Checked, Uncheched)
smilingjoe2
Messages postés20Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention19 août 2005 19 août 2005 à 19:12
Désolé d'avoir été si long, mais ma première réponse était : Hein ?????. Grand débutant, je connaissais pas les listview. Donc j'ai d'abord été voir ce que c'était avant de te répondre. Et donc :
Non, je ne crois pas. Dans ma version (anglais) de vb6, ça s'appelle databoundlist.
Ca se presente comme ça :
Ceci dit, comme je bosse le soir, je vais travailler sur ton idée cette nuit, je donnerais des nouvelles demain matin. Etape 1 : trouver à quoi correspond ta variable REZ .....
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 19:41
path de ton image en local, donc pas visible ;)
tu récupères "-1" ou "0" dans une txtbox si j'ai bien survolé ;)
et après, tu joues sur le Change....
considère que le ce txtbox, c'est mon REZ. et que ce REZ dans la syntaxe donnée ci-dessus, tu peux remplacer (normalement) ta ligne par la mienne, en y integrant ton code de récupération de la base, à la place du mot "REZ"....
j'préfère pas me relire...
umm, copie moi juste ta ligne exacte de ta récupération du "-1 / 0" et le nom de ton checkbox, je vais te synthétiser çà ;)
smilingjoe2
Messages postés20Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention19 août 2005 19 août 2005 à 23:58
Décidemment, j'ai vraiment du mal !! Et pour les images et pour les concepts .
La ligne qui récupère le "-1 / 0" : de la Bd vers les textbox ? ou du textbox vers le check ?
Pat = les textbox qui vont de Pat(0) à Pat(9) avec un control array
De la BD vers la textbox :
With Boundpatient
.Add Pat(9), "Text", "Cathetere", , "cathetere"
end with
Du textbox vers le checkbox :
Private Sub Pat_Change(Index As Integer)
Dim Temp As String
Temp = Pat(9)
If Temp = "-1" Then
chk_Cathetere.Value = Checked
Else
chk_Cathetere = Unchecked
End If
End Sub
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 20 août 2005 à 12:39
salut,
bon, le truc, c'est que rien qu'en posant un DBlist (normalement c'est le même objet que le tien), la fonction ".add", je l'ai pas.
donc dur dur de voir la bonne syntaxe.....
désolé, trop particulier.....
tu disais, au début, que tu arrivais à récupérer la valeur, mais que le checkbox ne changeait pas. (0/1 ~ -1/0)
t'as essayé un truc du genre check1.value = Not (...retour de requête) pour voir si la syntaxe était acceptée?
sinon, récupère ce que tu as mis dans Pat(9) dans une variable (dizons REZ), et .....ci-dessus.... çà devrait aller