Liaison base de donnees textbox

Signaler
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
-
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
-
Bonjour,
je développe avec vb 2005, j'ai une BDD access avec une table qui contient trois champs;
- numéro adhérent
- prénom adhérent
- date de naissance
dans mon form j'ai trois textbox
alors ce que je veux c'est quand je saisie le numéro d'adhérent dans le textbox1.text et j'appuie sur la touche enter il m'affiche le nom dans le textbox2.text et la date de naissance dans le textbox3.text

merci

24 réponses

Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Tu bloques sur quoi ?

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Bonjour NHenry,
j'ai pas bien compris ta question qu'est ce que tu veux dire par je bloque sur quoi
désoler pour cette question mais puisque je suis débutant j'ai pas bien piger ta question.
marci pour ton intention à mon probléme parce que c vraiment urgent
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Quel élément te pose problème ?
Est-ce la connexion à la base de données
Récupérer l'information
Afficher l'information
...

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Re,
oui c'est exactement mon problème donc pour la connexion à la base de données voilà mon code dans le form_load :
'ma BDD (amc) et ma table (gestadh)
'connexion base de données
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\amc.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()
sql = "select gestadh.* from gestadh"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx

dta.Fill(dts, "gestadh")

dtt = dts.Tables("gestadh")

If rownum > dtt.Rows.Count - 1 Then

Me.Show()
End If
alors maintenant ce que je veux c'est quand je saisie le numéro d'adhérent dans le textbox1.text et j'appuie sur la touche enter il m'affiche le nom correspond a cet adherent dans le textbox2.text et la date de naissance correspondante au meme adherent dans le textbox3.text.
je veux le code si c'est possible en détail
merci mon ami
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
alors j'ai oublier je veux récuperer l'information et l'afficher dans les textbox2 et 3
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Je pense que la réponse se trouve dans la clause WHERE des requête SQL.
Regardes aussi du coté de OleDbDataReader et de Cmd.GetDataReader, ça sera suffisant pour ton utilisation.

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Bonjour,
voilà ce j'ai mis dans l'événement textbox1:
j'ai crée un label pour faire ma requete:

Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.LostFocus
If Label26.Text = "id" Then
sql "select police.* from police where numadh '" & TextBox1.Text & "'"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx
dta.Fill(dts, "gestadh")
dtt = dts.Tables("gestadh")

If rownum > dtt.Rows.Count - 1 Then
MessageBox.Show("Il n'existe aucun adherent pour ce numéro " & TextBox1.Text & " !", "Données inexistantes...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Exit Sub

Els
Me.TextBox2.Text = dtt.Rows(rownum).Item("nomadh")
Me.TextBox3.Text = dtt.Rows(rownum).Item("dnaissance")
End If
End If
end sub

merci de me corriger ce code
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Pourquoi utiliser un DataAdapter à la place d'un DataReader plus simple à manipuler ?

Dim lReader as OleDbDataReader=cmd.GetDataReader()
If lReader.Read Then
'Des données
Else
'Pas de données
End If

Comment corriger un code, sans savoir ce qui ne va pas ?

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
ou je doid mettre ce code??
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

En retirant :
dta = New OleDbDataAdapter(cmd)
et le ne mettant à la place de :
dta.Fill(dts, "gestadh")
dtt = dts.Tables("gestadh")

If rownum > dtt.Rows.Count - 1 Then
MessageBox.Show("Il n'existe aucun adherent pour ce numéro " & TextBox1.Text & " !", "Données inexistantes...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Exit Sub

Els
Me.TextBox2.Text = dtt.Rows(rownum).Item("nomadh")
Me.TextBox3.Text = dtt.Rows(rownum).Item("dnaissance")
End If
End If 


enfin, à toi de voir en testant.

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
désolé ça marche pas:
je vous remercie bcp pour votre patiente avec un débutant, alors pour récapituler voilà mon code actuel:
dans le form_load:

Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
conn "provider microsoft.jet.oledb.4.0 ; data source = " & Application.StartupPath & "\amc.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()
sql = "select gestadh.* from gestadh"
cmd = New OleDbCommand(sql)
dta = New OleDbDataAdapter(cmd)
cmd.Connection() = cnx

dtt = dts.Tables("gestadh")

If rownum > dtt.Rows.Count - 1 Then

Me.Show()
End If
End Sub

dans le textbox1.text


Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If Label26.Text = "id" The
sql "select gestadh.* from gestadh where numadh '" & TextBox1.Text & "'"
cmd = New OleDbCommand(sql)
cmd.Connection() = cnx
dta.Fill(dts, "gestadh")
dtt = dts.Tables("gestadh")

If rownum > dtt.Rows.Count - 1 Then

MessageBox.Show("Il n'existe aucun adheret pour ce numéro " & TextBox1.Text & " !", "Données inexistantes...", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

Exit Sub

Else
Me.TextBox2.Text = dtt.Rows(rownum).Item("nomadh")
Me.TextBox3.Text = dtt.Rows(rownum).Item("dnaissance")
End If
End If
End Sub


voila mon code complet
alors maintenant quand je lance mon application et que je saisie par exemple le numéro 14 dans le textbox1.tet il m'affiche les cordonnées du premier adhérent c'est à dire adhérent numéro 1.
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Limite la portée de tes variables,
dts et dtt doivent être limitées à la Sub/Function qui les utilise, et pas en valeur globale.

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
bonsoir,
svp au lieu de me dire des choses que je comprend pas, donne moi le code que je dois ecrire, c'est simple je crois tout en sachant que le code que j'ai ecrit je l'ai mis en haut.

merci encore
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

En clair, au lieu de déclarer dtt et dta au niveau de ta classe, tu les déclare dans ta fonction.

Private Sub MaSub
Dim Variable as Type

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Bonjour,
désolé de vous déranger encore une fois NHenry, mais toujours je suis perdu j'ai rien copmris.
je veux le code que je dois écrire dans le Form1_load et le code que je dois écrire dans l'événement du textbox1.
c très gentil de votre part de m'aider parce que j'en ai vraiment besoin demain.

voilà les éléments que j'ai


- la BDD : amc
- la table : gestadh
- les champs de la table: numadh, nomadh, dnaissance
- Form1 :textbox1, textbox2, textbox3
merci bcp
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Ce que je pense, c'est que comme tu as déclaré dta et dtt (variables) en global, et que tu ne les RAZ pas, tu ne récupère que le premier résultat de la première requête de ton programme.

D'où le fait de les déclarer dans le Sub/Function qui les utilisent serait plus efficace, car ça éviterais ce genre d'erreur.

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Bonjour,
alors qu'est ce que je dois écrire comme code.
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Ramène les déclarations de dta et dtt dans les fonction/sub qui en ont besoin, je ne vois pas comment faire plus clair.

Quels mots te bloques dans ma phrase ?

Mon site
Messages postés
55
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
28 juin 2018
1
Bonjour,
qu'est ce que tu veux dire par fonction/sub
Messages postés
14770
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
27 février 2021
151
Bonjour,

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Est une Sub.

Mon site