ERRO AO GRAVAR DATA

ALVAROVB2009 21/12/2009 09:57:29
#330142
Galera preciso de uma ajuda urgente, sou programador de VB6 e VB.NET e estou tentando me aventurando a dar uma manutenção no ASP, conheço um pouco do ASP.NET e estou tentando arrumar um pequeno problema na geração de uma data de vencimento.

O problema é o seguinte, o código abaixo esta gerando uma data de vencimento para o dia 30 de cada mês, porém eu preciso que ele gere para o último dia de cada mês.
Eu andei pesquisando e achei o código que pega o último dia de cada mês - DateSerial(Year(Date), Month(Date) + 1, 0) - até ai blz, más quando eu coloco esse código na linha abaixo para gerar a data correta de vencimento para o boleto ele apresenta o seguinte erro:
Tipo de erro:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[MySQL][ODBC 5.1 Driver][mysqld-5.0.67-community-nt]Incorrect date value: [ô]31/12/2009[ô] for column [ô]vencimento[ô] at row 1
/graficos/gera_guia01.asp, line 410

Comandos
[ô]Esse código funciona
[ô] MM_editCmd.CommandText = [Ô]insert into [Ô] & MM_editTable & [Ô] ([Ô] & MM_tableValues &
[Ô],nossonumero,codbarra,linhadig,dtemissao,vencimento,vlContribuicao) values ([Ô] & MM_dbValues & [Ô],[ô][Ô]&nn([Ô]nn_cliente[Ô])&nn([Ô]nn_atual[Ô])&[Ô][ô],[ô][Ô]&Cod_Barra&[Ô][ô],[ô][Ô]&linha_digi&[Ô][ô],[ô][Ô]&year(date())&[Ô]-[Ô]&month(date())&[Ô]-[Ô]&day(date())&[Ô][ô],[ô][Ô]&year(date())&[Ô]-[Ô]&month(date())&[Ô]-30[ô],[Ô]&session([Ô]vlContribuicao[Ô])&[Ô])[Ô]

[ô]Esse código da erro
MM_editCmd.CommandText = [Ô]insert into [Ô] & MM_editTable & [Ô] ([Ô] & MM_tableValues & [Ô],nossonumero,codbarra,linhadig,dtemissao,vencimento,vlContribuicao) values ([Ô] & MM_dbValues & [Ô],[ô][Ô]&nn([Ô]nn_cliente[Ô])&nn([Ô]nn_atual[Ô])&[Ô][ô],[ô][Ô]&Cod_Barra&[Ô][ô],[ô][Ô]&linha_digi&[Ô][ô],[ô][Ô]&year(date())&[Ô]-[Ô]&month(date())&[Ô]-[Ô]&day(date())&[Ô][ô],[ô][Ô]&DateSerial(Year(Date), Month(Date) + 1, 0)&[Ô][ô],[Ô]&session([Ô]vlContribuicao[Ô])&[Ô])[Ô]

MM_editCmd.Execute - essa é a linha 410


Tentei utilizar o replace para trocar as barras (/) por traços (-), más também deu o mesmo erro.

Será que alguém pode me ajudar com esse problema?

Desde já agradeço a todos
WEBMASTER 21/12/2009 11:06:38
#330158
Resposta escolhida
Pegar o ultimo dia do mes ja tem rotinas aqui no site.
Colocar no banco voce ja tem o codigo, a unica que poderia complicar seria voce querer ultimo dia util do mes...mas se nao eh o caso nao tem muita complicacao.

Experimente jogar os valores que voce esta passando para o insert em variaveis (fica bem mais facil de depurar, e ai veja se as datas realmente estao corretas (principalmente no DateSerial ali em cima)
ALVAROVB2009 21/12/2009 13:24:43
#330197
Webmaster Obrigado pelo retorno
O resultado do dataserial esta certinho, o que verifiquei foi que a data estava sendo gravado com o traço(-) e não com a barra(/), por isso que cheguei a tentar usar o replace, más infelizmente não tinha dado certo

O que fiz foi jogar para uma variável e separar o dia, mes e ano e colocar na linha do vencimento colocando o traço(-), em outras palavras, utilizei um POG, para fazer o serviço do replace, rsrsrsrs, e deu certo, o comando ficou assim

DIM UltimaData, Dia, Mes, Ano
UltimaData=DateSerial(Year(Date), Month(Date) + 1, 0)
dia = day(UltimaData)
mes = month(UltimaData)
ano = year(UltimaData)

MM_editCmd.CommandText = [Ô]insert into [Ô] & MM_editTable & [Ô] ([Ô] & MM_tableValues & [Ô],nossonumero,codbarra,linhadig,dtemissao,vencimento,vlContribuicao) values ([Ô] & MM_dbValues & [Ô],[ô][Ô]&nn([Ô]nn_cliente[Ô])&nn([Ô]nn_atual[Ô])&[Ô][ô],[ô][Ô]&Cod_Barra&[Ô][ô],[ô][Ô]&linha_digi&[Ô][ô],[ô][Ô]&year(date())&[Ô]-[Ô]&month(date())&[Ô]-[Ô]&day(date())&[Ô][ô],[ô][Ô]&ano&[Ô]-[Ô]&mes&[Ô]-[Ô]&dia&[Ô][ô],[Ô]&session([Ô]vlContribuicao[Ô])&[Ô])[Ô]
Tópico encerrado , respostas não são mais permitidas