Ir para conteúdo
Fórum Script Brasil
  • 0

Não insere data


Alberto Mota

Pergunta

Prezados colegas, pesquisei muito e não encontrei uma solução. As parcelas são inseridas sem problemas quando não incluo o campo DtVctoDupl. Criei no Access como data/hora. Quando o insiro no script ele diz que é incompativel, coloquei cerquilhas, tirei e nada. Por favor, preciso de ajuda. Desde já agradeço.

Eis o código

<%

cst = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/vendas.mdb")

set conn = CreateObject("ADODB.Connection")

conn.open cst

filial = session("id")

qtde = session("qtdeparcelas")

dtInicial = date

dtParcela = DateAdd ("m", x, dtInicial)

dt = DateAdd("m", n, dtinicial)

total = rsvdatotal("total")

vrparcela = total / qtde

for x = 0 to (qtde - 1)

sql = "INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES (" & session("codigo_pedido1") &",'" & vrparcela &"','#" & dt & "#')"

set consulta = conn.execute(sql)

next

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>&Ocirc;mega Net</title>

</head>

<body>

</body>

</html>

<%

conn.close

Set conn = Nothing

response.redirect("fechapedido.asp")

%>

===========================

Tipo de erro:

Microsoft JET Database Engine (0x80040E07)

Tipo de dados imcompatível na expressão de critério.

/index/geracrok.asp, line 27

%>

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Alberto, boa noite.

Só pra confirmar, o bd é access né?

se sim eu tentaria das seguintes formas:

sql = "INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES (" & session("codigo_pedido1")&",'" & vrparcela &"','" & dt & "')"
ou...
sql = "INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES ('" & session("codigo_pedido1")&"','" & vrparcela &"','" & dt & "')"
caso nenhuma destas funcione de um debug da instrução de insert assim:
sql = "INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES (" & session("codigo_pedido1")&",'" & vrparcela &"','" & dt & "')"
response.write sql
response.end

poste aqui os resultados, ok?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Alberto Mota --

Rafael,

ao colocar dt onde dt = "11/09/2008"

ele exibe 09/11/aaaa e grava no banco a data correta. 11/09/2008

quando troco por dtParcela onde = Dateadd("m", x, dt)

retorna o erro de incompatilibilidade.

após colocar response.write sql

surge o seguinte

INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES (5,'250','9/11/aaaa')

Microsoft JET Database Engine erro '80040e07'

Tipo de dados imcompatível na expressão de critério.

/index/geracrok.asp, line 29

Tipo de dados imcompatível na expressão de critério.

/index/geracrok.asp, line 29

Será que não é o caso de configuração no IIS?

Valeu, pela iniciativa.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Alberto Mota --

Gerar um contas a receber atraves de parcelas. Atraves do form de vendas o usuario escolhe a condição e depois gravo no bd. A intenção é que se armazene.

Ex:

DtParcela inicial = 01/05/2008 e 3 parcelas(30/60/90) ficando assim

01/06/2008

01/07/2008

01/08/2008

Ele insere os valores, mas trava na data quando a coloco no script.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Alberto Mota --

Rafael, realmente pode ser assim dtparcela.

Na verdade fiz isso. Entretanto o problema persiste quanto a incompatibilidade.

Devo dizer que quando o site esta na net a data surge normal.

É apenas no meu computador que exibe ex: 11/05/aaaa. E grava correto: 11/05/2008

Ainda não pude testar o parcelamento na net porque esta sem permissão de gravação.

Assim que voltar ao normal vou testar e entro em contato dizendo se consegui, ou não.

Mas você disse que pode ser outra coisa. O que seria?

Mais uma vez, obrigado. Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

posié... é que eu queria confirmar se derepente estava vindo simplesmente no formato errado ou não... neste seu caso, como funciona na web, realmente deve ser só configuração do IIS mesmo, então recomendo esse link pra você:

http://scriptbrasil.com.br/forum/index.php?showtopic=82623

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, estou quase lá. Fiz essa tentativa e quase deu certo.

Vou te mostrar o passo a passo

No meu form em txtdata digitei 07/08/2008

capturo do meu form de vendas para uma página de inserção da mesma.

=================================

<%

diai=day(Request.Form("txtdata"))

mesi=month(Request.Form("txtdata"))

anoi=year(Request.Form("txtdata"))

Session.LCID=1033

vardata = diai & "/" & mesi & "/" & anoi

%>

=================================

Insiro na tabela e crio uma session da data para usar no parcelamento, esses fragmentos de código na mesma pagina.

=================================

<%

sql = "INSERT INTO tblvendas (codvda, dt) VALUES (" & Session("codigo_pedido1") &"," & '" & vardata &"')"

set consulta = conn.execute(sql)

Session("dtvenda") = vardata

%>

================================

...Suprimi alguns campos para facilitar a compreensão

E... Ta lá conforme queria, não mostra mais 07/08/aaaa. VISUALIZO NO NAVEGADOR 07/08/2008

e a sessão da data que preciso para o parcelmento beleza.

As 3 parCelas quE indiquei anteriormente e no loop acima no tópico (dtParcela)...

07/09/2008

07/10/2008

07/11/2008

Tudo conforme o figurino.

Abro o Access para confirmar o armazenamento dos dados e... SURPRESA

Data da Venda = 08/07/2008

Os parcelamentos na TblDuplicatas

09/07/2008

10/07/2008

11/07/2008

Houve a inversão óbvia de mes e dia, a Session.LCD=1033 foi a responsavel por isso, acredito.

