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

Sintaxe...


marcelolima

Pergunta

Tipo de erro:

Microsoft JET Database Engine (0x80040E14)

Erro de sintaxe na instrução INSERT INTO.

/noticias/PreviewMessage.asp, line 87


80  sTopic = prepStringForSQL(Request("Topic")) & ","
81  sFonte = prepStringForSQL(Request("fonte")) & ","
82  sName = prepStringForSQL(sName) & ","
83  sComments = ReplaceComments(Request("Message")) & ","
84  sComments = prepStringForSQL(sComments)
85  sSQL = "INSERT INTO FORUM_MESSAGES (AUTHORNAME,TOPIC,COMMENTS)  VALUES (" & sName & sTopic & sComments  & ")"
86
87  conn.execute sSQL

alguém pode me ajudar qual o problema???

vlw!

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

você precisa usar assim

sSQL = "INSERT INTO FORUM_MESSAGES (AUTHORNAME,TOPIC,COMMENTS)  VALUES ('" & sName &"','"& sTopic &"','"& sComments  & "')"

abraços

Ricardo

hum.... entendi... mas não entendi tb laugh.gif

pra que usar o & "," ali em cima ? qual a vantagem?

faz como o Ricardo disse.. mas mesmo assim não vejo erro... mesmo tendo o & "," ali em cima

Link para o comentário
Compartilhar em outros sites

  • 0

galera funcionou...

mas assim

olha o que acontece agora...

estou tentando incluir no BD uma coluna chamada FONTE...

daí não dá erro nenhum, mas ao checar no BD.. não guardou informação...

vocês podem me ajudar???


<!--#include file = "database.inc"-->
<%
Session("fonte") = Request("fonte")
Function isBlank(Value)

if isNull(Value) then
	bAns = true
else
	bAns = trim(Value) = ""
end if
isBlank = bAns

end function

Function FixNull(Value)
if isNull(Value) then
	sAns = ""
else
	sAns = trim(Value)
end if

FixNull = sAns
end function

Function prepStringForSQL(sValue)

Dim sAns
sAns = Replace(sValue, Chr(39), "''")

sAns = "'" & sAns & "'"
prepStringForSQL = sAns

End Function

function ReplaceComments(sInput)
dim sAns
sAns = replace(sInput, "  ", "&nbsp; ")
sAns = replace(sAns, chr(34), "&quot;")
sAns = replace(sAns, "<!--", "&lt;!--")
sAns = replace(sAns, "-->", "--&gt;")

ReplaceComments = sAns
end function

function HTMLFormat(sInput)
dim sAns
sAns = replace(sInput, "  ", "&nbsp; ")
sAns = replace(sAns, chr(34), "&quot;")
sIllStart = "<" & chr(37)
sIllEnd = chr(37)  & ">"
if instr(sAns, sIllStart) > 0 or instr(sAns, sIllEnd) > 0 then
  sAns = replace(sAns, "<" & chr(37), "")
  sAns = replace(sAns, chr(37)  & ">", "")
  bIllegal = true
end if
sAns = replace(sAns, ">", "&gt;")
sAns = replace(sAns, "<", "&lt;")
sAns = replace(sAns, vbcrlf, "<BR>")
HTMLFormat = sAns
end function

if Request("SubmitMessage") <> "" then bNew = true
if request("SubmitReply") <> "" or request("Reply") <> "" then bReply = true
if request("ApplyMessage") <> "" then bApply = true
bValid = bNew or bReply or bApply

if bApply then 

sName = request("AuthorName")

sfonte = session("fonte")
bAddNew =  request("MessageType") = "New"


if bAddNew then



  sTopic = prepStringForSQL(Request("Topic")) & ","
  sFonte = prepStringForSQL(Request("Fonte")) & ","
  sName = prepStringForSQL(sName) & ","
  sComments = ReplaceComments(Request("Message")) & ","
  sComments = prepStringForSQL(sComments)
  sSQL = "INSERT INTO FORUM_MESSAGES (AUTHORNAME,TOPIC,COMMENTS,FONTE) VALUES ('" & sName &"','"& sTopic &"','"& sComments &"','"& sFonte & "')"

  conn.execute sSQL
  sSQL = "UPDATE FORUM_MESSAGES SET THREADPARENT = ID WHERE THREADPARENT = 0"
  conn.execute sSQL

 else
    sOrigAuthor = Request("OrigAuthor")
    if sOrigAuthor = "" then sOrigAuthor = Request.QueryString("OrigAuthor")
  
    iThread = Request("ThreadID") 
    iParent = Request("ParentID")

	sName = prepStringForSQL(sName) & ","
	sFonte = prepStringForSQL(Session("fonte")) & ","	
	sTopic = prepStringForSQL(Request("Topic")) & ","
	sComments = prepStringForSQL(Request("Message"))
    if iThread = 0 then iThread = iParent
	sSQL = "INSERT INTO FORUM_MESSAGES (PARENTMESSAGE,THREADPARENT,AUTHORNAME,TOPIC,COMMENTS) VALUES (" & iParent & "," &  iThread & "," & sName  & sTopic & sComments & ")"

	conn.execute sSQL

    
    cmd.CommandText = "LASTMESSAGE"
    cmd.CommandType = 4
    set rs = cmd.Execute
    sID = rs("ID")
    rs.close
   


  sSQL = "UPDATE FORUM_MESSAGES SET REPLYCOUNT = REPLYCOUNT + 1, LASTTHREADPOST = NOW() WHERE ID = " & iThread
	conn.execute sSQL
    	
end if 'bAddNew
%>
<!--#include file = "database_cleanup.inc"-->
<%

   response.redirect "index.asp?lcl=noticias"

end if 'bApply
  



%>
<HTML>

<HEAD>

	<TITLE></TITLE>
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<link href="../estilos/intranet.css" rel="stylesheet" type="text/css">
</HEAD>

<BODY BGCOLOR = "#FFFFFF">
<% 

if not bValid then
  response.write "You cannot navigate to this page without entering a forum message.  Please "
  response.write "return to the <A HREF = 'default.asp'>forum index</A> and try again."
  response.end
end if
'Write to db and redirect home.
response.write "<HR>"

if bReply then
ParentID = Request("ParentID")
ThreadID = request("ThreadID")
sOrigAuthor = request("OrigAuthor")
end if
sTopic = request("Topic")

if sOrigAuthor = "" then sOrigAuthor = request.QueryString("OrigAuthor")
sOrigMessage = HTMLFormat(Request("Message"))
sFonte = HTMLFormat(Session("fonte"))


%>
<CENTER>
  <FONT SIZE = +2 COLOR=RED><B>Visualiza&ccedil;&atilde;o da Mat&eacute;ria</B></FONT> 
</CENTER>
<P class="texto"> <strong>Se estiver tudo correto, por favor clique em Enviar. 
  </strong>
<P>
<FORM ACTION = "index.asp?lcl=PreviewMess" METHOD = "POST">
<% if bReply Then %>
<INPUT TYPE="HIDDEN" NAME="ParentID" VALUE="<%= ParentID %>">
<INPUT TYPE="HIDDEN" NAME="ThreadID" VALUE="<%= ThreadID %>">
<INPUT TYPE="HIDDEN" NAME="OrigAuthor" VALUE="<%= sOrigAuthor %>">


<% end if %>
<INPUT TYPE="HIDDEN" NAME="Topic" VALUE="<%= sTopic %>">
<INPUT TYPE="HIDDEN" NAME="Message" VALUE="<%= sOrigMessage %>">
<INPUT TYPE="HIDDEN" NAME="AuthorName" VALUE="<%= Request("Name") %>">
<INPUT TYPE="HIDDEN" NAME="Fonte" VALUE="<%= sFonte %>">
<INPUT TYPE = "HIDDEN" NAME = "MessageType" 
<% if bReply then
	Response.Write "VALUE = 'REPLY'"
