Página 1 de 1

[Resolvido] Data em SQL

Enviado: Ter Ago 20, 2019 2:14 pm
por Tov Elen Shau
Pessoal
Estou fazendo uma busca em SQL de um banco de dado externo, mas estou com dificuldade para trabalhar com a data. Armazenei a data em uma variável, mas não consigo fazer o SQL reconhece. Algum me ajuda com essa data?
Segue código
Sheets("Caixa").Select
Columns("A:G").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select

Data_i = Sheets("Config").Range("B11").Value
Data_i2 = Format(Data_i, "dd-mm-yyyy") 'Data inicial
Data_f = Sheets("Config").Range("B12").Value
Data_f2 = Format(Data_f, "dd-mm-yyyy") 'Data final

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=Contabil;UID=USERX;;DatabaseName=Contabil;ServerName=srvContabil;AutoStop=YES;Integrated=NO;Encryption=NONE;CommLinks='TCP" _
), Array("IP{IP=XEMPRESA-server}';Description=Contabil")), Destination:=Range( _
"$A$1")).QueryTable
.CommandText = Array( _
"SELECT ctlancto.codi_emp, ctlancto.codi_lote, ctlancto.data_lan, ctlancto.cdeb_lan, ctlancto.ccre_lan, ctlancto.chis_lan, ctlancto.vlor_lan" & Chr(13) & "" & Chr(10) & "FROM bethadba.ctlancto ctlancto" & Chr(13) & "" & Chr(10) & "WHERE (ctlancto.codi_emp=3" _
, _
"92) AND (ctlancto.data_lan>= Data_i2 And ctlancto.data_lan<= Data_f2) AND (ctlancto.cdeb_lan=1)" & Chr(13) & "" & Chr(10) & "ORDER BY ctlancto.data_lan, ctlancto.codi_lote" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Tabela_Consulta_de_Contabil6"
.Refresh BackgroundQuery:=False
End With
Range("Tabela_Consulta_de_Contabil6[[#Headers],[codi_emp]]").Select


Grato

Tov Elen Shau

Re: Data em SQL

Enviado: Ter Ago 20, 2019 4:20 pm
por webmaster
Cada banco de dados reconhece datas de uma forma. Não consegui identificar qual está usando pela connection string.

Re: Data em SQL

Enviado: Ter Ago 20, 2019 4:25 pm
por Tov Elen Shau
Tomas, da maneira abaixo ele reconhece a data e faz a busca sem apresentar erros, entretanto eu preciso que a data seja alterada de acordo com a informada na célula.

Array( _
"SELECT ctlancto.codi_emp, ctlancto.codi_lote, ctlancto.data_lan, ctlancto.cdeb_lan, ctlancto.ccre_lan, ctlancto.chis_lan, ctlancto.vlor_lan" & Chr(13) & "" & Chr(10) & "FROM bethadba.ctlancto ctlancto" & Chr(13) & "" & Chr(10) & "WHERE (ctlancto.codi_emp=3" _
, _
"92) AND (ctlancto.data_lan>={d '2019-01-01'} And ctlancto.data_lan<={d '2019-01-15'}) AND (ctlancto.cdeb_lan=1)" & Chr(13) & "" & Chr(10) & "ORDER BY ctlancto.data_lan, ctlancto.codi_lote" _
)

Re: Data em SQL

Enviado: Ter Ago 20, 2019 10:16 pm
por Reinaldo
Experimente:
Formate sua variavel data como ano mes dia

Código: Selecionar todos

Data_i = Sheets("Config").Range("B11").Value 
Data_i2 = Format(Data_i, "yyyy-mm-dd") 'Data inicial
Data_f = Sheets("Config").Range("B12").Value
Data_f2 = Format(Data_f, "yyyy-mm-dd") 'Data final
inclua na query a variavel entre {d ' variavel'}
algo +/- assim:
[code]Array( _
"SELECT ctlancto.codi_emp, ctlancto.codi_lote, ctlancto.data_lan, ctlancto.cdeb_lan, ctlancto.ccre_lan, ctlancto.chis_lan, ctlancto.vlor_lan" & Chr(13) & "" & Chr(10) & "FROM bethadba.ctlancto ctlancto" & Chr(13) & "" & Chr(10) & "WHERE (ctlancto.codi_emp=3" _
, _
"92) AND (ctlancto.data_lan>={d '" &  Data_i2 & "'} And ctlancto.data_lan<={d '" &  Data_f2 & "'}) AND (ctlancto.cdeb_lan=1)" & Chr(13) & "" & Chr(10) & "ORDER BY ctlancto.data_lan, ctlancto.codi_lote" _
)

[Resolvido] Data em SQL

Enviado: Qua Ago 21, 2019 7:51 am
por Tov Elen Shau
Agora deu certo!!! Valeu Tomás e Reinaldo. Eu tinha tentando opções bem próximas, mas não havia adiciona o & {d '" & Data_i2 & "'}. Vocês são tipo os Chuck Norris do VBA!

Grato

Tov Elen Shau