Hej Deklarerar datatyper explicit:Databas kopplingar
Jag har problem med databas kopplingar i VB6 SP6. Jag vill göra följande:
Koppla upp mig till företagets SQL server, använda en Access databas och ha kontakt med Excel.
Så här ser det ut i Reference förutom de 4 ordinarie:
Microsoft ActiveX Data 2.0 Libary
Microsoft DAO 3.6 Object Libary
Microsoft Data Binding Collection VB6.0 (SP4)
Följande är deklarerat:
Dim dbAccess As Connection
Dim dbSql As Connection
Dim dbExcel As Database
Dim recAccess As Recordset
Dim recSql As Recordset
Dim recExcel As Recordset
Dim strSql As String
Här kommer kopplingarna:
Set dbAccess = New Connection
dbAccess.CursorLocation = adUseClient
dbAccess.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MinAccess\Min.mdb;"
Set recAccess = New Recordset
recAccess.Open "SELECT * FROM Avtal", dbAccess, adOpenStatic, adLockOptimistic
strSql = "SELECT SC01001 AS ArtNr, SC01002 AS Ben1, SC01003 AS Ben2, " & _
"SC01037 AS ProdGrp, SC01038 AS AltGrp, SC01132 AS ENA " & _
"FROM SC010200"
Set dbSql = New Connection
dbSql.CursorLocation = adUseClient
dbSql.Open "PROVIDER=MSDASQL;dsn=MinSql;uid=Jag;pwd=;database=SqlDb;"
Set recSql = New Recordset
recSql.Open strSql, dbSql, adOpenStatic, adLockOptimistic
Set dbExcel = OpenDatabase(Excel.xls, False, False, "Excel 8.0")
Set recExcel = dbExcel.OpenRecordset("Artiklar$")
Allt fungerar fram till Set recExcel där jag får Type mismatch (fliken Artiklar finns i Excelfilen)
Om jag i Reference byter plats på Microsoft ActiveX Data 2.0 Libary och Microsoft DAO 3.6 Object Library fungerar kopplingen till Excel men då får jag ’Invalid use of New keyword’ vid de båda Set dbxxxx = New Connection. Hur kan jag få detta att fungera?
/HåkanSv: Databas kopplingar
Dim dbAccess As ADODB.Connection
Dim dbSql As ADODB.Connection
Dim dbExcel As DAO.Database
Dim recAccess As ADODB.Recordset
Dim recSql As ADODB.Recordset
Dim recExcel As DAO.Recordset
Dim strSql As String
Set dbAccess = New Connection
dbAccess.CursorLocation = adUseClient
dbAccess.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MinAccess\Min.mdb;"
Set recAccess = New Recordset
recAccess.Open "SELECT * FROM Avtal", dbAccess, adOpenStatic, adLockOptimistic
strSql = "SELECT SC01001 AS ArtNr, SC01002 AS Ben1, SC01003 AS Ben2, " & _
"SC01037 AS ProdGrp, SC01038 AS AltGrp, SC01132 AS ENA " & _
"FROM SC010200"
Set dbSql = New Connection
dbSql.CursorLocation = adUseClient
dbSql.Open "PROVIDER=MSDASQL;dsn=MinSql;uid=Jag;pwd=;database=SqlDb;"
Set recSql = New Recordset
recSql.Open strSql, dbSql, adOpenStatic, adLockOptimistic
Set dbExcel = OpenDatabase(Excel.xls, False, False, "Excel 8.0")
Set recExcel = dbExcel.OpenRecordset("Artiklar$")
Bör lösa ditt problem.
Däremot behöver du inte använda DAO. Du har möjlighet att använda ISAM drivrutinerna jenom ADO och Jet providern. Det finns exempel på det på nätet.