Troquei por 1046(conforme vi num post) e volta o problema original 07/08/aaaa.

Fui em configurações Regionais no painel de controle e o formato coloquei dd/mm/aaaa.

Troquei vardata = diai & "/" & mesi & "/" & anoi por vardata = mesi & "/" & diai & "/" & anoi. E tudo na mesma. Armazena trocado.

Deve ser um pequeno ajuste a ser feito.

Acho que devo usar a session.LCD no momento certo para que armazene corretamente.

Uma vez que exibe por que não armazena?

estou mais perdido que cego em tiroteio. Como finalizo essa questão?

Aguardo ainda o provedor liberar a permissão de escrita na pasta. Um abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Alberto Mota --

Rafael, desculpe a chateação é que verifiquei o seguinte:

Na venda informo: 20/05/2008

Exibe 05/20/2008 e armazena 20/05/2008

A exibição dou como problema do IIS. Posso colocar uma mascara trocando dia e mes, conforme seu post.

Mas ai resolvo fazer um novo registro e uma nova data

Na venda informo: 04/05/2008

E... Exibe 04/05/2008 e armazena 05/04/2008

Dias de 1 ate 9 exibe correto e armazena errado.

Dias de 10 ate 31 exibe errado e armazena correto.

Fiz varios testes, é isso mesmo.

Ficou mais facil ou meus problemas continuam?

Sendo assim não há mascaras que deêm jeito. E o ISS não tem culpa no cartório.

Um abraço. Que abacaxi, hein?

Link para o comentário
Compartilhar em outros sites

  • 0

Isso é bem normal até...

Cara, assim, o problema é exatamente excesso de uso de formatações de datas e mascaras... a primeira coisa que você deve fazer é limpar seu codigo nesse quesito... remova todas sessions.lcid todas funções cdates e ate se usar alguma de formatdate...

Veja como ficam os dados... e comece a trabalhar com eles novamente... muitas vezes apenas session.lcid resolve... mas lembre-se coloque no início do seu codigo session.lcid 1033 forçando o sistema para o formato americano e antes de incluir ou imprimir em tela mude para session.lcid 1046 (brasileiro)...

outras formas de sair desse problema seria dividir seu campo em tres partes dia mes e ano... muitas vezes é a unica coisa que realmente resolve...

esses conflitos são normais...

Tente com as funções cdate tb... mas não abuse... tente caminhos ou com cdate ou com sessions.lcid... use os dois somente em ultimo caso!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Alberto Mota --

Rafael, solucionei o problema. Atraves da função Len, verifico se o dia é 1 ou 2 , ou seja 1=05/09/2008 2=25/09/2008 e sendo assim o select case faz o resto e inverte conforme a data. Ele insere conforme o esperado(na Net).

Vou postar o código todo, quem sabe alguém pode aproveitar. Consegui graças a sua ajuda e paciência. Sucesso a você!

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%

Dim rsvdatotal

Set rsvdatotal = Server.CreateObject("ADODB.Recordset")

rsvdatotal.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _

Server.MapPath("data/vendas.mdb")

rsvdatotal.Source = "SELECT tblvendadetalhe.vendabase, Sum([vr]*[qtde]) AS total FROM tblvendadetalhe GROUP BY tblvendadetalhe.vendabase HAVING tblvendadetalhe.vendabase=" & session("codigo_pedido1")

rsvdatotal.CursorType = 0

rsvdatotal.CursorLocation = 2

rsvdatotal.LockType = 1

rsvdatotal.Open()

%>

<%

Function FormataMoeda(valor)

sp = Mid(FormatNumber(1000, 0, -1, 0, -1),2,1)

sv = Mid(FormatNumber(0.1, 1, -1, 0, -1),2,1)

If isNumeric(valor) Then

v = FormatNumber (valor, 2, -1, 0, -1)

Else

v = FormatNumber (0, 2, -1, 0, -1)

End If

v = Replace(v, sp, "p")

v = Replace(v, sv, "v")

v = Replace(v, "p", ".")

v = Replace(v, "v", ",")

FormataMoeda = v

End Function

%>

<%

pesquisa = cdate(Session("dtvenda"))

pesquisa1 = day(pesquisa)

Dia = day(pesquisa)

Mes = month(pesquisa)

Ano = year(pesquisa)

pesquisa2 = len(trim(pesquisa1))

Select Case pesquisa2

Case 1

VarData = Dia & "/" & Mes & "/" & Ano

Case 2

VarData = Mes & "/" & Dia & "/" & Ano

end select

%>

<%

cst = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/vendas.mdb")

set conn = CreateObject("ADODB.Connection")

conn.open cst

filial = session("id")

qtde = session("qtdeparcelas")

total = rsvdatotal("total")

vrparcela = total / qtde

vrparcela2 = vrparcela

vrparcela3 = FormataMoeda(vrparcela2)

dtparcela = Vardata

%>

<%

'response.write dtparcela

'response.End

%>

<%

for x = 1 to qtde

dt2 = DateAdd ("m", x, dtparcela)

sql = "INSERT INTO TblDuplicatas (BaseNota, ValorDupl, DtVctoDupl) VALUES (" & session("codigo_pedido1") &",'" & vrparcela3 &"','" & dt2 & "')"

'response.Write sql

'response.end

set consulta = conn.execute(sql)

next

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>&Ocirc;mega Net</title>

</head>

<body>

</body>

</html>

<%

conn.close

Set conn = Nothing

response.redirect("fechapedido.asp")

%>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...