[VB] Gegevens uit database ophalen

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Hi,

Ik zit met het volgende probleem. Ik ben bezig met een aantal Word-sjablonen, die het een en ander aan data uit een MySQL database moeten gebruiken. Die database word gevuld door een php-site, dat werkt allemaal heel mooi. :)

Nou werken de Word-sjoblonen met Visual Basic, en daar ben ik niet zo in thuis. Ik ben nu zover dat ik een stukje code heb dat volgens mij met de database connect, en het geeft ook geen foutmeldingen, alleen ik weet nog niet hoe ik de juiste output krijg.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub AutoNew()

With ActiveDocument.MailMerge
    .MainDocumentType = wdFormLetters
    constr = "DSN=Naam;" _
        & "DBQ=C:\blaat\medewerkers.myd;" _
        & "UID=*****;" _
        & "PWD=*****;" _
        & "FIL=MySQL"
   .OpenDataSource Name:="C:\blaat\medewerkers.myd", _
        Connection:=constr, SQLStatement:="SELECT * FROM medewerkers;"
End With

Selection.TypeText (SQLStatement)

End Sub

Die regel met Selection.Typetext zal zo niet werken, daar ben ik me wel van bewust, staat er meer voor de vorm. Want ik weet dus niet wat ik daar in moet vullen. Ook weet ik niet naar welke file ik het pad moet laten verwijzen, MySQL maakt 3 bestanden aan, een .frm, een .myd en een .myi. Maar welke moet ik nou hebben? Alle voorbeelden gebruiken Access-databases. :{

Hmmm, ik kom dr nu achter, als ik de SQL-query vervang door een INSERT-query, geeft ie wel een foutmelding, namelijk
Fout 5922:

Gegevensbron kan niet worden geopend.
Blijkbaar connect ie dus toch niet goed?

Kan iemand me hiermee verder helpen? Thanx alvast. :)

//edit
Hmmmm... als ik dat insert statement gebruik, geeft ie wel die foutmelding, maar toch worden de gegevens in de db toegevoegd. :?

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Ik weet hier ook niet veel van, maar, zou het
code:
1
OpenDataSource
niet vervangen moeten worden door een
code:
1
Execute
of iets in die richting??
Lijkt mij dat
code:
1
OpenDataSource
alleen nuttig is voor het uitvoeren van een query die data terug geeft.

| Life is a game (and games are fun) | homepage |


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Sorry, dubbelpost.
GoT gaat te vaak bij mij hangen sinds die nieuwe engine er onder zit :(

| Life is a game (and games are fun) | homepage |


  • The Dutch Dude
  • Registratie: Juli 2002
  • Laatst online: 10-08 12:57

The Dutch Dude

Haiku Rules!

ten eerste moet de dubbele punt voor de = weg.
Ten tweede: wil je ADO of DAO gebruiken?

Kijk maar eens op www.vbworld.com en de bijbehorende www.vbforums.com daar kun je hele lappen tekst over database connecties in vb vinden...

* The Dutch Dude heeft daar ook z'n 1337 DB skillz geleerd :P ;)

*edit: ik heb het artikel weten te vinden dat ik toendertijd gebruikt had: http://216.26.168.92/vbworld/article.aspx?tag=databases

Overmatig computergebruik heeft mijn fantasie gedood, dus ben ik niet in staat een interessante tekst hierneer te zetten.


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:21
Ik denk ook dat je best eens een tutorial of wat achtergrond informatie leest over databank-toegang in VB.

Een SELECT en een INSERT statement kan je nl. niet mbhv dezelfde functie uitvoeren. Een SELECT returned nl. een aantal rijen, en een insert returnt geen rijen maar wel eventueel hoeveel records er gereturned waren.

https://fgheysels.github.io/


Verwijderd

Als je naar een MySQL database wil connecten, moet je dat niet doen door een file te openen maar door een ODBC connectie te leggen. Daarvoor heb je de MyODBC drivers nodig van http://www.mysql.com/downloads/api-myodbc.html. Verder moet je ADO gebruiken voor een connectiem, en niet DAO, zoals je in het voorbeeldje gebruikt.

Succes :)

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
The Dutch Dude schreef op 17 oktober 2002 @ 10:26:
ten eerste moet de dubbele punt voor de = weg.
Ok, beide dubbele punten weggehaald, nu geeft ie een andere foutmelding, nl.
code:
1
2
3
Fout 5174

