Avatar billede komputerdk Mester
23. april 2009 - 12:01 Der er 1 løsning

Sql server data til excel via vba

Hej. Jeg har før brugt pivot til at importere data fra en sql server 2000. Problemet med det er at excel laver fejl i pivoten , data er rigtig men det som pivoten visesi er forkert (ca 300k rækker).
Derfor har jeg kodet det sådan at jeg via en access database som har linket tabellerne op via odbc henter data hvor jeg bruger kriterierne fra arket.
Det virker også fint , men jeg ville gerne hente data mere smart (og vigtigst at data altid er 100% korrekt). Jeg har forestillet mig man kunne
1. Hente data via odbc hvor den henter brugerinfo fra windows login. Ikke optimalt da nogle skal tilgå data uden for domænet , men stadig i netværket.
2. En forbindelse til serveren hvor det kun kræves at man er i netværket (jeg laver en brugerkonto på sqlserveren) , så må jeg kode brugerstyringen i excel.

Der findes sikkert andre måder , og de er også velkomne.
Avatar billede komputerdk Mester
07. august 2009 - 00:33 #1
fandt løsningen selv..

husk at lave reference til microsoft activex data objects 2.8 lib..
Dim MyCon As New ADODB.Connection
Dim RS As New ADODB.Recordset 'til de data vi trækker ud fra recordsettet


Dim ConStr As String
Dim SQL As String
Dim y As Integer
'ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\database.mdb;Persist Security Info=False" 'Databasen vi bruger
'MyCon.ConnectionString = ConStr

'Ovenstående er koblet til Database - ikke server
ConStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI; Initial Catalog=DATABASENAVN;Data Source=IPNR;Persist Security Info=False" 'Databasen vi bruger
      MyCon.ConnectionString = ConStr

SQL = "SELECT felt1 as Feltnavn FROM tabel " _ & 'husk mellemrum
"WHERE ((tabel.feltnavn) like '" & Variabel & "' or like %)"
'obs wildcard er % og ikke * som i access.

'Fylder data
MyCon.Open 'åbner connection
       
RS.Open SQL, MyCon, adOpenDynamic 'åber sql'en

x = 0 'så vi er sikker på at vi start med 0

Do Until RS.EOF ' gør indtil der ikke er flere records med data

Cells(8, x + 4).Value = RS.Fields("Feltnavn") 'man kan også bruge 0-xx i reference, så kolonne 1 = 0 etc.


RS.MoveNext 'går videre til næste række
x = x + 1 'tæller til rækkenr
Loop


MyCon.Close
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester