db object koppelen aan ODBC drive

Status
Niet open voor verdere reacties.

Sanders69

Gebruiker
Lid geworden
24 mrt 2018
Berichten
209
Heeft iemand code liggen om een db object te koppelen aan een ODBC drive?
Ik heb een ODBC driver aangemaakt en betreft een SQL server database.
Onderstaande code dacht dat ik deze eerder aan de praat had gekregen maar kennelijk gaat dit nog niet goed.
Wellicht heeft iemand al een werkend iets waardoor ik deze code kan gebruiken.

strS
Code:
erverName = DLookup("ser", "tblMeta_Con", "type='" & strDbType & "'")
    strSQLDatabaseName = DLookup("db", "tblMeta_Con", "type='" & strDbType & "'")
    strSQLUsername = DLookup("us", "tblMeta_Con", "type='" & strDbType & "'")
    strSQLPassword = DLookup("pa", "tblMeta_Con", "type='" & strDbType & "'")
    
    strConnectString = "ODBC;DATABASE=" & strSQLDatabaseName & ";DSN=" & strSQLDatabaseName & ";UID=" & strSQLUsername & ";PWD=" & strSQLPassword
    Set dbODBC = wsAccess.OpenDatabase(strSQLDatabaseName, dbDriverComplete, True, strConnectString
)
 
Koppelen met een ODBC driver hoef je maar één keer te doen; waarom zou je dat met VBA doen?
 
Okay laat ik het anders stellen. Ik heb drie databases en ze hebben alle drie dezelfde structuur alleen ik koppel de applicatie met de ene database maar wil soms data uit een ander database binnenslurpen. Ik dacht even snel via de drivers te doen maar kennelijk krijg ik hierdoor alleen maar vragen waar ik verder weg raak dan ik wil komen. Dus ik wil via vba data uit een ander SQL server database halen. Hoe zou jij dat doen?
 
Je kunt in VBA rechtstreeks koppelen met een SQL server database. Welke versie?
 
Ik heb de code al om de applicatie eraan te koppelen, zie hieronder en dat werkt prima alleen mis ik de code om db object aan een database te koppelen.
Ik weet niet welke versie SQL Server het is dacht 2012 of 2014
Code:
 strConnectString = "ODBC;Driver={SQL Server};SERVER=" & strServerName & _
                        ";DATABASE=" & strSQLDatabaseName & _
                        ";UID=" & strSQLUsername & _
                        ";PWD=" & strSQLPassword
    For i = 1 To 98
        If strTables(i) <> "" Then
            Call DeleteTableIfExist(strTables(i))
            Set tdfLinked7 = CurrentDb.CreateTableDef(strTables(i))
            tdfLinked7.Connect = strConnectString
            tdfLinked7.SourceTableName = strTables(i)
            End If
        End If
        
    Next i
 
Nu vertel je toch weer iets anders, en je code is ook uitgebreider. Volgens mij mist er echter nog steeds een belangrijk stuk. Want hoe vul je strTables?
 
Hoi Octa,

We dwalen nu echt af want dat is mijn vraag niet.
Heb jij code om een db object te verbinden aan een SQL Server database?
Iets van set db = ... waar je een connectionstring aangeeft: de servernaam, databasenaam, gebruikersnaam en wachtwoord.
Daarna wil ik de DOA gebruiken om een recordset te vullen
 
Ik snap je echt niet. Je zegt dat je code om de ODBC te koppelen werkt. Dan heb je de database toch ook? En de tabellen? Wat is het probleem, gezien het feit dat je dus veel te weinig code geeft?
 
Het eenvoudigste is om het via de SQL server aan te pakken. Indien het verschillende databases zijn op één server maak dan een view aan in de database waarmee je een connectie hebt met de data uit de andere DB; staan die op verschillende servers werk dan met linked servers + een view. Aangezien een SQL server veel efficiënter omgaat met data dan Access kan je de data vragen daar beter aanpakken. Laat de server hat werk doen en toon het resultaat in je front-end.
 
Nu je eindelijk bent aangehaakt, kan ik dit topic loslaten, want dit is veel meer jouw terrein dan het mijne :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan