[Mysql/Access] ODBC error bij verbinding *

Pagina: 1
Acties:
  • 400 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Ik probeer verbinding te maken met een mySQL server vanuit Access. Hiervoor is netjes MyODBC geinstalleerd en hiervoor maak ik gebruik van de voorbeeldcode die zij zelf bieden.

Stukje uit deze code dat relevant is:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Dim ws As Workspace
Dim conn As Connection
Dim queryDef As queryDef
Dim str As String
Dim rs As DAO.Recordset

'connect to MySQL using MySQL ODBC 3.51 Driver
Set ws = DBEngine.CreateWorkspace("", "***", "*****", dbUseODBC)

str = "odbc;DRIVER={MySQL ODBC 3.51 Driver};" _
    & "SERVER=*****.nl;DATABASE=jubalvar_database;UID=*****;PWD=****;OPTION=3;"


Eigenlijk zijn er twee problemen:

1.) Probeer ik verbinding te maken zonder interruptie door de gebruiker, dus met pure macrocode, dan werkt het niet. Anders gezegd, deze regel werkt niet:
code:
1
Set conn = ws.OpenConnection("test", dbDriverNoPrompt, False, str)


2.) Verander ik deze code in het volgende, dan wordt er - na interruptie van de gebruiker om verbindingsgegevens te vragen - wel verbinding gemaakt, maar dan kan ik nog niks met deze verbinding.
code:
1
Set conn = ws.OpenConnection("test", dbDriverPrompt, False, str)


Dat blijkt heel simpel uit het volgende stukje code. De tabel test bestaat online, maar de recordcount geeft -1 als resultaat en verder gebeurt er (dus ook) niets.

Visual Basic:
1
2
3
4
5
6
7
8
Set rs = conn.OpenRecordset("Test")
With rs
    MsgBox (.RecordCount)
    
    For x = 1 To .RecordCount
        MsgBox (!Test)
    Next
End With


Iemand enig idee?

[ Voor 33% gewijzigd door TromboneFreakus op 06-03-2004 19:01 ]


Acties:
  • 0 Henk 'm!

Anoniem: 52733

Die boolean die op false staat, waar is die voor?

Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Anoniem: 52733 schreef op 06 maart 2004 @ 17:53:
Die boolean die op false staat, waar is die voor?
VOor al dan niet read only openen.

Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Even voor de duidelijkheid: de verandering bij probleem 2 beschreven leidt ertoe dat de gebruiker wordt gevraagd naar de connectiegegevens (daar staat overigens niets anders dan in de connectiestring... vreemd genoeg).

Op hoofdlettergevoeligheid heb ik ook bewust gelet. Ik weet het even niet meer....

Acties:
  • 0 Henk 'm!

Anoniem: 52733

Aha, ok. Ik dacht misschien dat het daar wat mee te maken had...Verder kan ik je ook niet helpen, want ik kan niet de hele situatie overzien. Succes in ieder geval.

Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Oh ja, de foutmelding is:
code:
1
2
3
fout 3146 tijdens uitvoering: 

ODBC: de oproep is mislukt


Dat is een heel algemene foutmelding volgens de help:
ODBC: de oproep is mislukt. (Fout 3146)
U hebt geprobeerd via een ODBC-verbinding een bewerking uit te voeren op gegevens in een ODBC-gegevensbron. Deze fout kan optreden als de ODBC-gegevensbron zich op een netwerkstation bevindt en er geen verbinding met het netwerk bestaat. Controleer of er een verbinding is met het netwerk en probeer de bewerking opnieuw uit te voeren.

Acties:
  • 0 Henk 'm!

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

God, root, what is difference? | Talga Vassternich | IBM zuigt


Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Heeft niemand ervaring met MyODBC in gebruik met VBA?

Of heeft iemand anders een alternatief idee hoe een database zo te kunnen koppelen aan een MySQL database dat deze - na installatie van MyODBC - direct bruikbaar is? Want volgens mij moet je nu eerst een bestandje aanmaken met daarin de connectiegegevens van de MySQL-database, toch? Of slaat Access die connectiegegevens in de database op?

Ik heb nl. sterk de indruk dat Access slechts de verwijzing naar het bestand met de connectiegegevens opslaat (en dus feitelijk niets zinnigs zodra je de database op een andere pc plaatst).

Acties:
  • 0 Henk 'm!

Anoniem: 106551

Rs.recordcount = -1 wil niet zeggen dat hij leeg is, maar dat DAO niet weet hoeveel records er in zitten.

Je zou je testcode eens aan moeten passen. Dat kan op 2 manieren. De eerste is een rs.movelast en rs.movefirst toevoegen voordat je in je lus gaat. Dat dwingt DAO om alle records op te halen ( hij moet immers weten wat de laatste is )
De tweede manier is wat netter, gebruik de recordcount niet maar
code:
1
2
3
4
  do while not rs.eof 
    msgbox rs!test
    rs.movenext
  loop

Acties:
  • 0 Henk 'm!

Anoniem: 32345

Heb je misschien 2 ODBC recordsets tegelijk open? Bij mij gaat dit bijvoorbeeld perfect:

code:
1
2
3
4
5
6
7
8
Public Sub bagger()
    Dim rsBron As DAO.Recordset
    Set rsBron = CurrentDb.OpenRecordset("ODBCGekoppeldeNaam")
    Do While Not rsBron.EOF
        rsBron.MoveNext
    Loop
    rsBron.Close
End Sub


Maar dit geeft precies de fout die jij aangeeft:

code:
1
2
3
4
5
6
7
8
9
10
Public Sub bagger()
    Dim rsBron As DAO.Recordset
    Dim rsBest As DAO.Recordset
    Set rsBron = CurrentDb.OpenRecordset("ODBCLinkNaamEen")
    Set rsBest = CurrentDb.OpenRecordset("EenwillekeurigeAndereTabel")
    Do While Not rsBron.EOF
        rsBron.MoveNext
    Loop
    rsBron.Close
End Sub


Een oplossing heb ik alleen ook helaas nog niet gevonden.

Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Ok, ik ga even verder prutsen met deze twee suggesties.

Helaas heeft geen van jullie beiden concreet ervaring met MyODBC, begrijp ik dat goed?

Acties:
  • 0 Henk 'm!

Anoniem: 106551

TromboneFreakus schreef op 20 maart 2004 @ 14:48:
Ok, ik ga even verder prutsen met deze twee suggesties.

Helaas heeft geen van jullie beiden concreet ervaring met MyODBC, begrijp ik dat goed?
Klopt, ik heb wel ervaring met de gewone ODBC, Jet en Oledb ( Oracle, MSSQL en Access ), maar met myODBC niet.
Pagina: 1