I am just starting to learn VBA and trying to get data from an ODBC database using a select with a date parameter. This following statement was created by using microsoft query and it works fine:VBA Code: Sub Macro1() ' ' Macro1 Macro ' ' With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _ "ODBC;DSN=hist;UID=OSI;PWD=OSIOSI;DBQ=HIST;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;" _ ), Array("CSR=F;FWC=F;PFC=10;TLO=0;")), Destination:=Range("$A$1")).QueryTable .CommandText = Array( _ "SELECT DATA_VALUES_5MIN_12_2009.TIME, DATA_VALUES_5MIN_12_2009.OSI_KEY, DATA_VALUES_5MIN_12_2009.DATA_TYPE, DATA_VALUES_5MIN_12_2009.VALUE" & Chr(13) & "" & Chr(10) & "FROM OSI.DATA_VALUES_5MIN_12_2009 DATA_VALUES_5MIN_12_2009" & Chr(13) & "" & Chr(10) & "" _ , _ "WHERE (DATA_VALUES_5MIN_12_2009.DATA_TYPE=1)and (DATA_VALUES_5MIN_12_2009.TIME>{ts '2009-12-08 00:00:00'}) AND (DATA_VALUES_5MIN_12_2009.OSI_KEY='03057174')" _ ) .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = "Table_Query_from_hist" .Refresh BackgroundQuery:=False End With End Sub
I am trying to make the date a variable and modified the query as shown:VBA Code: Sub Macro1() ' ' Macro1 Macro ' Dim datepick As Date datepick = Range("L1").Value = Format("mm/dd/yyyy hh:mm:ss am/pm") Debug.Print datepick With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _ "ODBC;DSN=hist;UID=OSI;PWD=OSIOSI;DBQ=HIST;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;" _ ), Array("CSR=F;FWC=F;PFC=10;TLO=0;")), Destination:=Range("$A$1")).QueryTable .CommandText = Array( _ "SELECT DATA_VALUES_5MIN_12_2009.TIME, DATA_VALUES_5MIN_12_2009.OSI_KEY, DATA_VALUES_5MIN_12_2009.DATA_TYPE," _ , _ "DATA_VALUES_5MIN_12_2009.VALUE" & Chr(13) & "" & Chr(10) & "FROM OSI.DATA_VALUES_5MIN_12_2009 DATA_VALUES_5MIN_12_2009" & Chr(13) & "" & Chr(10) & "" _ , _ "WHERE (DATA_VALUES_5MIN_12_2009.DATA_TYPE=1) and (DATA_VALUES_5MIN_12_2009.TIME> datepick)" _ , _ "AND (DATA_VALUES_5MIN_12_2009.OSI_KEY='03057174')" _ ) Debug.Print datepick .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = "Table_Query_from_hist" .Refresh BackgroundQuery:=False End With End Sub
Can somebody provide some solution to this problem? Thanks Also, once i get the data that i need i will need to create a pivot table to show the data that i need. Can i use the transform function instead? Posted by rhawk204 on 11-Dec-2009
There are currently no replies to the "Trouble with VBA query using date with ODBC" topic of the Excel Help Forum for Automating Data Analysis Tasks.Reply