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

Erro no Insert ao Banco de Dados


(!_Odisséa_!)

Pergunta

Olá, eu peguei um código de notícias na web e estou adaptando para a minha necessidade.

Mas estou tendo um problema quando tento inserir dados no banco. A estrutura do meu banco é a seguinte:

Nome da Tabela: noticias com os seguintes campos: nidn (Auto numeração), ndata (texto), ntitu (texto), ncont (memorando), idcat (Número).

O código que estou usando é o seguinte:

<%
'Option Explicit
%>
<!--#Include file="conexao.asp"-->
<%
Dim rsInsere, strINS, vdata, vidcat, vtitulo, vnoticia 
vdata = Replace(Request.Form("datanot"), "'", "''")
'vdata = day(now)&"/"&month(now)&"/"&year(now)
vidcat = Replace(Request.Form("idcanot"), "'", "''")
vtitulo = Replace(Request.Form("titunot"), "'", "''")
ncont = Replace(Request.Form("notinot"), "'", "''")
'vidcat = 1

response.Write vdata
response.Write vidcat
response.Write vtitulo
response.Write ncont

If vdata = "" Or vidcat = "" Or vtitulo = "" Or ncont = "" Then
Response.Redirect
End If

'ncont = AlterarTags(ncont)

strINS = "INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")"
'strINS = strINS & "(ndata, ntitu, ncont, idcat) "
'strINS = strINS & "VALUES ('" & vdata & "',"
'strINS = strINS & "'" & vtitulo & "',"
'strINS = strINS & "'" & vnoticia & "',"
'strINS = strINS & "" & vidcat & ")"

Call abreConexao
response.write strINS
response.End
Set rsInsere = conexao.Execute(strINS)

Response.Redirect "mostra1.asp"
Call fechaConexao
Set rsInsere = Nothing
%>

Quando a página recebe os dados do formulário, ela mostra os dados:

09/08/20081Titulo do JoEnvia assim as noticasINSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('09/08/2008','Titulo do Jo','Envia assim as noticas',1)

Mas ele não insere os dados no BD.

Eu fiz ele imprimir esses dados pois, li inumeros artigos e dúvidas nos forum e eles sempre dizem para mostrar o que retorna das variáveis para ver se não esta vazia. já estou tentando arrumar isso a uma semana, mas não acho um erro ou alguma coisa que falta para inserir esses dados no banco.

Espero que alguém me ajuda, pois imagino que é um erro bobo.

Muito Obrigado.

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Inclua "<br>" no response ajuda a visualizar melhor.

response.Write vdata  &  "<br>"
response.Write vidcat & "<br>"
response.Write vtitulo & "<br>"
response.Write ncont & "<br>"
Inclua um response para exibi o sql:
strINS = "INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")"
'strINS = strINS & "(ndata, ntitu, ncont, idcat) "
'strINS = strINS & "VALUES ('" & vdata & "',"
'strINS = strINS & "'" & vtitulo & "',"
'strINS = strINS & "'" & vnoticia & "',"
'strINS = strINS & "" & vidcat & ")"

response.write "strINS =  " & strINS  & "<br>"

E posto o resultado ai.

Não esqueça de postar o erro tambem pois fica dificil adivinhar qual erro esta retornando.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Jothaz.

Eu fiz o que você me aconselhou e estou postando o resultado que vem de formulário.

07/08/2008
1
Titulo Teste
Mensagem que deveria ia no banco
strINS = INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('07/08/2008','Titulo Teste','Mensagem que deveria ia no banco',1)
ele não da erro ele apenas não incluir no banco. Agora se eu retirar a linha : response.End ele da o seguinte erro:
07/08/2008
1
Titulo Teste
Mensagem que deveria ia no banco
strINS = INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('07/08/2008','Titulo Teste','Mensagem que deveria ia no banco',1)

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/yoten/insere_not.asp, line 37
E segue a linha 37
Set rsInsere = conexao.Execute(strINS)

Espero que me ajude, pois já tentei todas as possibilidades que podia e nada.

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Seu insert está muito estranho, ta duplicado!

outra coisa, voce tb não precisa abrir um recorset pra inserir, pode fazer direto, exemplo:

conexao.execute("INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")")

Link para o comentário
Compartilhar em outros sites

  • 0

Verifique o INCLUDE conexao.asp, se ele realmente possui a Sub abreConexao (chamada em: Call abreConexao) e se esta SubRotina realemten abre a conexão com o nome: conexao (usada na linha: conexao.Execute(strINS))

Mais um coisa em seu código, reordene o final assim:

Call abreConexao

Set rsInsere = conexao.Execute(strINS)

Set rsInsere = Nothing

Call fechaConexao

Response.Redirect "mostra1.asp"

Pois antes de redirecionar deve "matar" o rs e fechar a conexão.

Mais uma observação, se o valor do campo NDATA é do tipo DATA, por que usar uma campo TEXTO ??

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Então eu olhei o que o DjWebSP falou, mas me parece que esta tudo certo, veja o arquivo conexao.asp

<%
sub AbreConexao
set conexao = server.createobject("ADODB.Connection")
conexao.Open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("banco.mdb")
end sub
sub FechaConexao

conexao.close
set conexao = nothing
end sub

Call AbreConexao
%>

Tem a conexao que ele falou, mas mesmo assim continua dando esse erro:

07/08/2008

1

Marcelo

getrtegdfg

strINS = INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('07/08/2008','Marcelo','getrtegdfg',1)

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/yoten/insere_not.asp, line 35

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

posta o codigo todo pra dar uma ideiageral da coisa... tem varias coisinhas que pode ser... desde o nome do banco estar errado, o nome da tabela, ou até mesmo o campo data estar como data e não como texto enfim... uma cacetada de coisa...

posta o codigo completo ai!

[]'s Notax

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Segue os meus códigos:

conexao.asp

<%
sub AbreConexao
set conexao = server.createobject("ADODB.Connection")
conexao.Open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("banco.mdb")
end sub
sub FechaConexao
conexao.close
set conexao = nothing
end sub

Call AbreConexao
%>
insere.asp
<%
'Option Explicit
%>
<!--#Include file="conexao.asp"-->
<%
Dim rsInsere, strINS, vdata, vidcat, vtitulo, vnoticia 
vdata = Replace(Request.Form("datanot"), "'", "''")
'vdata = day(now)&"/"&month(now)&"/"&year(now)
vidcat = Replace(Request.Form("idcanot"), "'", "''")
vtitulo = Replace(Request.Form("titunot"), "'", "''")
ncont = Replace(Request.Form("notinot"), "'", "''")
'vidcat = 1

response.Write vdata & "<br>"
response.Write vidcat & "<br>"
response.Write vtitulo & "<br>"
response.Write ncont & "<br>"

If vdata = "" Or vidcat = "" Or vtitulo = "" Or ncont = "" Then
Response.Redirect
End If

'ncont = AlterarTags(ncont)

strINS = "INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")"
'strINS = strINS & "(ndata, ntitu, ncont, idcat) "
'strINS = strINS & "VALUES ('" & vdata & "',"
'strINS = strINS & "'" & vtitulo & "',"
'strINS = strINS & "'" & vnoticia & "',"
'strINS = strINS & "" & vidcat & ")"

response.write "strINS =  " & strINS  & "<br>"
'response.End
Call abreConexao
Set rsInsere = conexao.Execute(strINS)
Set rsInsere = Nothing
Call fechaConexao
Response.Redirect "mostra1.asp"
%>

Eu acho que o problema não esta no conexao.asp porque eu utilizo ele para consultar o banco com outras páginas que incluem esse arquivo conexao.asp

O meu banco de dados esta organizado da seguinte maneira:

Tabela Noticias

campo "nidn" - AutoNumerecao

campo "ndata" - Texto

campo "ntitu" - Texto

campo "ncont" - Memorando

campo "idcat" - Número

Valeu pela ajuda de todos.

Link para o comentário
Compartilhar em outros sites

  • 0

Já q você garante q o arquivo de conexão eata ok.

Faça o seguinte teste:

Troque o tipo do campo: "ncont" - Memorando para "ncont" - text normal.

E verifique se roda.

Outra sugetão é ir retirando os campos d insert e verificar qual esta retornado erro.

Ma mude o tipo do campo "ncont" e faça um tste.

Link para o comentário
Compartilhar em outros sites

  • 0

É como foi dito acima

Seu insert está muito estranho, ta duplicado!

outra coisa, voce tb não precisa abrir um recorset pra inserir, pode fazer direto, exemplo:

CODE

conexao.execute("INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")")

Dá uma olhada se os valores do banco de dados e do formulário conferem, você está mandando como valor vnoticia, onde você está pegando este valor ...

Se você não conseguir resolver faça isso, mas depois de mandar executar o seu insert

response.write strINS
response.end()

Link para o comentário
Compartilhar em outros sites

  • 0

Amigos. Muito Obrigado.

Eu consegui resolver o problema. Primeiro eu tirei aquele código duplicado, que mesmo ele estando inativo por causa da aspa simples acho que estava prejudicando.

Então troquei o meu execute pelo o que tinham me aconselhado, ao executar o código ele pediu a conexao, o que eu fiz então: coloquei logo acima do EXECUTE os comandos de conexão ao banco.

O código ficou assim para que vocês entendam melhor:

<%
'Option Explicit
%>
<!--#Include file="conexao.asp"-->
<%
Dim rsInsere, strINS, vdata, vidcat, vtitulo, ncont 
vdata = Replace(Request.Form("datanot"), "'", "''")
'vdata = day(now)&"/"&month(now)&"/"&year(now)
vidcat = Replace(Request.Form("idcanot"), "'", "''")
vtitulo = Replace(Request.Form("titunot"), "'", "''")
ncont = Replace(Request.Form("notinot"), "'", "''")
'vidcat = 1

response.Write vdata & "<br>"
response.Write vidcat & "<br>"
response.Write vtitulo & "<br>"
response.Write ncont & "<br>"

If vdata = "" Or vidcat = "" Or vtitulo = "" Or ncont = "" Then
Response.Redirect
End If

'ncont = AlterarTags(ncont)
set conexao = server.createobject("ADODB.Connection")
conexao.Open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("banco.mdb")
conexao.execute("INSERT into noticias (ndata, ntitu, ncont, idcat) VALUES ('" & vdata & "','" & vtitulo & "','" & ncont & "'," & vidcat & ")")

response.write "strINS =  " & strINS  & "<br>"
'response.End
Call abreConexao
'Set rsInsere = conexao.Execute(strINS)
Set rsInsere = Nothing
Call fechaConexao
Response.Redirect "mostra1.asp"
%>

Muito obrigado mesmo.

Se alguém tiver alguma dúvida ou sugestão estou ai para ajudá-los no que for possível.

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...