Utilisation des références Access

rabenls Messages postés 24 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2007 - 25 mars 2007 à 11:12
rabenls Messages postés 24 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2007 - 26 mars 2007 à 18:33
Bonjour,
Je suis sous Visual Studio 6, VB6, SP6, sous XP, avec Access 2000 et 2003.
Que ce soit en DAO ou ADO (actuellement).

Lorsque j'utilise dans mon programme les références que j'ai créé et qui fonctionne dans Access, dans VB, la référence n'affiche que l'id de la table vers laquelle je pointe, et non pas le contenu de la référence.

Par exemple dans la table ingrédient, ref_categorie affichera 1,2 ou 3 et non pas légumes, viandes ou poissons.

Que faut t'il faire pour que ca affiche ce que je désire?

mon code actuel (résumé, il fonctionne, et rempli une listview avec des éléments de ma BD mais n'affiche que les id des références Access)

Public bd As New ADODB.Connection
Public cmdado01 As New ADODB.Command
Public tb01 As New ADODB.Recordset

Private Sub Form_Load()
bd.Provider = "Microsoft.jet.oledb.4.0"
bd.ConnectionString = App.Path & "\tfe01.mdb"
bd.Open
cmdado01.ActiveConnection = Me.bd
cmdado01.CommandText = "select * from Ingrédients"
tb01.CursorLocation = adUseClient
tb01.CursorType = adOpenDynamic
tb01.LockType = adLockPessimistic
tb01.Open cmdado01
cmdado01.CommandText = "select * from Ingrédients"
tb01.Requery
    While (Not tb01.EOF)
        If (tb01.RecordCount <> 0) Then
            Set LstItem = ListViewPromo.ListItems.Add(, , CStr(tb01!Nom))
            If Not IsNull(tb01!Ref_Categorie) Then LstItem.SubItems(1) = CStr(tb01!Ref_Categorie)
        End If
        tb01.MoveNext
    Wend
End Sub

merci

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 mars 2007 à 12:20
salut,
c'est sans doute un pb de requête...
si la base est bien faite, "Ref_Categorie" contient ton chiffre, clé étrangère de .... la clé primaire d'un table "Catégories"

donc pas "select * from Ingrédients"
mais
"SELECT Ingrédients.Nom, Catégories.Nom FROM Ingrédients, Catégories WHERE Ingrédients.Ref_Categories = Catégories.Nom"

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
rabenls Messages postés 24 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2007
25 mars 2007 à 16:15
En effet ta requête parait mieux formulée.
Mais je n'arrive toujours pas a affiché le contenu de la référence, c'est toujours l'identifiant qui apparait.

merci
0
rabenls Messages postés 24 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2007
25 mars 2007 à 16:30
Une deuxieme chose, en fait, apres cette requête, je n'arrive plus a faire un requery de mon recordset, pourtant la requête ne présente aucune erreur.

Erreur d'execution '-2147467259 (800004005)
Type Mismatch in expression

Aussi, si quelqu'un a un bon cours ou programme expliquant les liaisons VB6 et access avec plusieurs tables et des références, je suis intéressé.

merci
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
26 mars 2007 à 14:05
Question, ta table ingrédient contient un champ ref_Categories, mais ce champ ne serait pas alimenté par une autre table à tout hasard ? Lié par une intégrité référentielle ? ca y ressemble beaucoup en tous cas, je le fais dans mes bases personnellement pour gagner de la place :

Par ex. :
Table Catégories :
Num   Nom
1         Légumes
2         Viandes
3         Poissons

Table Ingrédients :
Regarde les propriétés du champ ref_Categories, je parierai presque qu'il est de type numérique, avec 2 colonnes dont la taille de la première est égale à 0, la colonne liée = 1, alimentée par une petite requête SELECT * FROM Catégories (Nom de la table).

De cette façon, quand tu rentres dans la table, tu vois bien écrit dans ton champ viandes, poissons, etc ... mais ce qui est réellement enregistré, c'est la clé primaire.
Et tu pourras l'interroger comme tu voudras, la seule info qui remontera sera un chiffre.

Pour résoudre le pb, ta requête SQL doit comporter une jointure, ou une solution plus simple je trouve, dans ta base ACCESS, tu crées une Requête avec l'assistant graphique, qui te remonte la donnée Texte cette fois, et tu interroges cette requête avec un "SELECT * FROM Requête".

Je me trompe peut être, mais ton problème ressemble bcp à ce genre de situation.

Molenn
0

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

Posez votre question
rabenls Messages postés 24 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 4 août 2007
26 mars 2007 à 18:33
Molenn,
En effet, mes références access pointent vers la clé primaire de la clé pointée, et je choisi d'afficher la colonne voulue.
Je suis sur la piste des requetes crées dans access, jusqu'ici j'avance bien, mais je ne sais pas encore pour la modification des données si ca fonctionnera a partir d'une requete.

merci
0
Rejoignez-nous