Combobox et base de données

cs_rerel Messages postés 2 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 26 juillet 2006 - 24 juil. 2006 à 19:18
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 - 4 août 2006 à 12:14
Bonjour,

Je débute en VB (j'utilise vb express 2005) ainsi qu'en base de donnée
(SQL). J'ai une base de donnée avec une table contenant les champs : "noms";
"prenoms"; "adresse". J'ai défini "noms"+"prenoms" en tant que clé
primaire. Je souhaiterai créer une combobox contenant les différents noms présents dans la base de données, sans répétition. Je pensais pour cela créer
une nouvelle table qui contiendrait les noms, sans répétition; mais
là je bloque, j'ai regardé les différents types de relations entre
tables mais je crois que je m'égare... J'ai vu que access propose des "listes externes" mais je n'ai pas trouvé d'équivalent en SQL (ce que je dis est peut être totalement incohérent, mais je débute, dsl).
Par ailleurs, une fois que l'utilisateur a choisit le nom dans la combobox, je voudrai qu'une seconde combobox lui propose de choisir parmi les prénoms possibles pour ce nom.
Si quelqu'un pouvait me donner les grandes lignes à suivre, cela m'aiderai beacoup.
Merci d'avance.

17 réponses

tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
25 juil. 2006 à 08:30
Pour récuperer les données sans doublons, tu peux passer par une requete contenant UNIQUE (à tenter, je ne sais pas si ca marche...), puis pour récuperer le prénom une autre requte qui finira par where NOM = '" & combo1.selecteditem & "'


Voila, j'espere que ca t'aidera!





         (Si la réponse vous convient, appuyez sur réponse acceptée...).




                           Noubliez pas de lire le REGLEMENT 
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
25 juil. 2006 à 09:26
Salut,

pour ne pas avoir de doublons dans les noms, essaie :

"SELECT DISTINCT noms FROM tabase WHERE noms='" & tonNom & "'"

mais je ne suis pas sûr que ce soit une bonne idée de déclarer "noms" et "prénoms" comme clés primaire, ils devront être unique. Ajoute un champ "id" (par exemple) qui s'incrémente automatiquement......
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
25 juil. 2006 à 11:11
C'est à peu près cela Drahcir sauf que l'opérateur "=" doit être remplacé par "like" soit "SELECT DISTINCT noms FROM tabase WHERE noms='" & tonNom & "'"

Le fait de mettre "noms" et "prénoms" comme clés primaire empêche de rentrer deux fois la même personne ce qui est une règle d'intègrité de la base, quoi qu'il arrive aussi que deux personnes différentes aient le même nom et prénom il faut alors ajouter le champ date de naissance dans la clé primaire mais ça deviens un peu lourd. le fait d'ajouter un champ ID est une bonne chose mais cela n'empêche jamais les doublons.
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
25 juil. 2006 à 12:46
Tout à faot pluplu, ça n'empêchera pas d'avoir 2 personnes de mêmes nom et prénom . Cependant, avec un champ adresse, ça devrait faire l'affaire.
0

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

Posez votre question
cs_rerel Messages postés 2 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 26 juillet 2006
26 juil. 2006 à 12:14
Bonjour et merci pour vos réponses,
Je ne maîtrise pas du tout les requêtes SQL (j'ai réalisé ma base de donnée avec l'assistant de vb express). Je ne sais pas encore comment intégrer des requêtes dans mon programme (même si c'est la base, là j'ai un peu honte). Donc je vais me renseigner et essayer d'appliquer vos conseils.

Merci encore.
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 09:28
Bonjour,


J'ai egalement une application faisant intervenir une base SQL. Et je souhaiterais voir apparaitre au lancement de mon application tous les noms de personnes présent dans la base de donnée dans un ComboBox.


Je ne sais pas comment ecrire la procedure pour recuperer ces données !


Si quelqu'un peut m'aider, merci d'avance.


 
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 09:36
tout simplement "SELECT noms,prenoms FROM tabase"

<hr />
@+  
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 09:58
Je suis desolé mais je n'y connais absolument rien en db.


J'ai créer ma base avec l'assistant de visual basic express 2005 :


J'ai une base qui se nomme DonneeDataSet qui a une table Adherant, quand j'ecris le code que tu m'as donné ca me fait des erreurs


 
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 10:03
essaie "SELECT noms,prenoms FROM Adherant"

<hr />
@+  
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 10:06
Private






Sub
Login_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.Load


   ListLogin.Item.add =  Select
Nom From Adhérants


End



Sub

(Désolé, je dois vraiment être nul, ca me marque la requete en erreur)
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 10:15
Qu'est-ce que ListLogin? Un objet ListBox ou quelquechose du style j'imagine?


Quelles données contient-il?


Peux-tu décrire un peu plus en détail ce que tu veux?





<hr />

@+  
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 10:42
Oui, ListLogin est une combo.


Je souhaite recuperer de ma base de donnée tous les noms pour les faire apparaitre dans la liste que l'utilisateur puisse faire un chois.


ensuite je souhaite contrôle que le mot de passe associé au nom soit correct.


En bref, c'est pour créer une application de login pour entrée sur un programme.


 
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 11:03
Tout d'abord, tu dois créer ta connexion (ici à SQLServer) :
Dim

SqlConnection AsNew System.Data.SqlClient.SqlConnection

Dim dTable
As
New System.Data.DataTable

SqlConnection.ConnectionString =

"Persist Security Info=False;Integrated Security=SSPI;database=DonneeDataSet ";server=" & srv

'srv est le nom de ton serveur

SqlConnection.Open()

Ensuite il te faut un DataAdapter qui va te permettre de récupérer ces données :

Dim SqlDataAdapter
As
New SqlDataAdapter(
New SqlCommand(
"SELECT Nom FROM Adhérant", SqlConnection))

Pui, tu remplis ton abjet DataTable avec le DataAdapter :
SqlDataAdapter.Fill(dTable

)

Maintenant, tu n'as plus qu'à lier la source de ta combo à ton DataTable :

ListLogin.DataSource = dTable

<hr />
@+  
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 11:46
Je suis perdu... je voudrais faire quelques chose de simple..

Et là j'ai l'impression que ca demande une certaine habitude.
Qu'est ce que tu appels Serveur. je suis en local !!!

J'ai juste un db sur mon poste (une simple table que je veux lire)

J'ai tout de même importer ton code, mais y comprend absolument rien, y me met tout en erreur

Désolé, y me faudrait la db pour les nuls :-)
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 11:55
Qu'est ce que c'est ta db? De toute façon, il faut bien que tu t'y connectes d'une façon ou d'une autre, sinon je ne vois pas comment tu vas récupérer tes données!!


