NÃO CARREGA PESQUISA
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?
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...
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Ã.
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?
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
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
http://www.macoratti.net/vbn_data.htm
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
ouPublic 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[Ô]....