ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Pass a filename to a query (https://www.excelbanter.com/excel-programming/285792-pass-filename-query.html)

Mike Fogleman

Pass a filename to a query
 
I am getting a filename from the user with this code, but can't seem to get
it passed to the .CommandText part of the query. Can you point me in the
right direction?


Sub Get_Leak_Data()
Dim filename

Sheets.Add
ActiveSheet.Name = "Database"
Range("A1").Select
fileToOpen = Application _
.GetOpenFilename("Database Files (*.dbf), *.dbf")
filename = Mid(fileToOpen, 9, 7)

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

"ODBC;CollatingSequence=ASCII;DBQ=c:\LES5;DefaultD ir=c:\LES5;Deleted=0;Drive
r={Microsoft dBase Driver (*.dbf)};DriverId=533;FIL=dBase" _
), Array( _
"
5.0;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5 ;SafeTransactions=0;Statis
tics=0;Threads=3;UserCommitSync=Yes;" _
)), Destination:=Range("A1"))
.CommandText = Array( _
"SELECT filename.TESTREAD, filename.TESTFREQ, filename.TESTDATE,
filename.REPFREQ, filename.REPDATE" & Chr(13) & "" & Chr(10) & "FROM
filename filename" & Chr(13) & "" & Chr(10) & "ORDER BY filename.TESTREAD
DESC" _
)
.Name = "Query from CLI Laf"
.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:=False
End With
End Sub



Bill Manville

Pass a filename to a query
 
Mike Fogleman wrote:
.CommandText = Array( _
"SELECT filename.TESTREAD, filename.TESTFREQ, filename.TESTDATE,
filename.REPFREQ, filename.REPDATE" & Chr(13) & "" & Chr(10) & "FROM
filename filename" & Chr(13) & "" & Chr(10) & "ORDER BY filename.TESTREAD
DESC" _
)


filename is a VBA variable and is not known to the database driver that
will be interpreting the SQL SELECT statement.

So you need to get the value of it into the SELECT statement.
Something like this:

.CommandText = Array( _
"SELECT " & filename & ".TESTREAD, " & filename & ".TESTFREQ, " &
filename & ".TESTDATE," & filename & ".REPFREQ," & filename & ".REPDATE" &
Chr(13) & "" & Chr(10) & "FROM " & filename & " " & filename & Chr(13) & ""
& Chr(10) & "ORDER BY " & filename & ".TESTREAD DESC" _
)

You might need "SELECT '" & filename & "'.TESTREAD, '" & filename &
"'.TestFREQ, '" etc.


Bill Manville
MVP - Microsoft Excel, Oxford, England
No email replies please - reply in newsgroup



All times are GMT +1. The time now is 09:19 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com