Cherche la chaîne de connexion correspondante à ta db (qui remplacera "Persist Security Info=False;Integrated Security=SSPI;database=DonneeDataSet ";server=" & srv

)





<hr />

@+  
0
whatitis Messages postés 6 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2006
4 août 2006 à 12:07
J'ai simplement ajouter une source de donnée, ensuite l'aide m'as guidé pour créer ma base.


J'ai l'impression de visual basic express 2005 fait beaucoup de chose automatiquement.

Dans l'aide, il montre un exemple en effectuant simplement un glisser/deplace de la donnée sur la FORM mais ca n'as pas le rendu que je souhaite obtenir.

Pour te montrer j'ai créer une nouvelle form et glisser toute la table appelé ADHERANT sur la form :

Public
Class Form2

   Private
Sub AdhérantsBindingNavigatorSaveItem_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles AdhérantsBindingNavigatorSaveItem.Click
      
Me.Validate()
      
Me.AdhérantsBindingSource.EndEdit()

      Me.AdhérantsTableAdapter.Update(
Me.PoleConvivialiteDataSet.Adhérants)

   End
Sub








   Private



Sub
Form2_Load(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles



MyBase
.Load
   

'TODO : cette ligne de code charge les données dans la table 'PoleConvivialiteDataSet.Adhérants'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
      
Me
.AdhérantsTableAdapter.Fill(

Me
.PoleConvivialiteDataSet.Adhérants)


   End



SubEnd





Class

Avec ça, je peux afficher tout les renseignements de ma base de données mais pas comme je veux.
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
4 août 2006 à 12:14
Ok, je ne sais pas trop comment fonctionne VB Express 2005, mais à ce que je vois, il t'a automatiquement tout crée.


Tu ne devrais donc plus qu'avoir à faire

ListLogin.DataSource = Me
.PoleConvivialiteDataSet.Adhérants

sauf qu'il va te renovyer tout l contenu de ta table.
Tu dois avoir une méthode "select" sur ton DataTable ou un truc du genre

Me
.PoleConvivialiteDataSet.Adhérants.Select.....





<hr />

@+  
0
Rejoignez-nous