Access via SQL

cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006 - 5 mars 2005 à 15:29
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006 - 6 mars 2005 à 12:33
QQN peut il m'aider ?

Je programme un petit utilitaire permetant de gérer mes clients, chaque client peut avoir plusieurs contacts. Comment rédiger une commande sql qui permet de sélectionner tous les contacts de ma table contact, qui ont un numéro correspondant à un client ; sélectionner auparavant dans ma table client.

Merci.

11 réponses

relax62 Messages postés 82 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 8 juillet 2012 1
5 mars 2005 à 15:54
pour selectionner tous les contacts de ta table contact, tu dois taper:
dans ta requete

"SELECT * FROM Contacts WHERE NumeroClient = xxxx"

voili voila

n'hesites pas a demander si tu as besoin de plus de detail :-)
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
5 mars 2005 à 16:33
Quand j'utilise Requery derrière, il me met "Type de données incompatible dans l'expression du critère" ????
0
relax62 Messages postés 82 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 8 juillet 2012 1
5 mars 2005 à 16:52
Requery??? je ne connais pas :-(

Peux tu m'en dire plus?

si c'est le nom de ta variable fait:

"SELECT * FROM Contacts WHERE NumeroClient = '" & Requery & "'"
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
5 mars 2005 à 17:28
Ma procédure de chargement de ma liste de contact suite à un choix dans ma liste client :
Private sub ListeRechercheContact_Charge()


Dim ListeItemRésultat as listItem

'Mise à jour de la listview :
ListRechercheContact.ListItems.Clear

'Préparation de ma commande Recherche des contacts en fonction du client Choisi :
CmdADOContact.CommandText="SELECT * From CONTACT where NumClient = " & RsltADOClient!NumClient &"

'Exécution de la commande :
RlstADOContact.Requery

'Chargement de la listeviewContact :
While (not RsltADOContact.EOF)
If (RsltADOContact.Recordcount <>0) then
Set ListItemResultat=ListeRechercheContact.ListItems.Add(, , CStr(RsltADOContact!NomContact))
End If

RsltADOContact.MoveNext
Wend
End Sub
0

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

Posez votre question
relax62 Messages postés 82 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 8 juillet 2012 1
5 mars 2005 à 18:58
dans cette ligne:
CmdADOContact.CommandText="SELECT * From CONTACT where NumClient = " & RsltADOClient!NumClient &"

le &" ne serait il pas superflu?

Moi j'ai plus l'habitude d'utiliser sans controle ADO (je ne sais pas si c'est mieux ou pas???)

dim bds as database
dim requete as string
dim rscontact as recordset

Set bds = OpenDatabase(GlobalEmplacementBaseDonnees) 'Connexion sur la base accessRequete "SELECT * FROM Contact WHERE NumClient" & rsltadoclient!numclient
Set rsContact = bds.OpenRecordset(Requete, dbOpenSnapshot, dbReadOnly) 'requete pour les contacts
Do Until rsContact.EOF 'jusqu'à la fin du recordset, si il est vide passe à la suite
rsContact.MoveLast 'va à la fin du recordset
rsContact.MoveNext 'va à eof
Loop
If rsContact.RecordCount > 0 Then rsContact.MoveFirst

'Chargement de la listeviewContact :

Do Until rsContact.EOF 'jusqu'à la fin du recordset, si il est vide passe à la suite
Set ListItemResultat=ListeRechercheContact.ListItems.Add(, , CStr(RsContact!NomContact))
rsCategories.MoveNext 'va à eof
Loop

essaie ca si tu veux
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
5 mars 2005 à 19:14
Salut,

- Ton champ NumClient est en string ? en long ? ..... ?
- Tu utilises un coup RlstADOContact et un autre RsltADOContact, lequel est le bon ?
- CmdADOContact.CommandText="SELECT * From CONTACT where NumClient = " & RsltADOClient!NumClient &" ??? : le &" de fin est superflu.
- perso, je n'utilise pas requery mais plutôt rst.open requete,connexion

Loup Gris
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
5 mars 2005 à 20:22
T'aurais pas un exemple d'utilisation, de "rst.open" ?
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
5 mars 2005 à 21:27
Relax62 => J'ai exactement le même message avec ton code soit "Type de données incompatible dans l'expression du critère"
0
relax62 Messages postés 82 Date d'inscription vendredi 2 avril 2004 Statut Membre Dernière intervention 8 juillet 2012 1
6 mars 2005 à 10:14
Dans ce cas ca doit etre RsltADOClient!NumClient qui n'est pas déclaré en long ou en integer.

Verifie dans access, quel type de donnée est déclaré pour NumClient.

-soit tu le change dans access, si ca ne change pas trop de code VB
-soit tu converti ton champ dans VB

Si ce champ est declaré en string, tu peux faire avec des apostrophes:

"SELECT * FROM Contacts WHERE NumeroClient = '" & RsltADOClient!NumClient & "'"
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
6 mars 2005 à 11:03
Pour rst.open :

au lieu de :
CmdADOContact.CommandText="SELECT * From CONTACT where NumClient = " & RsltADOClient!NumClient &"

'Exécution de la commande :
RlstADOContact.Requery

je met directement :
RlstADOContact.Open "SELECT * From CONTACT where NumClient = " & RsltADOClient!NumClient , NomDeTaConnexionBdd

Mais, finalement le prob n'est pas là, mais plutôt comme le dit Relax62. Vérifie si le type des champs NumClient de tes tables contact et client est identique ou non.

Loup Gris
0
cs_guigui28 Messages postés 28 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 17 octobre 2006
6 mars 2005 à 12:33
Ca marche, c'était bien le type de donnée qu'il fallait changer dans la base Access.

Merci Je commençais à désespérer. A+.
0
Rejoignez-nous