Dit bestand kan niet worden gevonden.
Ten tweede: wil je ADO of DAO gebruiken?
Uhhhhmmmm... geen flauw idee, ik dacht dat ADO niet ging werken voor mij (omdat je dan ActiveX compontenten moet installeren op de clients (dacht ik)), maar eerlijk gezegd heb ik dr bar weinig verstand van.

Wat werkt het makkelijkst?
Kijk maar eens op www.vbworld.com en de bijbehorende www.vbforums.com daar kun je hele lappen tekst over database connecties in vb vinden...

* The Dutch Dude heeft daar ook z'n 1337 DB skillz geleerd :P ;)
Jah, die tutorials van Karl Moore :D Die roelen zwaar, vette humor.

Maar als ik dus die 2 dubbele punten weghaal, voegt ie ook niks meer toe aan de database. Uiteindelijk hoeft hij alleen maar gegevens uit te lezen en in het word-document te tonen, maar voor het testen is dit wel makkelijk.

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
whoami schreef op 17 oktober 2002 @ 10:30:
Ik denk ook dat je best eens een tutorial of wat achtergrond informatie leest over databank-toegang in VB.

Een SELECT en een INSERT statement kan je nl. niet mbhv dezelfde functie uitvoeren. Een SELECT returned nl. een aantal rijen, en een insert returnt geen rijen maar wel eventueel hoeveel records er gereturned waren.
het is ook niet de bedoeling dat de output van die INSERT getoond worden, dat was alleen om te kijken of er een verbinding met de database gelegd wordt. :)
Verwijderd schreef op 17 oktober 2002 @ 10:32:
Als je naar een MySQL database wil connecten, moet je dat niet doen door een file te openen maar door een ODBC connectie te leggen. Daarvoor heb je de MyODBC drivers nodig van http://www.mysql.com/downloads/api-myodbc.html. Verder moet je ADO gebruiken voor een connectiem, en niet DAO, zoals je in het voorbeeldje gebruikt.

Succes :)
Die heb ik. Zie "DSN=Naam;".

Maar goed, ik ga dus ADO gebruiken. Ben ik weer wat verder.

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Mmmmwwwaaaaaaaaaaaaaaaarghhh! :(

Get it off, get it off!

* BreadFan |:( :( 8)7

Waarom krijg ik elke keer als ik zo'n stukje code heb:
code:
1
2
    Dim cnnConnection As adodb.connection
    Set cnnConnection = New adodb.connection

de foutmelding "Complileerfout. Een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd."

Ik definieer hem daar toch? :? Of denk ik nou te simpel?

Verwijderd

Slechte foutmelding. VB zegt hier dat hij niet bekend is met het objecttype ADODB.Connection. Je moet daarom een referentie zetten naar de ADO library.

Dat doe je door te klikken op Project -> References en daar uit het lijstje Microsoft ActiveX Data Object 2.x Library aan te vinken en OK te klikken.

Enjoy :)

[ Voor 0% gewijzigd door Verwijderd op 17-10-2002 14:05 . Reden: Toevoeging ... ]


  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Hmmm... oh wacht...

* BreadFan zit in de Visual Basic 6.0 die bij Word2000 zit te proggen

Daar zit geen menuutje Project enzo. Het is voor een Word sjabloon, en als ik later mijn project als macro kan instellen vind ik het ook best. Maar nu zit het al standaard gekoppeld enzo. :) Snappez vous?

Verwijderd

Daar zit het onder Extra -> Verwijzingen
edit:

Nog nooit in Office geprogrammeerd, maar toch binnen een minuut gevonden ... >:)

  • BreadFan
  • Registratie: Oktober 2001
  • Niet online
Verwijderd schreef op 17 oktober 2002 @ 14:37:
Daar zit het onder Extra -> Verwijzingen
edit:
Nog nooit in Office geprogrammeerd, maar toch binnen een minuut gevonden ... >:)
Held :P

Ik heb nu een ander stukkie code, maar dr zit een fout in deze regel:

code:
1
2
Set rsEmployees = .OpenDataSource(Name = "C:\blaat\db.dsn", _
Connection = constr, SQLStatement = "SELECT * FROM medewerkers where username = 'gebruikersnaam';")


Ik krijg de melding dat er een functie of variabele wordt verwacht :?

Verwijderd

Die eerste regel van die 2 heeft een _ aan het eind, wat zoveel betekend als dat het statement op de volgende regel verder moet gaan. Daar begin je echter een nieuwe statement, dus daarom gaat het mis.

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:21
Sorry hoor, maar GoT is geen helpdesk.
IMO mag je wel zelf eens wat opzoekingswerk verrichten. Dit laatste probleem is wel heel erg basic en moet je gewoon in een manual kunnen terugvinden.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.