Hoe maak ik een databaseconnectie?

Status
Niet open voor verdere reacties.

Dilophosaurus R

Gebruiker
Lid geworden
10 dec 2008
Berichten
21
Ik moet proberen een Access Database aan Visual Basic te koppelen, maar ik heb geen flauw idee hoe ik dit moet doen. Ik heb al een aantal stukken code van internet gebruikt, maar die werkten geen van allen.

Ik zou heel erg blij zijn met een voorbeeldcode of een link naar een tutorial.
 
Ik moet proberen een Access Database aan Visual Basic te koppelen

Geen flauw idee wat je hiermee bedoeld. Kun je dit wat nader toelichten.
 
Wil je dat vanuit Word of Excel doen ?
 
Ik moet een databaseconnectie maken tussen een .mdb bestand en Visual Basic. Dit moet vanuit Visual Basic.

Het is de bedoeling dat de gegevens in de database in de Form in Visual Basic komen te staan, en dat er records toegevoegd/verwijderd/aangepast kunnen worden enzo.
 
Hieronder een voorbeeld:

Maak een ACCESS database in C:\ met naam "dbVoorbeeld.mdb".
Maak daarin een tabel met naam "tblLeden". Die tabel moet volgende velden bevatten:
id (autonummering, primaire sleutel)
naam (tekst)
voornaam (tekst)
Vul een paar records in, en sluit ACCESS af.

Open VB6.0 en start een nieuw exe-project.
Maak een verwijzing naar DAO 3.6 (menubalk project > references > "Microsoft DAO 3.6 Object Library" aanvinken > OK)
Plaats een label met naam "lblLeden" in de linkerbovenhoek van je formulier en geef het een width van bvb 3000 en een height van bvb 2000.
In het codevenster van je formulier plaats je onderstaande code:
Code:
Option Explicit
Private Sub Form_Load()
Dim oDB As DAO.Database, oRS As DAO.Recordset, sLeden As String
Set oDB = OpenDatabase("C:\dbVoorbeeld")
Set oRS = oDB.OpenRecordset("SELECT * FROM tblLeden ORDER BY naam")
While Not oRS.EOF
  sLeden = sLeden + oRS("naam") + " " + oRS("voornaam") + vbCrLf
  oRS.MoveNext
Wend
lblLeden.Caption = sLeden
oRS.Close
oDB.Close
Set oRS = Nothing
Set oDB = Nothing
End Sub
En runnen maar...
Als alles goed is, moet je nu de namen zien staan die je eerder in je DB ingevuld had!
 
Heel erg bedankt, JHx. Die code van jou werkte prima.

Nu heb ik nog enkele andere problemen.

Ik moet een knop toevoegen waarmee ik in de ListBox kan zoeken naar iets wat in de zoekbox is ingetypt.

Bijvoorbeeld: Ik typ in de zoekbox (gewoon een textbox) in "x" bijvoorbeeld, en dan blijven alle records met "x" erin in de ListBox staan zodra er op de knop gedrukt wordt.
 
Heb je het voorbeeldje uit vorig bericht nog?

Verwijder het label van het formulier.
Plaats een listbox met naam "lstLeden"
Plaats een textbox met naam "txtZoek"
Plaats een knop met naam "cmdZoek"
Verwijder alle code in het codevenster en vervang door dit:
Code:
Option Explicit
Private Sub cmdZoek_Click()
Dim oDB As DAO.Database, oRS As DAO.Recordset
  Set oDB = OpenDatabase("C:\dbVoorbeeld")
  Set oRS = oDB.OpenRecordset("SELECT tblLeden!naam+' '+tblLeden!voornaam AS VolledigeNaam FROM tblLeden WHERE tblLeden!naam+' '+tblLeden!voornaam LIKE '*" + txtZoek.Text + "*' ORDER BY naam,voornaam;")
  lstLeden.Clear
  While Not oRS.EOF
    lstLeden.AddItem oRS("VolledigeNaam")
    oRS.MoveNext
  Wend
  oRS.Close
  oDB.Close
  Set oRS = Nothing
  Set oDB = Nothing