else
	Response.Write "VALUE = 'New'"
end if
%>
>
  <TABLE class="texto">
    <TR> 
      <TD><B>Mat&eacute;ria:</FONT></B></TD>
      <TD><%=  sTopic  %></TD>
    </TR>
    <TR> 
      <TD>&nbsp;</TD>
    </TR>
    <TR> 
      <TD><strong>Fonte:</strong></TD>
      <TD><%=  Session("fonte")  %></TD>
    </TR>
    <TR> 
      <TD COLSPAN = 2>&nbsp;</TD>
    </TR>
    <TR> 
      <TD COLSPAN = 2><B>Message:</B></TD>
    </TR>
  </TABLE>


<TABLE WIDTH = 95% class="texto"><TR>
<TR>

<TD WIDTH = 100%>
<%=  sOrigMessage  %>
</TD></TR></TABLE><P>

<CENTER><INPUT TYPE="Submit" NAME = "ApplyMessage" VALUE = "Enviar"></CENTER>
<!--#include file = "footer.inc"-->
</FORM>




<% 
if bIllegal then %>
<FONT COLOR = "RED" SIZE = = -1>Your message was altered to delete the ASP delimiters &lt;<%= chr(37) %> and <%= chr(37) %>&gt; 
</FONT><P>
<% end if %>

<!--#include file = "database_cleanup.inc"-->
</HTML>


Link para o comentário
Compartilhar em outros sites

  • 0

Está incluindo as virgulas porque você não apagou o & "," do final. Imprima a consulta para ver se estão vindo os valores das variaveis :

sTopic = prepStringForSQL(Request("Topic"))

sFonte = prepStringForSQL(Request("Fonte"))

sName = prepStringForSQL(sName)

sComments = ReplaceComments(Request("Message"))

sComments = prepStringForSQL(sComments)

sSQL = "INSERT INTO FORUM_MESSAGES (AUTHORNAME,TOPIC,COMMENTS,FONTE) VALUES ('" & sName &"','"& sTopic &"','"& sComments &"','"& sFonte & "')"

response.write sSQL

response.end

Link para o comentário
Compartilhar em outros sites

  • 0

mas tá imprimindo normal...

é assim q funciona ó:

tem o arquivo new_post.asp que preenche os dados:



<%
Function prepStringForSQL(sValue)

Dim sAns
sAns = Replace(sValue, Chr(39), "''")

sAns = "'" & sAns & "'"
prepStringForSQL = sAns

End Function

sName = Session("Name")





Function isBlank(Value)

if isNull(Value) then
	bAns = true
else
	bAns = trim(Value) = ""
end if
isBlank = bAns

end function

Function FixNull(Value)
if isNull(Value) then
	sAns = ""
else
	sAns = trim(Value)
end if

FixNull = sAns
end function




%>
<HTML>

<HEAD>


<!--#include file = "Validate.inc"-->
	<TITLE></TITLE>
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<link href="../estilos/intranet.css" rel="stylesheet" type="text/css">
</HEAD>




<P>
    <center><b><font size="+1"></font></b></center><p>

<FORM Name = "InputForm" ACTION = "index.asp?lcl=PreviewMess" onSubmit = 'return Validate()' METHOD = "POST">
<TABLE>
<INPUT TYPE = "Hidden" NAME = "MessageType" VALUE = "NEW">
<TR>
      <TD class="texto"><B>Autor:</B></TD>
      <TD><INPUT TYPE = "TEXT" NAME="Name" SIZE="50 MAXLENGTH = "100"></TD></TR>
<TR>
      <TD class="texto"><B>Fonte:</B></TD>
      <TD><INPUT NAME="Fonte" TYPE = "TEXT" id="Fonte" SIZE="50 MAXLENGTH = "100"></TD></TR>

<TR>
      <TD class="texto"><B>T&iacute;tulo:</B></TD>
