CONSULTAS POR DATAS
PESSOAL BOA TARDE
HJ é A PIMEIRA VEZ QUE COMEÇO A TRABALHAR COM PESQUISA POR DATAS
COLOQUEI 2 DTPICKER COMO DTDATA1 E DTDATA2
GOSTARIA QUE UM FLEXGRID FOSSE PREENCHIDO COM AS INFORMAÇÕES ENTRE AS DATAS
ESSE FLEXGRID SERIA PREENCHIDO COM AS VENDAS QUE FORAM FEITAS
LI ALGUNS TUTORIAS E MONTEI MEU FORM ASSIM
Private Sub cmdPesquisar_Click()
Dim i As String
Set rsVendas = cnn.Execute([Ô]SELECT * FROM Vendas WHERE [ô]DATA BETWEEN = [Ô][Ô]& dtData1 And dtData2 [Ô][Ô][ô] [Ô])
GridVendas.Clear
GridVendas.Cols = 5
GridVendas.ColWidth(0) = 200
GridVendas.ColWidth(1) = 2200
GridVendas.ColWidth(2) = 5000
GridVendas.ColWidth(3) = 2400
GridVendas.ColWidth(4) = 200
GridVendas.TextMatrix(0, 1) = [Ô]DATA[Ô]
GridVendas.TextMatrix(0, 2) = [Ô]CLIENTE[Ô]
GridVendas.TextMatrix(0, 3) = [Ô]VALOR[Ô]
i = 1
Do While Not rsVendas.EOF
GridVendas.Rows = rsVendas.RecordCount + 1
GridVendas.TextMatrix(i, 1) = rsVendas([Ô]Data[Ô])
GridVendas.TextMatrix(i, 2) = rsVendas!Cliente & [Ô][Ô]
GridVendas.TextMatrix(i, 3) = rsVendas!Total & [Ô][Ô]
i = i + 1
rsVendas.MoveNext
Loop
rsVendas.Close
End Sub
O ERRO APARECE NESSA LINHA
GridVendas.TextMatrix(i, 1) = rsVendas([Ô]Data[Ô])
QUE é SUBSCRIPT OUT OF RANGE
EMBORA NÃO SEI SE O MEU SELECT ESTà CERTO.
SE NÃO FOR INCOMODO,ALGUEM PODERIA ME EXPLICAR PARA QUE SERVE A PALAVRA BETWEEN
OBRIGADO MAIS UMA VEZ
HJ é A PIMEIRA VEZ QUE COMEÇO A TRABALHAR COM PESQUISA POR DATAS
COLOQUEI 2 DTPICKER COMO DTDATA1 E DTDATA2
GOSTARIA QUE UM FLEXGRID FOSSE PREENCHIDO COM AS INFORMAÇÕES ENTRE AS DATAS
ESSE FLEXGRID SERIA PREENCHIDO COM AS VENDAS QUE FORAM FEITAS
LI ALGUNS TUTORIAS E MONTEI MEU FORM ASSIM
Private Sub cmdPesquisar_Click()
Dim i As String
Set rsVendas = cnn.Execute([Ô]SELECT * FROM Vendas WHERE [ô]DATA BETWEEN = [Ô][Ô]& dtData1 And dtData2 [Ô][Ô][ô] [Ô])
GridVendas.Clear
GridVendas.Cols = 5
GridVendas.ColWidth(0) = 200
GridVendas.ColWidth(1) = 2200
GridVendas.ColWidth(2) = 5000
GridVendas.ColWidth(3) = 2400
GridVendas.ColWidth(4) = 200
GridVendas.TextMatrix(0, 1) = [Ô]DATA[Ô]
GridVendas.TextMatrix(0, 2) = [Ô]CLIENTE[Ô]
GridVendas.TextMatrix(0, 3) = [Ô]VALOR[Ô]
i = 1
Do While Not rsVendas.EOF
GridVendas.Rows = rsVendas.RecordCount + 1
GridVendas.TextMatrix(i, 1) = rsVendas([Ô]Data[Ô])
GridVendas.TextMatrix(i, 2) = rsVendas!Cliente & [Ô][Ô]
GridVendas.TextMatrix(i, 3) = rsVendas!Total & [Ô][Ô]
i = i + 1
rsVendas.MoveNext
Loop
rsVendas.Close
End Sub
O ERRO APARECE NESSA LINHA
GridVendas.TextMatrix(i, 1) = rsVendas([Ô]Data[Ô])
QUE é SUBSCRIPT OUT OF RANGE
EMBORA NÃO SEI SE O MEU SELECT ESTà CERTO.
SE NÃO FOR INCOMODO,ALGUEM PODERIA ME EXPLICAR PARA QUE SERVE A PALAVRA BETWEEN
OBRIGADO MAIS UMA VEZ
Tira a definição das rows de dentro do loop:
i= 1
GridVendas.Rows = rsVendas.RecordCount + 1
Do While Not rsVendas.EOF
GridVendas.TextMatrix(i, 1) = rsVendas([Ô]Data[Ô])
GridVendas.TextMatrix(i, 2) = rsVendas!Cliente & [Ô][Ô]
GridVendas.TextMatrix(i, 3) = rsVendas!Total & [Ô][Ô]
i = i + 1
rsVendas.MoveNext
Loop
ROBIU BOA TARDE
FIZ O QUE VOCÊ FALOU E CONTINUA DANDO O ERRO
FIZ O QUE VOCÊ FALOU E CONTINUA DANDO O ERRO
Vamos lá
Primeiro Problema (supondo que o banco seja Access) e o campo data seja do tipo Data/Hora
agora faça o teste, se o banco de dados não for access apenas diga qual o banco para poder altrerar a query
Primeiro Problema (supondo que o banco seja Access) e o campo data seja do tipo Data/Hora
Set rsVendas = cnn.Execute([Ô]SELECT * FROM Vendas WHERE data BETWEEN #[Ô] & Format(dtData1,[Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format(dtData2,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô])
With GridVendas
.Clear
.Cols = 5
.Rows =1
.FormatString = [Ô]DATA |CLIENTE |VALOR[Ô]
.ColWidth(0) = 200
.ColWidth(1) = 2200
.ColWidth(2) = 5000
While Not rsVendas.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = Format(rsVendas!Data,[Ô]dd/mm/yyyy[Ô])
.TextMatrix(.Rows - 1, 1) = rsVendas!Cliente & [Ô][Ô]
.TextMatrix(.Rows - 1, 2) = rsVendas!Total & [Ô][Ô]
rsVendas.MoveNext
Loop
End With
rsVendas.Close
agora faça o teste, se o banco de dados não for access apenas diga qual o banco para poder altrerar a query
MARCELO BOA TARDE
O BANCO é ACCESS E O CAMPO ESTAVA COMO TEXTO
MUDEI NO BANCO PARA DATA/HORA ELE AVISOU QUE IRIA APAGAR.CLIQUEI EM SIM
E FUI FAZER UMA VENDA SÓ QUE NÃOCONSEGUI GRAVAR .Dà ERRO JUSTAMENTE NO CAMPO DE DATA AGORA
O BANCO é ACCESS E O CAMPO ESTAVA COMO TEXTO
MUDEI NO BANCO PARA DATA/HORA ELE AVISOU QUE IRIA APAGAR.CLIQUEI EM SIM
E FUI FAZER UMA VENDA SÓ QUE NÃOCONSEGUI GRAVAR .Dà ERRO JUSTAMENTE NO CAMPO DE DATA AGORA
ESSE CAMPO DA DATA NO FORM DE VENDAS
é UM TEXTBOX QUE ESTÃ ASSIM NO FORM LOAD
txtDate.Text = Format(Date, [Ô]dd.mm.yyyy[Ô])
ISSO PODE SER FEITO OU TENHO QUE SUBSTITUIR POR UM DTPICKER?
é UM TEXTBOX QUE ESTÃ ASSIM NO FORM LOAD
txtDate.Text = Format(Date, [Ô]dd.mm.yyyy[Ô])
ISSO PODE SER FEITO OU TENHO QUE SUBSTITUIR POR UM DTPICKER?
onde vc grava Data ou todos os lugares que for gravar a data utilize isto
Format(txtData.Text, [Ô]mm/dd/yyyy[Ô]) que é o padrão do access
lembre-se que agora os campos datas terão que ser tratados dentro da QUERY da seguinte maneira #dd/mm/yyyy#
ou seja para campos datas utilize o (#)
exemplo
lembrando que sou de 25/07/1972
entendeu, então deverá seguir a seguinte regra de tratamento
para campos do tipo numerico nao se usa nenhum caractere ... (001...
para campos do tipo texto usa-se a aspas simples ...,[ô]marcelo[ô],...
para campos do tipo Data/Hora usa-se o'#[ô]respetitando a formatação #mm/dd/yyyy#
e respeitando isto tudo dará certo, boa sorte
Format(txtData.Text, [Ô]mm/dd/yyyy[Ô]) que é o padrão do access
lembre-se que agora os campos datas terão que ser tratados dentro da QUERY da seguinte maneira #dd/mm/yyyy#
ou seja para campos datas utilize o (#)
exemplo
SQL = [Ô]INSERT INTO tabela (codigo,nome,data) VALUES (001,[ô]marcelo[ô],#07/25/1972#)[Ô]
lembrando que sou de 25/07/1972
entendeu, então deverá seguir a seguinte regra de tratamento
para campos do tipo numerico nao se usa nenhum caractere ... (001...
para campos do tipo texto usa-se a aspas simples ...,[ô]marcelo[ô],...
para campos do tipo Data/Hora usa-se o'#[ô]respetitando a formatação #mm/dd/yyyy#
e respeitando isto tudo dará certo, boa sorte
MARCELO VOU FAZER HOJE A NOITE COMO VOCÊ EXPLICOU E AMANHÃ POSTO O RESULTADO
MUITO OBRIGADO
MUITO OBRIGADO
MARCELO
ESTOU TENDO DIFICULDADES EM RELAÇÃO A GRAVAÇÃO DE DATAS
COMO CRIAR A CODIFICAÇÃO.
NÃO ENTENDI ONDE COLOCO A FUNÇÃO Format(txtData.Text, [Ô]mm/dd/yyyy[Ô])
VOU POSTAR A CODIFICAÇÃO
Private Sub cmdGravar_Click()
Dim a As New ADODB.Command
With a
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]INSERT INTO Clientes (Código,Nome,Data)VALUES([Ô] & txtCodigo & [Ô],[ô][Ô] & txtNome & [Ô][ô],[Ô] & #txtData# & [Ô]);[Ô]
.Execute
End With
End Sub
OBRIGADO PELA AJUDA E PACIENCIA QUE VC ESTA TENDO
ESTOU TENDO DIFICULDADES EM RELAÇÃO A GRAVAÇÃO DE DATAS
COMO CRIAR A CODIFICAÇÃO.
NÃO ENTENDI ONDE COLOCO A FUNÇÃO Format(txtData.Text, [Ô]mm/dd/yyyy[Ô])
VOU POSTAR A CODIFICAÇÃO
Private Sub cmdGravar_Click()
Dim a As New ADODB.Command
With a
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]INSERT INTO Clientes (Código,Nome,Data)VALUES([Ô] & txtCodigo & [Ô],[ô][Ô] & txtNome & [Ô][ô],[Ô] & #txtData# & [Ô]);[Ô]
.Execute
End With
End Sub
OBRIGADO PELA AJUDA E PACIENCIA QUE VC ESTA TENDO
simples colega é assim
With a
.ActiveConnection = cnn
.CommandType = adCmdText
.CommandText = [Ô]INSERT INTO Clientes (Código,Nome,Data)VALUES([Ô] & txtCodigo & [Ô],[ô][Ô] & txtNome & [Ô][ô],#[Ô] & Format(txtData,[Ô]mm/dd/yyyy[Ô]) & [Ô]#);[Ô]
.Execute
End With
MARCELO, MAIS UMA VEZ PERFEITO
OBRIGADO
OBRIGADO
Tópico encerrado , respostas não são mais permitidas