Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 23/10/2006, 15h29   #1
Membre habitué
 
Inscription : janvier 2006
Messages : 344
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 344
Points : 116
Points : 116
Par défaut [VBA-ODBC]syntaxe de connection

Bonjour,

je cherche une syntaxe de connexion vba -> odbc qui fonctionne



voila le script de connexion que j'utilise :
Code :
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
 
 
 
Private m_db As DAO.database
 
    Property Get CurrentDB() As DAO.database
 
        If m_db Is Nothing Then
        ConnectDAO
        Else
        End If
 
        Set CurrentDB = m_db
 
    End Property
 
 
    Public Function ConnectDAO() As DAO.database
 
    Dim ws As Workspace
    Dim strConnection As String
 
 
    Set ws = DBEngine.Workspaces(0)
    Let strConnection = "ODBC;DSN=nom du dsn;DATABASE=nom de ma base;UID=mon login;PWD=mon passe"
    Debug.Print strConnection
 
    Set m_db = ws.OpenDatabase("", False, False, strConnection)
 
    Set ConnectDAO = m_db
 
 
    End Function
 
    Public Sub DisconnectDAO()
 
 
    m_db.Close

et le code de mon formulaire qui fait une requete et rempli une combo avec le resultat :

Code :
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
 
Option Explicit
 
'declaration des variables globales
'----------------------------------
 
Private cnxDAO As ClassDAO
' déclaration de l'objet de la ClassDAO permettant la connection , déconnection à la base DAO
 
 
 
Private Sub UserForm_Initialize()
' partie initialisant le formulaire en remplissant la combo des codes déjà existant
 
 
    ' declaration des variables
    '--------------------------
 
    Dim rsserie As Recordset
    Dim JO_SERIE As String
    Dim sql As String
 
    sql = "SELECT DISTINCT OP_DE_JO_ALL.JO_SERIE FROM OP_DE_JO_ALL"
    Debug.Print sql
 
 
    'connexion à la base de données
    '------------------------------
 
    Set cnxDAO = New ClassDAO ' création d'une connection DAO
 
    cnxDAO.ConnectDAO 'connection DAO
 
 
    ' recordset
    '----------
 
    Set rsserie = cnxDAO.CurrentDB.OpenRecordset(sql, dbOpenDynaset, dbFailOnError)
 
        With rsserie
 
            While Not .EOF ' tant que pas à la fin du recordset
 
            JO_SERIE = !JO_SERIE
            cboserie.AddItem JO_SERIE
            .MoveNext
            Wend ' fin du tant que
 
        End With ' fin du with
 
 
    'deconnexion a la base de données
    '--------------------------------
 
    rsserie.Close ' fermeture du recordset
 
    Set rsserie = Nothing ' le recordset est vidé
 
    cnxDAO.DisconnectDAO ' déconnection à la base DAO
 
 
 
End Sub

et la j'ai une message d'erreur run-time error 3078

the microsoft jet database engine cannot find the input table or query, make sure it exists and that its name is spelled correctly


donc la probleme est qu'il ne trouve pas ma table mais elle existe bien
la requete fonctionne sous access pas d'erreur du nom de la table

je ne sais pas qu'elle est mon erreur


merci
megapacman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 15h56   #2
Expert Confirmé Sénior
 
Avatar de ced600
 
Homme Cédric
Développeur .NET
Inscription : août 2006
Messages : 3 364
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : août 2006
Messages : 3 364
Points : 4 033
Points : 4 033
Cela ne peut il pas être un problème de librairie, ou quelque chose à déclarer pour que ton prog accede à la base de donnée ?
ced600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 16h02   #3
Membre habitué
 
Inscription : janvier 2006
Messages : 344
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 344
Points : 116
Points : 116
justement je ne sais pas

je cherche sur le web des scripts de connexion


mais pour l'instant je n'ai reussi a faire fonctionner aucun

megapacman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 16h22   #4
Expert Confirmé Sénior
 
Avatar de ced600
 
Homme Cédric
Développeur .NET
Inscription : août 2006
Messages : 3 364
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : août 2006
Messages : 3 364
Points : 4 033
Points : 4 033
Est as tu regardé dans les options d'Excel s'il n'y avais pas une option à activer, ou truc du genre ?
ced600 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2006, 16h23   #5
Membre habitué
 
Inscription : janvier 2006
Messages : 344
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 344
Points : 116
Points : 116
j'ai essayé comme cet exemple ca fonctionne oufs
c vraiment galere oracle
donc je recommande ce code de connexion si ca peut etre utile

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
Dim wstemp As Workspace
Dim dbtemp As Database
Dim rstemp As Recordset
 
Set wstemp = DBEngine.Workspaces(0)
Set dbtemp = wstemp.OpenDatabase("", False, False, "ODBC;DSN=Oracle;USR=scott;PWD=tiger")
Set rstemp = dbtemp.OpenRecordset(myquery.Text, dbOpenDynaset, dbSQLPassThrough)
howmany = 0
Combo1.Clear
Do Until rstemp.EOF
 	msgbox rstemp(0)
	rstemp.MoveNext
	howmany = howmany + 1
Loop
 
http://www.orafaq.com/faqmsvb.htm
merci pour votre aide
megapacman 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 06h38.


 
 
 
 
Partenaires

Hébergement Web