<TD><INPUT TYPE = TEXT SIZE=50 MAXLENGTH="100" NAME = "Topic"></INPUT></TD></TR>
<TR>
      <TD VALIGN = TOP class="texto"><B>Mat&eacute;ria:</B></TD>
<TD VALIGN = TOP class="linkclaro"><TEXTAREA ROWS = 8 COLS = 57 NAME = "MESSAGE" class="branco"></TEXTAREA></TD></TR>
</TABLE>
<P>
<CENTER>


<INPUT TYPE = "SUBMIT" NAME = "SubmitMessage" VALUE = "Enviar" style="font-family: Verdana; font-size: 8 pt; background-color: #C4E4FD; border-style: single; border-width: 1"></FORM>
<P></body> </HTML>


dpois tem aquela página q te passei q recebe... perceba q no código do form, ela manda pra ela própria:
<FORM ACTION = "index.asp?lcl=PreviewMess" METHOD = "POST">
e tb tá imprimindo ó:
<TD><%=  sFonte  %></TD>

agora sinceramente eu não to entendendo porque não tá indo pro bd..

Link para o comentário
Compartilhar em outros sites

  • 0
galera funcionou...

mas assim

olha o que acontece agora...

estou tentando incluir no BD uma coluna chamada FONTE...

daí não dá erro nenhum, mas ao checar no BD.. não guardou informação...

vocês podem me ajudar???


<!--#include file = "database.inc"-->
<%
Session("fonte") = Request("fonte")
Function isBlank(Value)

if isNull(Value) then
	bAns = true
else
	bAns = trim(Value) = ""
end if
isBlank = bAns

end function

Function FixNull(Value)
if isNull(Value) then
	sAns = ""
else
	sAns = trim(Value)
end if

FixNull = sAns
end function

Function prepStringForSQL(sValue)

Dim sAns
sAns = Replace(sValue, Chr(39), "''")

sAns = "'" & sAns & "'"
prepStringForSQL = sAns

End Function

function ReplaceComments(sInput)
dim sAns
sAns = replace(sInput, "  ", "&nbsp; ")
sAns = replace(sAns, chr(34), "&quot;")
sAns = replace(sAns, "<!--", "&lt;!--")
sAns = replace(sAns, "-->", "--&gt;")

ReplaceComments = sAns
end function

function HTMLFormat(sInput)
dim sAns
sAns = replace(sInput, "  ", "&nbsp; ")
sAns = replace(sAns, chr(34), "&quot;")
sIllStart = "<" & chr(37)
sIllEnd = chr(37)  & ">"
if instr(sAns, sIllStart) > 0 or instr(sAns, sIllEnd) > 0 then
  sAns = replace(sAns, "<" & chr(37), "")
  sAns = replace(sAns, chr(37)  & ">", "")
  bIllegal = true
end if
sAns = replace(sAns, ">", "&gt;")
sAns = replace(sAns, "<", "&lt;")
sAns = replace(sAns, vbcrlf, "<BR>")
HTMLFormat = sAns
end function

if Request("SubmitMessage") <> "" then bNew = true
if request("SubmitReply") <> "" or request("Reply") <> "" then bReply = true
if request("ApplyMessage") <> "" then bApply = true
bValid = bNew or bReply or bApply

if bApply then 

sName = request("AuthorName")

sfonte = session("fonte")
bAddNew =  request("MessageType") = "New"


