webForumDet fria alternativet

vb + access = ?

6 svar · 309 visningar · startad av Kajsa

KajsaMedlem sedan apr. 20037 inlägg
#1

Hej

Lätt fråga kanske, men hur kopplar man access databas till vb aplikation?

mrblondeMedlem sedan aug. 20011 386 inlägg
#2

vad skall du göra? Det är lätt att skapa en koppling, men vad du ska göra sen är en annan fråga.

Här finns lite tips: http://www.able-consulting.com/MDAC/ADO/Connection/ODBC_DSNLess.htm#ODBCDriverForAccess

Engine^Medlem sedan dec. 20002 861 inlägg
#3
Dim adoConn As New ADODB.Connection
Dim strConn As String

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[i]sökvägen + databasnamn[/i]"

adoConn.Open strConn [blue]'Så, nu har du en anslutning till en accessdatabas...[/blue]

Dim rsObj As New ADODB.RecordSet
Dim strSQL As String

strSQL = "SELECT * FROM [i]tabell[/i]"

rsObj.Open strSQL, adoConn [blue]'Ett recordset förhoppningsvis...
  .
  .
  .[/blue]
Set rsObj = Nothing
Set adoConn = Nothing

Det finns givetvis massor att läsa om detta ämne. Förslagsvis på MSDN: ADO API Reference

KajsaMedlem sedan apr. 20037 inlägg
#4

Tack för hjälpen! Det funkade.

Nu kommer min nästa fråga :r

När jag hämtar saker och ting ur databasen vill jag presentera det i en listbox tex. Det funkar att visa info i en label, men inte i en listbox. Vad gör jag för fel?

@ndersMedlem sedan juni 200026 914 inlägg
#5

Om du visar din kod, så blir det lättare att se vad du gör galet.

(välkommen till wF också!)

mvh,

KajsaMedlem sedan apr. 20037 inlägg
#6

Tack så mycket!

Jo, jag har gjort så som Engine^ skrev ovan och det gick bra.

Sen har jag försökt hämta en kolumn i en db med:

i = rsObj.GetString

Eller hur gör man när man vill hämta rad för rad i ur db:n Skall jag köra nån slags for-loop?

I java finns ju getNext (?) eller när man loopar i en array eller liknande... men jag är ju som sagt novis inom vb:n

Engine^Medlem sedan dec. 20002 861 inlägg
#7

Lite enklare om du hämtar med kolumnens namn

Set rsObj = adoConn.Execute("SELECT [i]kolumn1, kolumn2[/i] FROM [i]tabell[/i] WHERE [i]kolumn1[/i] = 'Hallon'", , 1)
[blue]Ovan är (i stort sett) samma som
rsObj.Open "SELECT [i]kolumn1, kolumn2[/i] FROM [i]tabell[/i] WHERE [i]kolumn1[/i] = 'Hallon'", adoConn[/blue]

Dim strValue As String [blue]'om [i]kolumn1[/i] innehåller strängar...
While Not rsObj.EOF
  strValue = rsObj("[i]kolumn1[/i]")

  rsObj.MoveNext
Wend

Skillnaden mellan att använda connection.Execute och recordset.open är att med connection så returneras endast ett recordset med read-only, forward-only. Behöver du göra förändringar i ditt recordset bör du använda recordset.open med de nödvändiga egenskaperna.

red. Lite mer att läsa om Execute, Requery and Clear Methods

Genererad på 357 ms · cache AV · v20260730165559-full.f96bc7eb