Bra Utbildning AB

 

<-- Back
VBA & Objektmodeller
Arbeta med text
Bokmärken
Range
Fält
Formulärfält
Autotext
Doc var & Doc Prop
Words kommandon
Words dialogrutor
Automation
Externa Databaser

Arbeta med data i externa databaser


Exempel på koppling mot databas med hjälp av Microsoft DAO (Data Access Object). Referens måste sättas till korrekt objektbibliotek/applikation i Verktyg- Referenser (Tools-References). I exemplet nedan väljs DAO 3.6 eller DAO 3.5.




Det är också möjligt att sätta referenser via kod, vilket gör det möjligt att sätta referenser vid exekvering. Som exempel kan nämnas DAO där kontroll bör ske om användaren har DAO 3.6, 3.5/3.51 eller 2.5. 

Från och med Office 2000 har Microsoft valt ADO (se nedan som standard) för dataåtkomst.

Dim db As DAO.Database
Dim dbrs As DAO.Recordset
Dim strSQL As String
Dim strFile As String

strFile = "c:\Data\Personal.mdb"
strSQL = "SELECT * FROM tblExtras;"

Set db = OpenDatabase(strFile)
Set dbrs = db.OpenRecordset(strSQL)

'gör något med hämtade uppgifter

Do While Not dbrs.EOF
      Debug.Print dbrs.Fields(1).Value
      Debug.Print dbrs!Fakturabelopp
      dbrs.MoveNext
Loop

dbrs.Close
db.Close

Set dbrs = Nothing
Set db = Nothing



Exempel på koppling mot databas med hjälp av Microsoft ADO (ActiveX Data Object). Referens satt till korrekt objektbibliotek/applikation i Verktyg- Referenser (Tools-References). Beträffande ADO finns det många metoder att utföra samma åtgärd. Detta är två exempel och samma sak kan utföras på fler sätt. En bra referens är någon av ADO referensböckerna från t.ex. förlaget Wrox.

Exempel 1 - Access-databas, namngiven i kod

Dim
cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strConnect As String

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
strConnect = strConnect & "Data Source=c:\Data\Personal.mdb;"
strConnect = strConnect & "Persist Security Info=False"

Set cnn = New ADODB.Connection
cnn.Open strConnect
Set rst = cnn.Execute("SELECT * FROM tblExtras")

' gör något med data i recordset, t.ex
Do Until rst.EOF
      Debug.Print rst.Fields(1).Value
      Debug.Print rst!Fakturabelopp
      rst.MoveNext
Loop

rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing

Exempel 2 - Koppling via DSN
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strSQL As String

strSQL = "SELECT * FROM tblExtras"
Set cnn = New ADODB.Connection
cnn.Open "DSN=SQL_HR_DB;UID=sa;pwd=;"
Set rst = conADO.Execute(strSQL)

'gör något med data i recordset

rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing