PESQUISA ENTRE DATAS COM SOMA DE VALORES VB.NET

JMRF 28/06/2012 10:51:59
#405103

Bom dia,


VB.NET
BD Access

Olha eu peço a ajuda de vocês, para o seguinte:

Quero criar um Form onde consultarei os vencimentos por período. Entre datas.

Exemplo: Os recebimentos de eu tiver para o período de 20/06/2012 a 10/07/2012,

Então quero que o código, faça a busca no Banco de Dados nesse período e coloque no DBGridView só os recebimentos desse período pesquisado e num txtbox me dê o valor total da coluna valor a receber no período pesquisado.


Pode me dar mais essa força, por favor?


Obrigado

JMRF
ALTAIR148 28/06/2012 10:59:03
#405105
Resposta escolhida
Assim você faz a consulta pelo período:

[Ô]select * from tabela where data between datainicial and datafinal[Ô]


Assim você soma a coluna:

Dim valor As Decimal

For Each coluna As DataGridViewRow In DataGridView1.Rows

valor = valor + coluna.Cells(2).Value
Next


label.Text = valor
JMRF 30/06/2012 23:22:12
#405266
Boa noite,

Por favor, o que está errado nesse código?

Eu tenho uns dados cadastrados num BD Access nas seguintes datas:

05/05/2012
07/05/2012
25/05/2012
10/06/2012
25/06/2012

Acontece que quando faço a pesquisa entre datas com o Código abaixo (estou usando DateTimerPicker na Pesquisa),
se eu seleciono no primeiro DateTimerPicker:

Data Inicial: a data de 01/05/2012
e no outro DateTimerPicker a Data Final:10/06/2012

Só aparece do DataGridView a linha com a data: 05/05/2012

Se eu seleciono Data Final 11 ou 12/06/2012 continua mostrando só a linha com a data 05/05/2012
quando seleciono no DateTimerPicker de Data Final: 13/06/2012 aparecem no DBGrid as linhas:

05/05/2012
07/05/2012 e
10/06/2012

Se eu seleciono no DateTimerPicker a data inicial 08/06/2012 e data final 30/06/2012,
ou seja só data dentro do mes de junho, me mostra as linhas no DataGridView com as datas:

07/05/2012
10/06/2012
25/05/2012
25/06/2012

Ou seja a Data Inicial é no mes de junho e mostra as datas 05/05/2012 e 25/05/2012 que são de maio
porque está acontecendo esse erro?

Podem me ajudar, por favor?



JMRF
JMRF 01/07/2012 08:19:21
#405272
Boa noite,

Por favor, o que está errado nesse código?

Eu tenho uns dados cadastrados num BD Access nas seguintes datas:

05/05/2012
07/05/2012
25/05/2012
10/06/2012
25/06/2012

Acontece que quando faço a pesquisa entre datas com o Código abaixo (estou usando DateTimerPicker na Pesquisa),
se eu seleciono no primeiro DateTimerPicker:

Data Inicial: a data de 01/05/2012
e no outro DateTimerPicker a Data Final:10/06/2012

Só aparece do DataGridView a linha com a data: 05/05/2012

Se eu seleciono Data Final 11 ou 12/06/2012 continua mostrando só a linha com a data 05/05/2012
quando seleciono no DateTimerPicker de Data Final: 13/06/2012 aparecem no DBGrid as linhas:

05/05/2012
07/05/2012 e
10/06/2012

Se eu seleciono no DateTimerPicker a data inicial 08/06/2012 e data final 30/06/2012,
ou seja só data dentro do mes de junho, me mostra as linhas no DataGridView com as datas:

07/05/2012
10/06/2012
25/05/2012
25/06/2012

Ou seja a Data Inicial é no mes de junho e mostra as datas 05/05/2012 e 25/05/2012 que são de maio
porque está acontecendo esse erro?

Podem me ajudar, por favor?



JMRF


Private Sub btn_Consult_Click(sender As System.Object, e As System.EventArgs) Handles btn_Consult.Click
Dim css As String = My.Settings.EstoqueConnectionString
Dim conect As New OleDb.OleDbConnection
conect.ConnectionString = css

conect.Open()
Dim selcom As New OleDb.OleDbCommand
selcom.Connection = conect
selcom.CommandText = [Ô]SELECT * FROM tb_saidas_estoque WHERE data_de_saida BETWEEN #[Ô] & DTPIni.Text & [Ô]# AND #[Ô] & DTPFin.Text & [Ô]# order by data_de_saida[Ô]
[ô][Ô]Select * from tb_saidas_estoque WHERE data_de_saida between >= DTPIni.text and data_de_saida <= DTPFin.text Order by data_de_saida[Ô]


[ô][Ô]SELECT * FROM tb_saidas_estoque WHERE data_de_saida >= #DTPIni#[Ô] And [Ô]<= #DTPFin#[Ô]
[ô][Ô]select * from tb_saidas_estoque where data_de_saida >= #DTPIni#[Ô] And [Ô]<= #DTPFin#[Ô]
[ô][Ô]select * from tb_saidas_estoque where data_de_saida BETWEEN #[Ô] & DTPIni.Text & [Ô]# AND #[Ô] & DTPFin.Text & [Ô]#[Ô]

Dim vleitor As OleDb.OleDbDataReader
vleitor = selcom.ExecuteReader()
Dim c As Integer = 0
DgvConsulta.Rows.Clear()

Do While vleitor.Read
c = c + 1

ReDim Preserve avalor_materiais_produtos(c)
ReDim Preserve amateriais_produtos(c)
ReDim Preserve adata_de_saida(c)
ReDim Preserve asaidas(c)
avalor_materiais_produtos(c) = vleitor([Ô]valor_materiais_produtos[Ô])
amateriais_produtos(c) = vleitor([Ô]materiais_produtos[Ô])
adata_de_saida(c) = vleitor([Ô]data_de_saida[Ô])
asaidas(c) = vleitor([Ô]saidas[Ô])

DgvConsulta.Rows.Add(avalor_materiais_produtos(c), amateriais_produtos(c), adata_de_saida(c), asaidas(c))

Loop
conect.Close()

End Sub

End Class
ALTAIR148 02/07/2012 07:48:16
#405294
Bom dia,

No seu banco de dados o campo que contém as datas ele é de que tipo? texto, data?
JMRF 02/07/2012 14:57:58
#405332

Boa tarde,

ALTAIR148,

Está como texto com máscara ____/____/____


Obrigado

JMRF
ALTAIR148 02/07/2012 15:48:04
#405343
Boa tarde,

Aí é que está o problema amigo, essa mascara de nada serve para o VB.NET, isso ocorre muito, de salvarem data em campos texto, para que sua consulta funcione o campo deve ser do tipo DATA.
JMRF 02/07/2012 17:11:26
#405360
Boa tarde,

ALTAIR148,

Coloquei no meu BD Access data_cadastro como [Ô]Date/Hora[Ô] que é a opção que tem no banco. Não coloquei máscara nem Formato nenhum tipo: Data abreviada etc deixei em branco.

No meu código do programa no vb.net coloquei:

Dim adata_cadastro(1) As Date

Acontece que quando vou no meu cadastro de Materiais_produtos e clico no botão alterar, para eu apagar a data antida e substituir pela nova:
Seleciono no [Ô]DataTimePicker[Ô] a data de 05 de junho de 2012, mas fica registrado no BD 31/12/1899 e ainda com a hora junto como faço para gravar no BD 05/06/2012 e sem 00:02:25 ou 00:00:00.


Obrigado

Um abraço

JMRF
ALTAIR148 02/07/2012 17:33:01
#405363
Tem que formatar a data tipo:


Dim data As Date
data = DateTimePicker1.Value
MsgBox(Format(data, [Ô]dd/MM/yyyy[Ô]))


Só adaptar e pronto.

No link abaixo explica-se como tratar datas no VB.NET.
JMRF 03/07/2012 15:19:41
#405446
Valeu, pessoal, consegui resolver o problema da pesquisa entre datas.
Vou batalhar agora na soma dos valores da coluna que é a segunda parte da ajuda que solicitei, mas ainda não tentei, vou começar as tentativas e qualquer coisa posto o resultado ou o pedido de ajuda de vocês.

Perfeito seu código para somar os valores na coluna do DBGrid no período da consulta.

Tudo resolvido

Parabéns...

Resta-me dizer o meu

Muito Obrigado a todos que me ajudaram.

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