|
|
Postada em 03/11/2009 11:45 hs
Bem galegas e seguinte o que estou tentando fazer é seguintetem um cadastro de entrada no caixa e tenho o campo Emissão e Vencimento ambos tipo TEXTO 10/10/2009.
o estou tentando fazer é um relatório e pesquisar tipo de 01/09/2009 ATÉ 15/09/2009 e lista somente este período. Estou usando o bando de dados Acccess e o campo dada vencimento e tipo texto. Grato
|
|
|
|
|
|
Roßerto
|
SAO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 03/11/2009 12:19 hs
use o BETWEEN na usa instrucao SQL
e o campo texto como data ... nao teria como vc muda o tipo do campo para DATA ?
se nao tiver vc pode usar assim
SELECT * FROM TABELA WHERE CDATE(DATA ) BETWEEN #09/01/2009# AND #09/15/2009#
lembre que o formato do campo data tem que ser MM/DD/YYYY
|
|
|
|
|
|
Postada em 03/11/2009 18:56 hs
Private Sub MontarLista() Dim RS As New ADODB.Recordset Dim SQL As String Dim Criterio As String FG1.TextMatrix(0, 0) = "CaixaID" FG1.TextMatrix(0, 1) = "Vencimento" FG1.TextMatrix(0, 2) = "Descrição do Lançamentos" FG1.TextMatrix(0, 3) = "Crédito R$:" Criterio = Chr$(39) & txtInicial & "%" & Chr(39) <---------------(Aqui ta minha Duvida)
SQL = "SELECT CaixaID, Vence, Descricao, Credito FROM CadCaixasE WHERE CadCaixasE.Emissao Like " & Criterio & " ORDER BY Emissao" On Error Resume Next With RS .Open SQL, CnSql, adOpenForwardOnly, adLockReadOnly If .EOF Then MsgBox "Registro não encontrado", vbExclamation, " Sisnews Informções" Limpa FG1.TextMatrix(1, 0) = "" FG1.TextMatrix(1, 1) = "" FG1.TextMatrix(1, 2) = "" FG1.TextMatrix(1, 3) = "" Else Limpa Do Until .EOF FG1.AddItem RS(0) & vbTab & RS(1) & vbTab & RS(2) & vbTab & RS(3) .MoveNext Loop FG1.RemoveItem 1 End If .Close End With End Sub
|
|
|
|
|
|
Postada em 04/11/2009 08:49 hs
nilton, como disse o roberto,só fazer o between Private Sub MontarLista() Dim RS As New ADODB.Recordset Dim SQL As String Dim Criterio As String FG1.TextMatrix(0, 0) = "CaixaID" FG1.TextMatrix(0, 1) = "Vencimento" FG1.TextMatrix(0, 2) = "Descrição do Lançamentos" FG1.TextMatrix(0, 3) = "Crédito R$:" Criterio = Chr$(39) & txtInicial & "%" & Chr(39) <---------------(Aqui ta minha Duvida)
SQL = "SELECT CaixaID, Vence, Descricao, Credito FROM CadCaixasE WHERE CadCaixasE.Emissao between " & data1 & " and " & data2 & " ORDER BY Emissao" On Error Resume Next With RS .Open SQL, CnSql, adOpenForwardOnly, adLockReadOnly If .EOF Then MsgBox "Registro não encontrado", vbExclamation, " Sisnews Informções" Limpa FG1.TextMatrix(1, 0) = "" FG1.TextMatrix(1, 1) = "" FG1.TextMatrix(1, 2) = "" FG1.TextMatrix(1, 3) = "" Else Limpa Do Until .EOF FG1.AddItem RS(0) & vbTab & RS(1) & vbTab & RS(2) & vbTab & RS(3) .MoveNext Loop FG1.RemoveItem 1 End If .Close End With End Sub
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 04/11/2009 11:23 hs
bom primeiramente o tipo de campo deve ser mudado de texto para Data/Hora para que esta consulta funcione. se você usar um campo texto para consulta entre, datas poderá ocorrer o seguinte supondo que existam as seguintes datas: 03/02/2009 04/02/2009 25/02/2009 01/03/2009 e vc deseja fazer a consulta entre 01/02/2009 e 01/03/2009 ele só retornará a ultima data 01/03/2009 porque isto? em modo textoa leitura é feita mais ou menos desta forma, a barra é ignorada ficando as datas com o seguinte formato 03022009 04022009 25022009 01032009 repare como ficaram os numeros, se estes fossem colocados em ordem ficariam assim 01032009 'viu pra onde veio 01/03/2009 pois como texto ele e menor que os demais 03022009 04022009 25022009 viu que confusão, então mude o tipo de campo para data e hora para consulta funcionar e ainda assim existe uma consideração o access por padrão trata as datas no seguinte formato mm/dd/yyyy então a sua query deve ficar assim: SQL = "SELECT CaixaID, Vence, Descricao, Credito FROM CadCaixasE WHERE Emissao BETWEEN #" & Format(txtDataIni.Text,"mm/dd/yyyy") & "# AND #" & Format(txtDataFim.Text,"mm/dd/yyyy") & "# ORDER BY Emissao" veja as seguintes regras que deve seguir. para campos tipo texto você coloca a consulta entre aspas simples: ex: ...WHERE nome = 'marcelo' para campos do tipo numerico não se usa acentuação ex: ...WHERE codigo = 1234 e para campos do tipo data e hora usa-se o Number '#' ex: ...WHERE data = #02/30/2009# e tudo sairá correto, lembre-se apenas de alterar o campo texto para data/hora. até
|
|
TÓPICO EDITADO
|
|
|
|
|