BETWEEN

CAIO.FR.SP 05/09/2009 01:26:44
#322061
galera consegui reduzir uma função que havia feito anteriormente graças a o comando between. mais esta dando um erro.
nao esta voltando os cadastros entre as datas por min desejadas, e sim todos os cadatros. o que pode ser. abaixo o codigo.
 Private Sub Consulta_mes()
Dim Sqll As String
Dim Mes As Integer, Dia As Integer, Ano As Integer
Dim Dat1 As String, Dat2 As String
Mes = cmbmes.ListIndex + 1
Ano = UpDown1.Value
For Dia = 31 To 28 Step -1
If IsDate(Dia & [Ô]/[Ô] & Mes & [Ô]/[Ô] & Ano) Then
Exit For
End If
Next Dia
Dat1 = ([Ô]1/[Ô] & Mes & [Ô]/[Ô] & Ano)
Dat2 = (Dia & [Ô]/[Ô] & Mes & [Ô]/[Ô] & Ano)
If Len(txt_procurar.Text) > 0 Then
Sqll = [Ô]Select * From caixa Where obs like [ô]%[Ô] & Trim(txt_procurar.Text) & [Ô]%[ô] And data Between #[Ô] & Dat1 & [Ô]# And #[Ô] & Dat2 & [Ô]#;[Ô]
Else
Sqll = [Ô]Select * From caixa Where data Between #[Ô] & Dat1 & [Ô]# And #[Ô] & Dat2 & [Ô]#;[Ô]
End If
With cmd_conexao
.ActiveConnection = conexao
.CommandType = adCmdText
.CommandText = Sqll
Set rst_conexao = .Execute
End With
limpa_lista
Do While Not rst_conexao.EOF
Set lst = List.ListItems.Add
With lst
Debug.Print rst_conexao!Data
lbltrans.Caption = Val(lbltrans.Caption) + 1
.Text = rst_conexao!contcai
.SubItems(1) = rst_conexao!obs
.SubItems(2) = rst_conexao!Valor
End With
rst_conexao.MoveNext
Loop
Total
If LVZebra(List, Picture1, vbWhite, vbYellow) = False Then Exit Sub
End Sub
RCMRO 05/09/2009 01:36:01
#322062
Caio,

Adota sempre passar a data como YYYYMMDD no SQL SERVER e MMDDYYYY no Access, sem as barras mesmo..
Em comparacoes com campo DATETIME, acrescenta sempre hora inicial e final na pesquisa

Assim,


SQL Server
Dat1 = format(ano, [Ô]0000[Ô]) & format(mes, [Ô]00[Ô]) & [Ô]01 00:00:00[Ô]
Dat2 = format(ano, [Ô]0000[Ô]) & format(mes, [Ô]00[Ô]) & format(dia, [Ô]00[Ô]) &[Ô] 23:59:59[Ô]

ACCESS
Dat1 = format(mes, [Ô]00[Ô]) & [Ô]01[Ô] & format(ano, [Ô]0000[Ô]) & [Ô] 00:00:00[Ô]
Dat2 = format(mes, [Ô]00[Ô]) & format(dia, [Ô]00[Ô]) & format(ano, [Ô]0000[Ô]) &[Ô] 23:59:59[Ô]
CAIO.FR.SP 05/09/2009 01:57:29
#322065
o problema é que no cadastro os dados esntao sendo gravados no formato D/M/YYYY
EXPERT 05/09/2009 08:31:27
#322073
Olá a todos ...

Caio faça isso:

Se for com o Access use .... Sqll = [Ô]Select * From caixa Where data Between CDate([ô][Ô] & Dat1 & [Ô][ô]) And CDate([ô][Ô] & Dat2 & [Ô][ô])[Ô] ...
Isso com o formato dd/mm/yyyy no banco ..... senão ... é só usar o format

No SQL Server 2005 use: Sqll = [Ô]Select * From caixa Where data Between [ô][Ô] & Format(Dat1, [Ô]MM/dd/yyyy[Ô]) & [Ô][ô]) And [ô][Ô] & Format(Dat2, [Ô]MM/dd/yyyy[Ô]) & [Ô][ô][Ô]

Testa ai e posta o resultado pra gente .... valew!!!


RCMRO 15/09/2009 12:33:10
#322932
RCMRO,

Conseguiu resolver o problema? Como o tópico continua aberto, talvez ainda esteja com o problema pendente ?!?!?!
Tópico encerrado , respostas não são mais permitidas