Notifications
Clear all

Formulário Alterar Período Query

5 Posts
2 Usuários
0 Reactions
823 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom tarde

Estou com problemas para alterar Data Inicial e Final Consulta Query

Gerada pelo assistente

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=nome_em_branco;Driver=Firebird/InterBase(r) driver;Dbname=C:DadosDados28BANCO.fdB;CHARSET=NONE;;UID=SYSDBA;Client=C:Win" _
), Array("dowsSysWOW64GDS32.DLL;")), Destination:=Range("$A$1")).QueryTable
.CommandText = Array( _
' "SELECT CLIENTES.CODCLI, CLIENTES.EMPRESA, CONTAS_RECEBER.CONTRATO, CONTAS_RECEBER.EMISSAO, CONTAS_RECEBER.VALOR" & Chr(13) & "" & Chr(10) & "FROM CLIENTES CLIENTES, CONTAS_RECEBER CONTAS_RECEBER" & Chr(13) & "" & Chr(10)
& "WHERE CONTAS_RECEBER.CODCLI = CLIENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>={d '2012-08-01'}) AND (CONTAS_RECEBER.EMISSAO<={d '2012-08-31'}))" _
)

quero alterar Datas

Data1 = Format(Me!txtDataIni.Text, "yyyy-mm-dd")
Data2 = Format(Me!txtDataFim.Text, "yyyy-mm-dd")

& "WHERE CONTAS_RECEBER.CODCLI = CLIENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>= # " & Data1 & "#) AND (CONTAS_RECEBER.EMISSAO<= #" & Data2 & "#))")

no aguardo

Ivair Pires

 
Postado : 10/11/2012 11:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aparentemente vc montou a clausa coerentemente, porem não conheço o Firebird e o que me chama atenção é o modo como o paramentro foi passado inicialmente " {d '2012-08-01'} "; ou seja a data como string porem precedida da letra d e entre chaves.Talvez deva ser:
& "WHERE CONTAS_RECEBER.CODCLI = CLIENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>=" & "{d '" & Data1 & "'}) AND (CONTAS_RECEBER.EMISSAO<=" & "{d '" & Data2 & "'})"

ira retornar algo como:
WHERE CONTAS_RECEBER.CODCLI = CLIENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>={d '2012-10-20'}) AND (CONTAS_RECEBER.EMISSAO<={d '2013-12-25'})

 
Postado : 10/11/2012 11:26 am
(@hronconi)
Posts: 314
Reputable Member
 

Ivair,

Tente inserir as suas variáveis de data seguindo este exemplo e adaptando ao seu projeto (no caso abaixo vai pegar data inicial e final do mês corrente):

Option Explicit
Sub teste()
Dim yearToMonthEnd As Date
Dim yearToMonth As Date
Dim stra As String
yearToMonth = DateAdd("yyyy", 0, Date)
yearToMonth = DateAdd("d", -(Day(Now())) + 1, yearToMonth)
yearToMonthEnd = DateAdd("m", 1, yearToMonth)
yearToMonthEnd = DateAdd("d", -1, yearToMonthEnd)
stra = "O período selecionado é " & yearToMonth & " até " & yearToMonthEnd

MsgBox stra

End Sub

Me diga se resolveu.

Abraço,

Henrique

 
Postado : 10/11/2012 11:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não Funcionou tipo incompatíveis pois agora ele esta como Data, quando coloco string ele passa só da erro no
.Refresh BackgroundQuery:=False

 
Postado : 10/11/2012 11:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 
Private Sub btGerarReceber_Click()
    Data1 = Format(Me!txtDataIni.Text, "yyyy-mm-dd")
    Data2 = Format(Me!txtDataFim.Text, "yyyy-mm-dd")

    Sheets("Parametros").Select
    Range("b2") = txtDataIni.Text
    Range("b3") = txtDataIni.Text
    Sheets("Plan2").Select
    Columns("A:e").Select
    Selection.ListObject.QueryTable.Delete
    Selection.ClearContents
    '   With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
    '       "ODBC;DSN=nome_em_branco;Driver=Firebird/InterBase(r) driver;Dbname=C:DadosDados28BANCO.fdB;CHARSET=NONE;;UID=SYSDBA;Client=C:Win" _
    '       ), Array("dowsSysWOW64GDS32.DLL;")), Destination:=Range("$A$1")).QueryTable
    '       .CommandText = Array( _
    '       "SELECT CLIENTES.CODCLI, CLIENTES.EMPRESA, CONTAS_RECEBER.CONTRATO, CONTAS_RECEBER.EMISSAO, CONTAS_RECEBER.VALOR" & Chr(13) & "" & Chr(10) & "FROM CLIENTES CLIENTES, CONTAS_RECEBER CONTAS_RECEBER" & Chr(13) & "" & Chr(10) & "WHERE CONTAS_RECEBER.CODCLI = CL" _
    '       , _
    '       "IENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>={d '2012-08-01'}) AND (CONTAS_RECEBER.EMISSAO<={d '2012-08-31'}))" _
    '       )
  With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
    "ODBC;DSN=nome_em_branco;Driver=Firebird/InterBase(r) driver;Dbname=C:DadosDados28BANCO.fdB;CHARSET=NONE;;UID=SYSDBA;Client=C:Win" _
     ), Array("dowsSysWOW64GDS32.DLL;")), Destination:=Range("$A$1")).QueryTable
     .CommandText = Array("SELECT CLIENTES.CODCLI, CLIENTES.EMPRESA, CONTAS_RECEBER.CONTRATO, CONTAS_RECEBER.EMISSAO, CONTAS_RECEBER.VALOR" & Chr(13) & "" & Chr(10) & "FROM CLIENTES CLIENTES, CONTAS_RECEBER CONTAS_RECEBER" & Chr(13) & "" & Chr(10) _
     & "WHERE CONTAS_RECEBER.CODCLI = CLIENTES.CODCLI AND ((CONTAS_RECEBER.EMISSAO>= # " & Data1 & "#) AND (CONTAS_RECEBER.EMISSAO<= #" & Data2 & "#))")
     .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_ConsultaR"
     .Refresh BackgroundQuery:=False
  End With
    frmContasReceber.Hide
End Sub
 
Postado : 10/11/2012 11:54 am