Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 12h10   #1
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
Par défaut Champs d'une table non-reconnue

Bonjour,

j'ai deux table Access pour lesquelles je veux faire une jointure :
T_CRU1_AcqList (extrait)
Code :
1
2
3
4
5
Acq_ID  |  Acq_Date  | Acq_Com | ...
-----------------------------------
1       | 01/11/2010 | bla bla
2       | 07/11/2010 | bli bli
3       | 14/11/2010 | blo blo
T_CRU1_MesInit
Code :
1
2
3
4
5
Acq_ID  |  1ETY001YP  | 1RCP403ZO | ...
-----------------------------------
1       | 1.001       | 99.6
2       | 1.010       | 99.8
3       | 0.990       | 100.1
Je lis ma base de données Access avec excel avec le code VBA suivant
Code VBA :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Option Explicit
 
Public Sub ExtractionDeltaT()
Dim Cnx As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim texte_SQL As String
Dim FichierBDD As String
Dim Cellule As Range
Dim Tranche As Integer, i As Integer
    '--- Connexion ---
    Tranche = 1
    FichierBDD = ThisWorkbook.Path & "\CRUAS_BDD mesures process.mdb"
 
    If OpenConnectionDB(FichierBDD, Cnx) = False Then Exit Sub
    texte_SQL = "SELECT AcqList.Acq_ID, AcqList.Acq_Date, MesInit.1RCP403ZO " & _
                "FROM T_CRU_MesInit AS MesInit " & _
                    "INNER JOIN T_CRU1_AcqList AS AcqList " & _
                    "ON MesInit.Acq_ID = AcqList.Acq_ID"
 
    Range("A2").Value = texte_SQL
    Set Rst = New ADODB.Recordset
    Set Rst = Cnx.Execute(texte_SQL)
 
    Range("A2").CopyFromRecordset Rst
 
Set Cnx = Nothing
Set Rst = Nothing
End Sub
 
Private Function OpenConnectionDB(ByRef PathFile As String, _
                    ByRef Cnx As ADODB.Connection) As Boolean
'Fonction permettant à Excel de se connecter à un fichier Excel fermé et servant de base de donnée
'via les liaisons OLE DB Microsoft Jet
 
    OpenConnectionDB = False
    Set Cnx = New ADODB.Connection
    '--- Connexion ---
    With Cnx
        If Val(Application.Version) < 12 Then
            .Provider = "Microsoft.Jet.Oledb.4.0"
        Else
            .Provider = "Microsoft.ACE.OLEDB.12.0"
        End If
        .ConnectionString = PathFile
        .Open
    End With
    OpenConnectionDB = True
End Function

J'obtient le message d'erreur suivant sur Rst.Execute :
Citation:
Erreur d'excecusion '-2147217900 (80040e14)':
Erreur de syntaxe (opérateur absent) dans l'expression
'MesInit.1RCP403ZO'
Il y a un problème dans ma requete SQL mais je ne vois pas quoi ... :
Code SQL :
1
2
3
4
SELECT AcqList.Acq_ID, AcqList.Acq_Date, MesInit.1RCP403ZO
                FROM T_CRU_MesInit AS MesInit  
                    INNER JOIN T_CRU1_AcqList AS AcqList 
                    ON MesInit.Acq_ID = AcqList.Acq_ID

Pourriez-vous m'aider à trouver le problème car je sèche là... ?
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h08   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 079
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 079
Points : 11 615
Points : 11 615
Bonjour,

Autant faire simple et ne pas mettre d'alias pour les tables.

Code :
1
2
SELECT Eleves.Numero, Emprunts.DateEmprunt, Emprunts.DateRetour
FROM Emprunts RIGHT JOIN Eleves ON Emprunts.IDEleve = Eleves.IDEleve;
Ici 2 tables liées par un ID.

Si tu as des problèmes avec les requêtes utilises le générateur.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 19h40   #3
Candidat au titre de Membre du Club
 
Homme
Inscription : juillet 2004
Messages : 31
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : juillet 2004
Messages : 31
Points : 11
Points : 11
C'est bon j'ai trouvé ma solution ici : http://mhubiche.developpez.com/Acces...ointures/#L3.2
Dans ma requête SQL il fallait mettre les nom de champ en crochet []
Code SQL :
1
2
3
4
SELECT AcqList.[Acq_ID], AcqList.[Acq_Date], MesInit.[1RCP403ZO]
                FROM T_CRU_MesInit AS MesInit  
                    INNER JOIN T_CRU1_AcqList AS AcqList 
                    ON MesInit.[Acq_ID] = AcqList.[Acq_ID]

Merci loufab pour la piste de l'alias mais ce n'était pas l'origine de mon problème...
ferdi67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h42.


 
 
 
 
Partenaires

Hébergement Web