End Sub
 
Laatst bewerkt:
Alweer bedankt.

Nu moet ik nog een knop maken die een nieuwe naam aan de ListBox toevoegt. Dat krijg ik wel voor elkaar, maar ik moet ook nog de gegevens ervan op kunnen slaan.

Ik heb een database over videogames, en de namen van de games staan in de ListBox. Als je op een van de namen klikt, krijg je informatie zoals het releasejaar, platform, genre etc in aparte TextBoxes.

Nu is de bedoeling dat nadat de nieuwe naam is gemaakt, dat de informatie ervan in die textboxes ingetypt wordt en opgeslagen worden, zodat je als je weer op die naam klikt, de informatie terugkomt.

Kan iemand mij hiermee helpen?
 
Laatst bewerkt:
Je moet niet eerst de naam aan de listbox toevoegen! Je moet dadelijk de nieuwe record in de database opslaan, en dan de inhoud van de listbox vernieuwen zodat die de actuele gegevens weergeeft.
Een nieuwe record aan de database toevoegen doe je met hetzelfde princiepe als hiervoor. Enkel de SQL-string is anders. In plaats van een SELECT gebruik je nu een INSERT
Code:
INSERT INTO tabelnaam (veldnaam1,veldnaam2,veldnaam3,....) VALUES ('waarde1','waarde2','waarde3', ....)
Je kan dus in één keer de naam van de videogame samen met de bijbehorende gegevens opslaan.

Ook het aanpassen van gegevens in de database werkt precies hetzelfde, maar dan met een UPDATE
Code:
UPDATE tabelnaam SET veldnaam1='waarde1', veldnaam2='waarde2', veldnaam3='waarde3', .... WHERE ......
Zorg er daarbij voor dat de WHERE-clausule enkel de gewenste record oplevert; de wijzigingen zullen doorgevoerd worden op elke record die overeen komt met die WHERE

Ik zou zeggen: probeer het met deze informatie eerst eens zelf te maken... lukt het niet, laat dan eens zien wat je hebt, en dan help ik je daarmee weer verder :thumb:

PS: misschien kan een MOD deze thread verplaatsen naar 'Programmeren > Visual Basic'
 
Verplaatst. Als later blijkt dat het toch niet de goede sectie is een mailtje voldoende om het recht te zetten. :thumb:
 
Toevoegen van records en updaten van records?

Oke, ik zal eens laten zien wat ik heb.

Ik gebruik dit om een databaseconnectie te maken:

Code:
Dim conndb As New ADODB.Connection
Dim recs As New ADODB.Recordset
Dim sqls As String

Code:
Private Sub Form_Load()
With conndb
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =  Videogames.mdb "
        .Open
End With

sqls = "SELECT Titel  FROM Game ORDER BY Titel"
recs.Open sqls, conndb
If recs.EOF Or recs.BOF Then
    MsgBox ("No Match Found ")
Else
    Do While Not recs.EOF
        Videogames.AddItem (recs.Fields(0))
        recs.MoveNext
    Loop
End If
recs.Close
End Sub

Bovenstaande code werkt goed.

Nu heb ik jouw code voor een nieuwe record toevoegen geprobeerd te gebruiken, maar die werkt niet.

Code:
INSERT INTO Game (Titel,Platform,Genre,Jaar,Rating) VALUES ('NaamBox.Text','PlatformBox.Text','GenreBox.Text','ReleasejaarBox.Text','RatingBox.Text')

Ik krijg dan de melding: expected end of statement.

Bij de updatecode krijg ik ook een foutmelding.

Code:
UPDATE Game SET Titel='NaamBox.Text', Platform='PlatformBox.Text', Genre='GenreBox.Text', Jaar='ReleasejaarBox.Text', Rating='RatingBox.Text WHERE Titel = 'NaamBox.Text'

Weer krijg ik expected end of statement.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan