AJUDAR COM CONDICAO DE BANCO MYSQL

NALDO 08/10/2010 11:28:40
#354690
Olá pessoal eu possuo o seguinte código:
Citação:

Private Sub subBuscar()
Dim sSQL As String
Dim rs As New ADODB.Recordset
Dim l As Long
Dim i As Long

lista.ListItems.Clear

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô] SELECT [Ô]
sSQL = sSQL & [Ô] r.codigo, [Ô]
sSQL = sSQL & [Ô] r.valor, [Ô]
sSQL = sSQL & [Ô] r.local, [Ô]
sSQL = sSQL & [Ô] r.dia, r.mes, r.ano, [Ô]
sSQL = sSQL & [Ô] d.descricao, [Ô]
sSQL = sSQL & [Ô] r.obs [Ô]
sSQL = sSQL & [Ô] FROM [Ô]
sSQL = sSQL & [Ô] registros r [Ô]
sSQL = sSQL & [Ô] INNER JOIN [Ô]
sSQL = sSQL & [Ô] descricao d [Ô]
sSQL = sSQL & [Ô] ON(d.codigo=r.tipo) [Ô]
sSQL = sSQL & [Ô] WHERE [Ô]
If opt(0).Value = True Then
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 1 & [Ô][ô] [Ô]
Else
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 2 & [Ô][ô] [Ô]
End If

If rs.State = 1 Then rs.Clone

rs.Open sSQL, Conn, adOpenDynamic

Do While rs.EOF = False
l = l + 1
lista.ListItems.Add l, , rs(0)
lista.ListItems(l).SubItems(1) = Format(rs(1), [Ô]#,##0.00[Ô])
lista.ListItems(l).SubItems(2) = rs(2)
lista.ListItems(l).SubItems(3) = rs(3)
lista.ListItems(l).SubItems(4) = rs(4)
lista.ListItems(l).SubItems(5) = rs(5)
lista.ListItems(l).SubItems(6) = rs(6)
lista.ListItems(l).SubItems(7) = rs(7)


rs.MoveNext
i = i + 1
Loop
txt(3).Text = i
Call subSomar
End Sub



Como podem ver eu tenho uma condição ali seperando por tipos, ( tipo 1 = dinheiro e tipo 2 = cartão ), agora eu quero serpara da seguinte forma, data X até data Y, será que alguém poderia me dar uma mão no código?
ex: tenho cinco registros, dias 1,2,3,4,5 quero que busque do dia 2 até o dia 4.


PS: Lembrando que tenho três campos de data dia, mês e ano!
AJSO 08/10/2010 12:56:42
#354703
Resposta escolhida
vc pode usar between para fazer isso ou (Data>=[ô]INIdarta[ô] AND Data<=[ô]FinData[ô])

de preferencia antes do seu If opt(0).Value = True Then










NETMANIA 08/10/2010 16:06:15
#354722
Baseado no que você falou, você pode montar uma condição que construa a clasula do comando IN dinâmicamente para alimentar os dados conforme você necessita.

Voc6e pdoeria postar um exemplo de como este dados devem ser filtrados e como eles estão carregados na base?
NALDO 08/10/2010 19:29:40
#354752
Meu SQL ta recebe o seguinte comando:

SELECT r.codigo, r.valor, r.local, r.dia, r.mes, r.ano, d.descricao, r.obs
FROM registros r
INNER JOIN descricao d
ON(d.codigo=r.tipo)
BETWEEN r.dia=[ô]02[ô], r.mes=[ô]01[ô]
AND r.dia=[ô]04[ô], r.mes=[ô]01[ô]
WHERE r.tipo=[ô]1[ô]

Com o código:

Citação:

Private Sub subBuscar()
Dim sSQL As String
Dim rs As New ADODB.Recordset
Dim l As Long
Dim i As Long

lista.ListItems.Clear

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô] SELECT [Ô]
sSQL = sSQL & [Ô] r.codigo, [Ô]
sSQL = sSQL & [Ô] r.valor, [Ô]
sSQL = sSQL & [Ô] r.local, [Ô]
sSQL = sSQL & [Ô] r.dia, r.mes, r.ano, [Ô]
sSQL = sSQL & [Ô] d.descricao, [Ô]
sSQL = sSQL & [Ô] r.obs [Ô]
sSQL = sSQL & [Ô] FROM [Ô]
sSQL = sSQL & [Ô] registros r [Ô]
sSQL = sSQL & [Ô] INNER JOIN [Ô]
sSQL = sSQL & [Ô] descricao d [Ô]
sSQL = sSQL & [Ô] ON(d.codigo=r.tipo) [Ô]
sSQL = sSQL & [Ô] BETWEEN [Ô]
sSQL = sSQL & [Ô] r.dia=[ô][Ô] & txt(0).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] r.mes=[ô][Ô] & txt(1).Text & [Ô][ô] [Ô]
sSQL = sSQL & [Ô] AND [Ô]
sSQL = sSQL & [Ô] r.dia=[ô][Ô] & txt(7).Text & [Ô][ô], [Ô]
sSQL = sSQL & [Ô] r.mes=[ô][Ô] & txt(6).Text & [Ô][ô] [Ô]
sSQL = sSQL & [Ô] WHERE [Ô]
If opt(0).Value = True Then
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 1 & [Ô][ô] [Ô]
Else
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 2 & [Ô][ô] [Ô]
End If


If rs.State = 1 Then rs.Clone

