PROBLEMAS COM CONSULTA INTERVALO DE DATAS

SLIPACK 25/12/2012 12:22:00
#416383
tenho esse código e não está funcionando, alguem pode me ajudar? da um erro de sintaxe na data na expressão de consulta

Dim banco As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim instsql As String
Dim D1, D2 As Date

D1 = CDate(TxtData1)
D2 = CDate(TxtData2)

instsql = [Ô]SELECT * from entradas where dia between # & (D1) & # and # & (D2) & # ORDER BY id ASC[Ô]
rst.Open instsql, banco, adOpenDynamic, adLockOptimistic
NILSONTRES 25/12/2012 13:16:53
#416384
BetWeen #[Ô] & Format$(D1, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format$(D2, [Ô]mm/dd/yyyy[Ô]) & [Ô]#

Não esqueça da formatação, access mm/dd/yyyy
SLIPACK 25/12/2012 14:18:05
#416385
obrigado, mas agora aparece outro erro
[Ô]nenhum valor foi fornecido para um ou mais parametros necessarios[Ô]
SNNIFFER 25/12/2012 16:29:30
#416387
Ve se ajuda:

  
rst.Open [Ô]select * from entradas where dia between [ô][Ô] & D1 & [Ô][ô] and [ô][Ô] & D2& [Ô][ô] [Ô],banco



AUSTANDER 25/12/2012 17:36:45
#416389
rsSQL.Open [Ô]Select Dia FROM Entradas Where Dia = [ô][Ô] & Format(CDate(txtdata1)) & [Ô][ô] and [ô][Ô] & Format(CDate(txtdata2)) & [Ô][ô] Order by Id asc[Ô], cnSQL, adOpenStatic, adLockOptimistic
MARCELO.TREZE 26/12/2012 08:24:43
#416397
Colega qual é o banco de dados? e qual é o tipo do campo dia? e como inserindo os dados no campo dia? apenas dia, ou dia, mes e ano?

sendo o banco access o formato deve ser como o postado pelo colega NILSON ou seja entre (#) com format = mm/dd/yyyy

ex:
instsql = [Ô]SELECT * FROM entradas WHERE dia BETWEEN #[Ô] & Format(D1,[Ô]mm/dd/yyyy[Ô]) & [Ô]# and #[Ô] & Format(D2,[Ô]mm/dd/yyyy[Ô]) & [Ô]# ORDER BY id ASC[Ô]


porém sendo outro banco como o mysql ou sql server a formatação e tratamento seria diferente, ambos seriam tratados entre ([ô]) e com a seguinte formatação YYYY-MM-DD.



quanto ao erro [Ô]nenhum valor foi fornecido para um ou mais parametros necessarios[Ô] , dee ser porque uma das datas ficou em branco.



SLIPACK 26/12/2012 10:23:06
#416407
sim o banco é access, o campo dia está como data/hora, e meu vb é em portugues, está dd/mm/yyyy, os dados sao inseridos como dta completa, dia mes e ano com 4 digitos
quando aparece o erro, os camposestao todos preenchidos inclusive se colocar o mouse em cima da instrução sql aparecem os valores inseridos no lugar da variavel o código todo do botao é esse:

[ô]-------general declarations---------------

Dim banco As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim instsql As String
Dim encontrou As Boolean
Dim D1 As Date
Dim D2 As Date

[ô]------button------

Private Sub CmdConsultarE_Click()

MfgC.Clear
MfgC.Rows = 2

D1 = CDate(TxtData1)
D2 = CDate(TxtData2)

If ChkData.Value = 1 And ChkTipo.Value = 0 Then

instsql = [Ô]SELECT * from entradas where dia between #[Ô] & Format$(D1, [Ô]dd/mm/yyyy[Ô]) & [Ô]# and #[Ô] & Format$(D2, [Ô]dd/mm/yyyy[Ô]) & [Ô]# ORDER BY id ASC[Ô]
rst.Open instsql, banco, adOpenDynamic, adLockOptimistic

encontrou = False

Do While Not rst.EOF

MfgC.Cols = 4
MfgC.ColWidth(0) = [Ô]300[Ô]
MfgC.ColWidth(1) = [Ô]300[Ô]
MfgC.ColWidth(2) = [Ô]500[Ô]
MfgC.ColWidth(3) = [Ô]800[Ô]

MfgC.Row = 0
MfgC.Col = 0
MfgC = [Ô]Data[Ô]
MfgC.Col = 1
MfgC = [Ô]Valor[Ô]
MfgC.Col = 2
MfgC = [Ô]Origem Principal[Ô]
MfgC.Col = 3
MfgC = [Ô]Origem Final[Ô]

With MfgC

.Rows = .Rows + 1
.Row = .Rows - 1

.TextMatrix(.Row, 0) = IIf(IsNull(rstC!dia), [Ô][Ô], rstC!dia)
.TextMatrix(.Row, 1) = IIf(IsNull(rstC!valor), [Ô][Ô], rstC!valor)
.TextMatrix(.Row, 2) = IIf(IsNull(rstC!origem1), [Ô][Ô], rstC!origem1)
.TextMatrix(.Row, 3) = IIf(IsNull(rstC!origem2), [Ô][Ô], rstC!origem2)

rst.MoveNext

encontrou = True

End With
Loop

If MfgC.Rows - 1 > 0 Then

MfgC.Row = 2

End If

If encontrou = False Then

MsgBox [Ô] Nenhum valor inserido nesse período de tempo![Ô], vbInformation, [Ô]Resultado de Pesquisa[Ô]

End If

rst.Close
End If

End Sub


MARCELO.TREZE 26/12/2012 10:30:15
#416408
tire o order by da clausula.

SLIPACK 26/12/2012 10:32:42
#416409
valeu Marcelo, agora deu certo
Faça seu login para responder