Gå til innhold

egendefinerte variabler inn Macro-generert spørri


Anbefalte innlegg

Hi!

Jeg ønsker å bruke egen variabler i en autgenerert/makrogenerert/wizardgenerert spørring som blir kjørt fra excel mot access

 

 

Her er koden

 

//////////////////////////////////////////////////

 

Sub first_home()

'

' first_home Macro

' Macro recorded 22.06.2005 by Magnus

'

 

 

Dim conString As String

conString = "C:\Documents and Settings\Eier\Mine dokumenter\db2"

MsgBox conString

'

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _

"ODBC;DSN=MS Access Database;DBQ=C:\Documents and Settings\Eier\Mine dokumenter\db2.mdb;DefaultDir=C:\Documents and Settings\Eier\Min" _

), Array( _

"e dokumenter;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;")), _

Destination:=Range("Insert"))

.CommandText = Array("SELECT Addresses.AddressID, Addresses.City, Addresses.AccountName" & Chr(13) & "" & Chr(10) & "FROM _

 

 

***********************************************************

I denne delen vil jeg bruke variabelen jeg har kalt conString (deklarert og

initialisert over)

***********************************************************

 

 

_ .Addresses Addresses" & Chr(13) & "" & Chr(10) & "WHERE (Addresses.AddressID=2)")

.Name = "Query from MS Access Database"

.FieldNames = True

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.BackgroundQuery = True

.RefreshStyle = xlInsertDeleteCells

.SavePassword = True

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.PreserveColumnInfo = True

.Refresh BackgroundQuery:=True

End With

End Sub

 

Spørsmålet

 

 

 

jeg får hele tiden runtime error 1004 hvis jeg skriver "conString" eller 'conString"

Er det i det hele tatt mulig å putte inn egen variabler i en query wizard generert spørring?

 

Noen forslag?

 

Magnus

Lenke til kommentar
Videoannonse
Annonse

Jeg antar du ønsker å benytte variabelen conString som en metode å spesifisere filnavnet til databasen det skal gjøres en tilknytning til. Ennvidere tror jeg du har støtt på problematikk ved markogeneratorens anvendelse av arrayer - en anvendelse jeg ikke helt ser helt nytten av. Dette kan uansett fint omgås ved å lage tilkoblingsstrengen således:

 

    Dim sFile As String, conString As String, sSQL As String

 

    ' Filstien til databasen som skal åpnes

    sFile = "C:\Documents and Settings\Eier\Mine dokumenter\db2.mdb" ' Husk at etternavnet til filen må inkluderes

 

    ' Følgende kode genererer tilkoblingsstrengen

    conString = "ODBC;DSN=MS Access 97 Database;"

    conString = conString & "DBQ=" & sFile & ";"

    conString = conString & "DefaultDir=" & Left(sFile, InStrRev(sFile, "\") - 1) & ";"

    conString = conString & "DriverId=281;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"

 

Etter dette må du lage SQL-spørringen:

 

    ' Lag SQL-strengen

    sSQL = "SELECT Addresses.AddressID, Addresses.City, Addresses.AccountName" & vbNewLine

    sSQL = sSQL & "FROM .Addresses Addresses" & vbNewLine

    sSQL = sSQL & "WHERE (Addresses.AddressID=2)"

 

Hvorpå du kan kalle Add-funksjonen (linjene makrogeneratoren inkluderer videre er standardverdier, og trengs ikke endres):

 

ActiveSheet.QueryTables.Add sConn, Range("Insert"), sSql

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...