rs.Open sSQL, Conn, adOpenDynamic

Do While rs.EOF = False
l = l + 1
lista.ListItems.Add l, , rs(0)
lista.ListItems(l).SubItems(1) = Format(rs(1), [Ô]#,##0.00[Ô])
lista.ListItems(l).SubItems(2) = rs(2)
lista.ListItems(l).SubItems(3) = rs(3)
lista.ListItems(l).SubItems(4) = rs(4)
lista.ListItems(l).SubItems(5) = rs(5)
lista.ListItems(l).SubItems(6) = rs(6)
lista.ListItems(l).SubItems(7) = rs(7)


rs.MoveNext
i = i + 1
Loop
txt(3).Text = i
Call subSomar
End Sub



o Resultado é ERRO

DAVIDNUNES 09/10/2010 00:51:02
#354759
tenta assim
sSQL = sSQL & [Ô] WHERE DataComparacao between [ô][Ô] & Format$(dt_Inicial, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô] AND [ô][Ô] & Format$(dt_Final, [Ô]yyyy/MM/dd[Ô]) & [Ô][ô]
se nao der avisa
NALDO 09/10/2010 09:23:44
#354766
Citação:

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô] SELECT [Ô]
sSQL = sSQL & [Ô] r.codigo, [Ô]
sSQL = sSQL & [Ô] r.valor, [Ô]
sSQL = sSQL & [Ô] r.local, [Ô]
sSQL = sSQL & [Ô] r.dia, r.mes, r.ano, [Ô]
sSQL = sSQL & [Ô] d.descricao, [Ô]
sSQL = sSQL & [Ô] r.obs [Ô]
sSQL = sSQL & [Ô] FROM [Ô]
sSQL = sSQL & [Ô] registros r [Ô]
sSQL = sSQL & [Ô] INNER JOIN [Ô]
sSQL = sSQL & [Ô] descricao d [Ô]
sSQL = sSQL & [Ô] ON(d.codigo=r.tipo) [Ô]
sSQL = sSQL & [Ô] WHERE [Ô]
If opt(0).Value = True Then
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 1 & [Ô][ô] AND [Ô]
Else
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 2 & [Ô][ô] AND [Ô]
End If
sSQL = sSQL & [Ô] dia [Ô]
sSQL = sSQL & [Ô] BETWEEN[Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(0).Text & [Ô][ô] AND [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & txt(7).Text & [Ô][ô] [Ô]



Esse código deu certo...

@DavidNunes
Vou tentar usar esse tipo de código seu, porque em vez de separar a data em três campos dia, mês e ano acho que só um campo [Ô]data[Ô] facilitara mais para o usuário.. jájá posto o fonte se der certo xD
NALDO 09/10/2010 11:27:45
#354774
Ok, os doi códigos fontes deram certo! Está aqui o outro separando so por um capo [ô]data[ô] em vez de dia, mês e ano!

Citação:

Private Sub subBuscar()
Dim sSQL As String
Dim rs As New ADODB.Recordset
Dim l As Long
Dim i As Long

lista.ListItems.Clear

sSQL = [Ô][Ô]
sSQL = sSQL & [Ô] SELECT [Ô]
sSQL = sSQL & [Ô] r.codigo, [Ô]
sSQL = sSQL & [Ô] r.valor, [Ô]
sSQL = sSQL & [Ô] r.local, [Ô]
sSQL = sSQL & [Ô] r.data, [Ô]
sSQL = sSQL & [Ô] d.descricao, [Ô]
sSQL = sSQL & [Ô] r.obs [Ô]
sSQL = sSQL & [Ô] FROM [Ô]
sSQL = sSQL & [Ô] registros r [Ô]
sSQL = sSQL & [Ô] INNER JOIN [Ô]
sSQL = sSQL & [Ô] descricao d [Ô]
sSQL = sSQL & [Ô] ON(d.codigo=r.tipo) [Ô]
sSQL = sSQL & [Ô] WHERE [Ô]
If opt(0).Value = True Then
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 1 & [Ô][ô] AND [Ô]
Else
sSQL = sSQL & [Ô] r.tipo=[ô][Ô] & 2 & [Ô][ô] AND [Ô]
End If
sSQL = sSQL & [Ô] data [Ô]
sSQL = sSQL & [Ô] BETWEEN[Ô]
sSQL = sSQL & [Ô] [ô][Ô] & Format(txt(0).Text, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] AND [Ô]
sSQL = sSQL & [Ô] [ô][Ô] & Format(txt(1).Text, [Ô]YYYY-MM-DD[Ô]) & [Ô][ô] [Ô]



If rs.State = 1 Then rs.Clone

rs.Open sSQL, Conn, adOpenDynamic

Do While rs.EOF = False
l = l + 1
lista.ListItems.Add l, , rs(0)
lista.ListItems(l).SubItems(1) = Format(rs(1), [Ô]#,##0.00[Ô])
lista.ListItems(l).SubItems(2) = Format(rs(2), [Ô]DD-MM-YYYY[Ô])
lista.ListItems(l).SubItems(3) = rs(3)
lista.ListItems(l).SubItems(4) = rs(4)
lista.ListItems(l).SubItems(5) = rs(5)


rs.MoveNext
i = i + 1
Loop
txt(3).Text = i
Call subSomar
End Sub





Aqui vai um print de como fica a tela com os filtros, grid e dois txts...

tópico fechado, obrigado a todos!

Tópico encerrado , respostas não são mais permitidas