if bAddNew then



  sTopic = prepStringForSQL(Request("Topic")) & ","
  sFonte = prepStringForSQL(Request("Fonte")) & ","
  sName = prepStringForSQL(sName) & ","
  sComments = ReplaceComments(Request("Message")) & ","
  sComments = prepStringForSQL(sComments)
  sSQL = "INSERT INTO FORUM_MESSAGES (AUTHORNAME,TOPIC,COMMENTS,FONTE) VALUES ('" & sName &"','"& sTopic &"','"& sComments &"','"& sFonte & "')"

  conn.execute sSQL
  sSQL = "UPDATE FORUM_MESSAGES SET THREADPARENT = ID WHERE THREADPARENT = 0"
  conn.execute sSQL

 else
    sOrigAuthor = Request("OrigAuthor")
    if sOrigAuthor = "" then sOrigAuthor = Request.QueryString("OrigAuthor")
  
    iThread = Request("ThreadID") 
    iParent = Request("ParentID")

	sName = prepStringForSQL(sName) & ","
	sFonte = prepStringForSQL(Session("fonte")) & ","	
	sTopic = prepStringForSQL(Request("Topic")) & ","
	sComments = prepStringForSQL(Request("Message"))
    if iThread = 0 then iThread = iParent
	sSQL = "INSERT INTO FORUM_MESSAGES (PARENTMESSAGE,THREADPARENT,AUTHORNAME,TOPIC,COMMENTS) VALUES (" & iParent & "," &  iThread & "," & sName  & sTopic & sComments & ")"

	conn.execute sSQL

    
    cmd.CommandText = "LASTMESSAGE"
    cmd.CommandType = 4
    set rs = cmd.Execute
    sID = rs("ID")
    rs.close
   


  sSQL = "UPDATE FORUM_MESSAGES SET REPLYCOUNT = REPLYCOUNT + 1, LASTTHREADPOST = NOW() WHERE ID = " & iThread
	conn.execute sSQL
    	
end if 'bAddNew
%>
<!--#include file = "database_cleanup.inc"-->
<%

   response.redirect "index.asp?lcl=noticias"

end if 'bApply
  



%>
<HTML>

<HEAD>

	<TITLE></TITLE>
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<link href="../estilos/intranet.css" rel="stylesheet" type="text/css">
</HEAD>

<BODY BGCOLOR = "#FFFFFF">
<% 

if not bValid then
  response.write "You cannot navigate to this page without entering a forum message.  Please "
  response.write "return to the <A HREF = 'default.asp'>forum index</A> and try again."
  response.end
end if
'Write to db and redirect home.
response.write "<HR>"

if bReply then
ParentID = Request("ParentID")
ThreadID = request("ThreadID")
sOrigAuthor = request("OrigAuthor")
end if
sTopic = request("Topic")

if sOrigAuthor = "" then sOrigAuthor = request.QueryString("OrigAuthor")
sOrigMessage = HTMLFormat(Request("Message"))
sFonte = HTMLFormat(Session("fonte"))


%>
<CENTER>
  <FONT SIZE = +2 COLOR=RED><B>Visualiza&ccedil;&atilde;o da Mat&eacute;ria</B></FONT> 
</CENTER>
<P class="texto"> <strong>Se estiver tudo correto, por favor clique em Enviar. 
  </strong>
<P>
<FORM ACTION = "index.asp?lcl=PreviewMess" METHOD = "POST">
<% if bReply Then %>
<INPUT TYPE="HIDDEN" NAME="ParentID" VALUE="<%= ParentID %>">
<INPUT TYPE="HIDDEN" NAME="ThreadID" VALUE="<%= ThreadID %>">
<INPUT TYPE="HIDDEN" NAME="OrigAuthor" VALUE="<%= sOrigAuthor %>">


<% end if %>
<INPUT TYPE="HIDDEN" NAME="Topic" VALUE="<%= sTopic %>">
<INPUT TYPE="HIDDEN" NAME="Message" VALUE="<%= sOrigMessage %>">
<INPUT TYPE="HIDDEN" NAME="AuthorName" VALUE="<%= Request("Name") %>">
<INPUT TYPE="HIDDEN" NAME="Fonte" VALUE="<%= sFonte %>">
<INPUT TYPE = "HIDDEN" NAME = "MessageType" 
<% if bReply then
	Response.Write "VALUE = 'REPLY'"
else
	Response.Write "VALUE = 'New'"
end if
%>
>
  <TABLE class="texto">
    <TR> 
      <TD><B>Mat&eacute;ria:</FONT></B></TD>
      <TD><%=  sTopic  %></TD>
    </TR>
    <TR> 
      <TD>&nbsp;</TD>
    </TR>
    <TR> 
      <TD><strong>Fonte:</strong></TD>
      <TD><%=  Session("fonte")  %></TD>
    </TR>
    <TR> 
      <TD COLSPAN = 2>&nbsp;</TD>
    </TR>
    <TR> 
      <TD COLSPAN = 2><B>Message:</B></TD>
    </TR>
  </TABLE>


<TABLE WIDTH = 95% class="texto"><TR>
<TR>

<TD WIDTH = 100%>
<%=  sOrigMessage  %>
</TD></TR></TABLE><P>

<CENTER><INPUT TYPE="Submit" NAME = "ApplyMessage" VALUE = "Enviar"></CENTER>
<!--#include file = "footer.inc"-->
</FORM>




<% 
if bIllegal then %>
<FONT COLOR = "RED" SIZE = = -1>Your message was altered to delete the ASP delimiters &lt;<%= chr(37) %> and <%= chr(37) %>&gt; 
</FONT><P>
<% end if %>

<!--#include file = "database_cleanup.inc"-->
</HTML>


essa aí é a página PreViewMessage...

Link para o comentário
Compartilhar em outros sites

  • 0

analisando com mais calma... você colocou sfonte = session("fonte") dentro de um IF, e como não está passando neste IF consequentemente ele não irá receber valor.

No começo do codigo você cria a session Session("fonte") = Request("fonte"). Ou você chama por este, ou então você faz o mesmo sfonte = session("fonte") fora do IF.

pra testar em vez de response.write sFonte, faça response.write session("fonte") e verá que tem resultado.

a questao é q não deve estar entrando no IF

Entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

olha o erro

Tipo de erro:

Microsoft JET Database Engine (0x80004005)

O campo 'FORUM_MESSAGES.Fonte' não pode ser uma seqüência de caracteres de comprimento nulo.

/noticias/PreviewMessage.asp, line 87

85  sSQL = "INSERT INTO FORUM_MESSAGES(AUTHORNAME,TOPIC,COMMENTS,FONTE) VALUES ('" & sName &"','"& sTopic &"','"& sComments &"','"& Fontes & "')"

87  conn.execute sSQL

mas repara numa coisa...

na página de erro...

POST Data:

Topic=teste&Message=teste&AuthorName=teste&Fontes=teste&MessageType=New&ApplyMessage=Enviar

viu q Fontes=teste???

Link para o comentário
Compartilhar em outros sites

  • 0

Marcelo, já disse tudo que podia imaginar.. realmente é muito estranho.. Se ele está pegando o valor na consulta então tem que inserir.

se você quiser, me envia por e-mail esse sistema, com o BD, que eu tendo ver por aqui

porque pelos testes que fiz aqui vai :(

Link para o comentário
Compartilhar em outros sites

  • 0

olá pessoal, tudo bem?

Como está o erro desse tópico?

Em que parte vocês estão agora, e o que não está funcionando?

Pois, não li o tópico inteiro, mas a descrição do tópico foi resolvida né?

Sobre erro de sintaxe.

Se algum dos valores não estao sendo inseridos no banco, manda mostrar na tela a variavel que contém o valor que deve ser inserido só pra ver se a variavel realmente tem o valor

qualquer coisa posta ae

t+

Link para o comentário
Compartilhar em outros sites

  • 0

seeeeguinte....

to vendo que tá maior confusa com esse Fonte.. no arquivo tem:

sFonte, Fontes, Fonte

então você primeiro tem que definir um nome só pra variavel. No começo você chama sFonte vindo de Request.Form("fonte"), sendo que no final você faz o hidden como Fontes.

Então chame-a de uma forma só e altere o arquivo entendeu? Tipo assim:

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...