Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[Resolvido] Data em SQL

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Tov Elen Shau
Manda bem
Manda bem
Mensagens: 173
Registrado em: Qua Mai 17, 2017 2:27 pm

[Resolvido] Data em SQL

Mensagem 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
Editado pela última vez por Tov Elen Shau em Qua Ago 21, 2019 7:53 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Data em SQL

Mensagem por webmaster »

Cada banco de dados reconhece datas de uma forma. Não consegui identificar qual está usando pela connection string.


Tov Elen Shau
Manda bem
Manda bem
Mensagens: 173
Registrado em: Qua Mai 17, 2017 2:27 pm

Re: Data em SQL

Mensagem 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" _
)


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Data em SQL

Mensagem 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" _
)


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Tov Elen Shau
Manda bem
Manda bem
Mensagens: 173
Registrado em: Qua Mai 17, 2017 2:27 pm

[Resolvido] Data em SQL

Mensagem 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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder