NÃO CARREGA PESQUISA

DS2T 04/11/2015 03:09:57
#453385
Primeiro, existe alguma razão específica para estar salvando data como string?
Além de ocupar mais espaço, é problemático para consultas envolvendo um between.

Mas só pra ver se eu entendi:

Você tem as seguintes datas:
01/10/2015
05/10/2015
06/10/2015
20/10/2015

Cada uma delas tem um código:

1 - 01/10/2015
2 - 05/10/2015
3 - 06/10/2015
4 - 20/10/2015


Você quer uma função que faça isso?

Return SuaFuncao([Ô]01/10/2015[Ô], 20/10/2015[Ô])

Retorno:
1 + 2 + 3 + 4 = 11

é isso mesmo?
NICKOSOFT 04/11/2015 05:29:36
#453386
realmente vc complicou a sua vida com esse remendo de data em string.....
uma pesquisa por datas em string vai te trazer dia 20, 2, 23 tudo junto, afinal, texto ordenando iniciam c 2....de qq forma vc vai ter dia 4 em diante no final da lista.....

mais uma função ali retornando o datareader passando uma query com o between as datas inicial e final seria suficiente pra vc usar como datasource do datagrid....não precisaria toda aquela briga q nem esta dando certo...
PERCIFILHO 04/11/2015 07:41:11
#453388
Concordo plenamente com os colegas quanto a data ser Date e não String, afinal data é data e deve ser tratada como tal.
Se o que você quer é mostrar os dados no período informado, seria só você fazer uma consulta com Between entre as duas datas, preenche um Dataset e já era.
é só mostrar os dados na grid. Agora, se você trabalhar com data tipo String, aí fica mais difícil, terá que converter ela para Date.
Acho que vale a pena alterar o tipo de data., Eu mesmo, lá no comecinho, quando eu ainda [Ô]brincava[Ô] com o VB6, costumava usar data com tipo String, depois vi que alterando o tipo dela ficava muito mais fácil de manipular os dados. Pense aí.
MOUSER 04/11/2015 21:11:54
#453440
Citação:

:
realmente vc complicou a sua vida com esse remendo de data em string.....
uma pesquisa por datas em string vai te trazer dia 20, 2, 23 tudo junto, afinal, texto ordenando iniciam c 2....de qq forma vc vai ter dia 4 em diante no final da lista.....

mais uma função ali retornando o datareader passando uma query com o between as datas inicial e final seria suficiente pra vc usar como datasource do datagrid....não precisaria toda aquela briga q nem esta dando certo...


NICKOSOFT, vou alterar o sistema inteiro, começando pelo script do SQL, vou tratar o Textbox para converter a string também, pois o recibo só sera lançado no dia seguinte, então o usuário estará digitando a data que foi gerado o recibo de pagamento. No Sql eu coloco como no atributo data de acordo com o trecho postado? e no vb.net? como altero?
MOUSER 04/11/2015 21:47:58
#453442
SQL Consegui arrumar, alguns minutos de pesquisa e uma boa leitura já me auxiliou, agora pesquisar no VB.NET, para organizar a data e aplicar a dica de vocês
MOUSER 04/11/2015 21:49:19
#453443
As Tabelas ficaram da seguinte forma:

Citação:

CREATE TABLE [dbo].[t_Debito](
[cod] [int] IDENTITY(1,1) NOT NULL,
[VALOR] [varchar](50) NULL,
[VALORDESC] [varchar](10) NOT NULL,
[BANDEIRA] [varchar] (45) NULL,
[DATA] [date] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[t_TotalDia](
[cod] [int] IDENTITY(1,1) NOT NULL,
[ValorTotal] [varchar](50) NULL,
[ValorDeposito] [varchar](50) NOT NULL,
[Data] [date] NULL
) ON [PRIMARY]
GO

MOUSER 04/11/2015 21:53:28
#453444
No VB.NET a ajuda seria: salvar 10/10/2010 (Dia/Mes/Ano) e ele vai dentro da tabela 2010-10-10 (Ano-Mes-Dia), quando voltar para Janela (Seja em DGV ou um textbox), como organizar para voltar em 10/10/2010 (Dia/Mes/Ano)?
JABA 04/11/2015 23:05:55
#453450
A função abaixo retorna o somatório de todos os códigos baseado no mes para o campo data. Qualquer coisa, é só adaptar para o que você precisa.

Public Function GetTotal(ByVal Mes As Integer) As SqlDataReader
Dim strQuery As String = [Ô]Select sum(cod) as Total from t_TotalDia where DATEPART (MONTH , data) = [Ô] & Mes
Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataReader(strQuery)
End Function


ou

Public Function GetTotal(ByVal Mes As Integer, Ano As Integer) As SqlDataReader
Dim strQuery As String = [Ô]Select sum(cod) as Total from t_TotalDia where DATEPART (MONTH , data) =[Ô] & Mes & [Ô]And DATEPART (YEAR , data) = [Ô] & Ano
Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataReader(strQuery)
End Function


Dica:

1- Evite usar prefixo nas suas classes, pois isso é uma má prática. Em vez de usar Class clsCliente, use Class Cliente.
2- Use as propriedades autoimplementadas pra deixar o seu código mais organizado.

Ex:

Public Class DepCard

Public Property Taxa As String
Public Property Cod As Integer
Public Property Data As String
Public Property ValorD As String
Public Property ValorT As String
Public Property Valor As String
Public Property Desconto As String
Public Property Bandeira As String
...
End Class


NICKOSOFT 05/11/2015 06:11:52
#453457
da uma olhada nesse artigo aqui q mostra o tratamento de data
http://www.macoratti.net/vbn_data.htm
NICKOSOFT 05/11/2015 06:31:05
#453459
Citação:

:
A função abaixo retorna o somatório de todos os códigos baseado no mes para o campo data. Qualquer coisa, é só adaptar para o que você precisa.

Public Function GetTotal(ByVal Mes As Integer) As SqlDataReader
Dim strQuery As String = [Ô]Select sum(cod) as Total from t_TotalDia where DATEPART (MONTH , data) = [Ô] & Mes
Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataReader(strQuery)
End Function


ou

Public Function GetTotal(ByVal Mes As Integer, Ano As Integer) As SqlDataReader
Dim strQuery As String = [Ô]Select sum(cod) as Total from t_TotalDia where DATEPART (MONTH , data) =[Ô] & Mes & [Ô]And DATEPART (YEAR , data) = [Ô] & Ano
Dim _cldBancoDados As New cldBancoDados
Return _cldBancoDados.RetornaDataReader(strQuery)
End Function


Dica:

1- Evite usar prefixo nas suas classes, pois isso é uma má prática. Em vez de usar Class clsCliente, use Class Cliente.
2- Use as propriedades autoimplementadas pra deixar o seu código mais organizado.

Ex:

Public Class DepCard

Public Property Taxa As String
Public Property Cod As Integer
Public Property Data As String
Public Property ValorD As String
Public Property ValorT As String
Public Property Valor As String
Public Property Desconto As String
Public Property Bandeira As String
...
End Class



mas a primeira function vai apresentar problema, vc fazendo essa busca por parte da data usando so o mês, e tiver lançamentos de vários anos, vai pegar todos daquele mês, incluindo anos diferentes......30/01/2000 20/01/1900 25/01/2015 tudo sera janeiro....
vi q foi feita a correção na segunda, mas de qq forma opto sempre pelo between com datas, e caso seja sempre pro intervalo do mês fechado, pode ser bem trabalhadinho e num combo ter o nome dos meses, e ser determinado primeiro dia do mês e o ultimo passando pra query com between, assim escapa até de alguns erros tipo todo fevereiro com 29 dias, mesmo sendo possível verificar com [Ô]isdate[Ô]....
Página 2 de 5 [43 registro(s)]
Tópico encerrado , respostas não são mais permitidas