Datakilder
Beskrivelse
Datakilder
Querytables
Se teksten efter du har købt kurset
Connection
Hvordan laver man så en connection streng?
Hvordan laver man så en SQL streng?
Og et eksempel
Lav om på udvalge
Øvelse
Querytables
Man kan oprette forbindelse til en ekstern database med QueryTables objekt. QueryTables objektet har en add metode med syntaksen:
QueryTables.Add(Connection, Destination, Sql)
Connection er en tekststreng, der beskriver, hvordan der skal etableres forbindelse til databasen. Destination er en angivelse af, hvor informationerne skal afleveres og Sql er en tekststreng, der beskriver, hvilke informationer, der skal trækkes ud af databasen.
Connection
Som skrevet er Connection en tekststreng - den er temmelig lang og skal være præcis. Her er der et eksempel på sådan en:
ODBC;DSN=MS Access 97 Database;DBQ=C:\Program Files\Microsoft Office\ Office\Samples\Northwind.mdb;DefaultDir=C:\Program Files\Microsoft Office\ Office\Samples;DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;
ODBC står for Open DataBase Connectivity. Mange databaser bruger ODBC drivere til at give andre programmer adgang til deres data.
DNS står for Data Source Name
DBQ er sti og navn på den database du vil etablere forbindelse til.
Hvordan laver man så en connection streng?
En hurtig vej til en connection streng er at oprette en QueryTable manuelt og tage et kig på Connection strengen. Processen er følgende:
- I et almindeligt regneark oprettes en forbindelse til databasen via Data | Get External Data | Create new query
- Skift til VBA editoren
- I Immediate vinduet kan du nu skrive
?sheet1.Querytables(1).Connection (arbejder du i DK versionen skal du skrive ark1 i stedet for sheet1)
- Og du vil se Connection strengen, som du så kan copy-paste ind i din kode
Hvordan laver man så en SQL streng?
Ja, det gør man på samme måde!
?sheet1.querytables(1).commandtext eller ?sheet1.querytables(1).sql (arbejder du i DK versionen skal du skrive ark1 i stedet for sheet1)
Og et eksempel
Sub LavQT() Dim sConn As String Dim sSql as String Dim oQt as QueryTable sConn = "ODBC;DSN=MS Access 97 Database;" sConn = sConn & "DBQ=C:\Program Files\Microsoft Office\ "& _ "Office\Samples\Northwind.mdb; "& _ "DefaultDir=C:\Program Files\Microsoft Office\Office\Samples; "& _ "DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"& _ sSql = "SELECT Customers.CustomerID, Customers.CompanyName, Customers.City "& _ "FROM `C:\Program Files\Microsoft Office\Office\Samples\Northwind` "& _ ".Customers Customers "& _ "WHERE (Customers.City='Berlin') "& _ "ORDER BY Customers.CompanyName"& _ Set oQt = ActiveSheet.QueryTables.Add( _ Connection:=sConn, _ Destination:=Range("a1"), _ Sql:=sSql) oQt.Refresh End Sub Lad være med at bruge makro optageren til dette - det bliver slet ikke til at overskue.
Lav om på udvalget
Man kan ændre en querytables udvalg ved ganske enkelt at ændre dens commandtekst:
Sub qry() Sheet1.QueryTables(1).CommandText = _ "SELECT Salg.ID, Salg.Fakturanr, Salg.Dato, Salg.Kundenr, Salg.Firma, Salg.Sælger, Salg.Gruppe, Salg.Model, Salg.`Stk pris`, Salg.Antal, Salg.Total " & _ "FROM `N:\Tekster\Dumps\salg`.Salg Salg " & _ "WHERE (Salg.Gruppe LIKE '%" & Range("M1").Value & "%') " & _ "ORDER BY Salg.Kundenr" Sheet1.QueryTables(1).Refresh
Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →