Jump to content
TeixeiraRamos

Campo data cadastrar

Recommended Posts

Trata-se do seguinte:
Tenho uma página em ASP com banco de dados MySQL. Dentre outros campos tem um campo “data”.
Quando abro o formulário “Cadastramento” e digito por exemplo 2017-07-06 e clico no botão “Cadastrar” os registros são salvos no banco de dados no formato (2017-07-06) normalmente.
No formulário lista.asp o campo “date” mostra a data assim: 06/07/2017. Ao fechar esse formulário lista.asp mostra erro no campo Data. Somente depois mudar a data com formato 06/07/2017 para 2017-07-06 e fechar é que para o erro.

Não estou sabendo salvar um campo data em um banco de dados MySQL e editar esse registro em uma página ASP.

Share this post


Link to post
Share on other sites

particularmente prefiro trabalhar com postgresql, pois tem o returning no insert isso ajuda muito ... mas no seu caso use essa função para converter...

Function InverteDataMySql(data)

if not isdate(data) then exit function
if instr(data, " ") > 0 then

hora  = split(data, " ")(1)

end if

InverteDataMySql = year(cdate(data)) & "-" & month(cdate(data) & "-" & day(cdate(data))

if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
End Function

Share this post


Link to post
Share on other sites

Correção da falta de um parenteses no Mês...

 

Function InverteDataMySql(data)

if not isdate(data) then exit function
if instr(data, " ") > 0 then

hora  = split(data, " ")(1)

end if

InverteDataMySql = year(cdate(data)) & "-" & month(cdate(data)) & "-" & day(cdate(data))

if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
End Function

Share this post


Link to post
Share on other sites

Gustavao,

Quando clico em "Editar" de um determinado registro abre "inserir.asp". Foi nesse HTML que coloquei a função "InverteDataMySql",

por favor, veja o código do arquivo "inserir.asp":

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%
	'Dados para a conexão com o banco de dados
	driver   = "{MySQL ODBC 3.51 Driver}"   ' Driver para conexão ODBC
	servidor = "localhost"					' Nome DNS ou IP do seu servidor HTTP
	usuario	 = "root"						' Nome de usuário para acesso ao MySQL
	senha 	 = "admin"						' Senha de acesso
	banco	 = "integracao"					' Nome do banco de dados  

' Cria um objeto fr conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

' Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco


' Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

' Caso ocorra um erro, prossiga até o tratamento dp erro
On error resume next

' Verifica se o arquivo foi chamado em modo de edição
If Request.QueryString("acao") = "editar" then

' Cria a expressão que captura os dados do registro a ser alterado
sql = " SELECT * FROM Livros WHERE ID = "
sql = sql + Request.QueryString("buscacodigo")
response.write
' Cria um objeto para armazenar o registro da consulta
Set rs = Server.CreateObject("ADODB.RecordSet")

' Ativa a conexão criada para o ResultSet
Set rs.ActiveConnection = cnnDB

' Executa a expressão SQL no servidor
rs.Open sql

' Armazena os valores capturados em variáveis auxiliares, se existir
codigo  	 = rs("id")
livro   	 = rs("livro")
autor  		 = rs("autor")
editora 	 = rs("editora")
data_inicio  = rs("data_inicio")
data_termino = rs("data_termino")
segunda      = rs("segunda")
terca        = rs("terca")
quarta       = rs("quarta")
quinta       = rs("quinta")
sexta        = rs("sexta")
sabado       = rs("sabado")
domingo      = rs("domingo")

End if
%>

' Sugestão do gustavo
<%
Function InverteDataMySql(data)
if not isdate(data) then exit function
if instr(data, " ") > 0 then
hora  = split(data, " ")(1)
end if
InverteDataMySql = year(cdate(data)) & "-" & month(cdate(data)) & "-" & day(cdate(data))
if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
End Function 
%>

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registros</title>
</head>

<body>
Preencha os campos a seguir:
<%
 If Request.QueryString("acao") = "editar" then
 	acao = "editar"
 Else
 	acao = "adicionar"
 End if
%>

<form method="post" action="gerencia-registro.asp?acao=<%=acao%>">
<input type="hidden" name="FormCodigoLivro" value="<%=Codigo%>" />
<table>
	<tr>
    	<td>Nome do Livro</td>
        <td>
        <input name="FormNomeLivro" size="80" maxlength="255" value="<%=livro%>">
        </td>
    </tr>
    <tr>
    	<td>Nome do Autor:</td>
        <td>
        <input name="FormNomeAutor" size="80" maxlegth="100" value="<%=autor%>" />
        </td>
    </tr>
    <tr>
    	<td>Nome da Editora:</td>
        <td>
         <input name="FormNomeEditora" size="60" maxlength="80" value="<%=editora%>"/>
        </td>
    </tr>
    <tr>
    	<td>Data Inicio:</td>
        <td>
         <input name="FormDataInicio" size="10" maxlength="80" value="<%=Response.Write(InverteDataMySql())data_inicio%>"/>
        </td>
    </tr>
    <tr>
    	<td>Data Término:</td>
        <td>
         <input name="FormDataTermino" size="10" maxlength="80" value="<%=data_termino%>"/>
        </td>
    </tr>
    <tr>
    	<td>Segunda</td>
        <td>
         <input name="FormSegunda" size="12" maxlength="80" value="<%=segunda%>"/>
        </td>
    </tr>
    <tr>
    	<td>Terça:</td>
        <td>
         <input name="FormTerca" size="12" maxlength="80" value="<%=terca%>"/>
        </td>
    </tr>
    
    <tr>
    	<td>Quarta:</td>
        <td>
         <input name="FormQuarta" size="12" maxlength="80" value="<%=quarta%>"/>
        </td>
    </tr>
    <tr>
    	<td>Quinta:</td>
        <td>
         <input name="FormQuinta" size="12" maxlength="80" value="<%=quinta%>"/>
        </td>
    </tr>
    <tr>
    	<td>Sexta:</td>
        <td>
         <input name="FormSexta" size="12" maxlength="80" value="<%=sexta%>"/>
        </td>
    </tr>
    <tr>
    	<td>Sabado:</td>
        <td>
         <input name="FormSabado" size="12" maxlength="80" value="<%=sabado%>"/>
        </td>
    </tr>
    <tr>
    	<td>Domingo:</td>
        <td>
         <input name="FormDomingo" size="12" maxlength="80" value="<%=domingo%>"/>
        </td>
    </tr>
       
    <tr>
    	<td colspan="2" align="right">
     	 <input type="reset" value="Limpar" />
 <%
   If Request.QueryString("acao") = "editar" then
      NomeBotao = "Alterar"
   Else
    NomeBotao = "Cadastrar"
   End if
%>		
	<input type="submit" value="<%=NomeBotao%>" />
   </td>
 </tr>
 </table>
</form>
</body>
</html>

Quando clico em alterar mostra a mensagem:

Citar

Erro de compilação do Microsoft VBScript erro '800a03ee'

')' esperado

/livro mysql guia do programador/inserir.asp, linha 112


Response.Write(Response.Write(InverteDataMySql())data_inicio)
-------------------------------------------------^

 

Linha 112 é essa onde chamo a função:

<tr>
    	<td>Data Inicio:</td>
        <td>
         <input name="FormDataInicio" size="10" maxlength="80" value="<%=Response.Write(InverteDataMySql())data_inicio%>"/>
        </td>
    </tr>

Estou errando em colocar a função.

Gustavo, como já observou é a primeira vez que estou tentando criar um um página da cadastrar registro com data.

 

 

 

Share this post


Link to post
Share on other sites

Bom dia Teixeira está usando a função de maneira errada veja esses exemplos abaixo de como usar...

 

sql = "insert into clientes(nome,datanascimento,logradouro,numero) values ('" & varnome & "','" & InverteDataMySql(vardatanasc) & "','" & varlogradouro & "'," & varnumero & ")"

 

sql = "update clientes set datanascimento='" &  InverteDataMySql(vardatanasc) & "' where codigo=" & varcodigo

<input name="FormDataInicio" size="10" maxlength="80" value="<%=InverteDataMySql(data_inicio)%>"/>

value="<%=Response.Write(InverteDataMySql())data_inicio%>"/>

 

no trecho acima ou coloca value="<%=valor%>"  ou value="<%response.write valor%>"

 

confesso que nunca rodei o código com desse jeito como asp é uma mãe deve funcionar...
value="<%=Response.write valor%>"

 

 

 por curiosidade testei e vi que funciona se colocar o response.write em parenteses
value="<%=Response.write(valor)%>"

Share this post


Link to post
Share on other sites

Você pode tratar isso diretamente no banco de dados, retornando e enviando os dados no formato desejado.

 

#aqui você pega a data do banco e retorna no formato dd/mm/aaaa
SELECT
DATE_FORMAT(data,'%d/%m/%Y') AS data_cad
FROM tabela;

#aqui você faz o inverso, pega uma data no formado dd/mm/aaaa e salva no banco como aaaa-mm-dd
SELECT
STR_TO_DATE('13/07/2016','%d/%m/%Y') AS data_cad
FROM tabela;

 

Share this post


Link to post
Share on other sites

Gustavo, Josimar New...,

Acabei de imprimir todas as sugestões e vou estudar.

Agradeço de coração a vocês. Todos os dias fico horas procurando algo na internet para fazer funcionar essa página HTML com ASP interagindo com MySQL.

Só para vocês terem uma ideia...não sou maluco rs rs rs sou aposentado e gosto de ficar criando banco de dados e sites...cada um com a sua mania...

Retorno para informar o resultado.

Desejo muito Sucesso para todos!!!

 

  • +1 1

Share this post


Link to post
Share on other sites

Gustavo e Josimar,

Sinceramente não sei nem como me dirigir a vocês. Mais uma vez peço desculpa.

Se explicar o que estou passando vou transferir para quem ler que "estou querendo a coisa feita". Não, não é isso. Tudo que o livro explicou entendi, mas infelizmente não existe um exemplo explicado como gravar uma data no banco de dados no  exemplo do livro.
Entendo que tem que ser criado uma função e chamar essa função no form (como foi muito bem sugerido pelo Gustavo) ou trabalhar a data diretamente em um SELECT no banco.

Acontece que quando lei as sugestões de vocês entendo, mas não sei como vou aplicar no exemplo do livro.

Exemplo: tenho que entrar com:

sql = "insert into clientes(nome,datanascimento,logradouro,numero) values ('" & varnome & "','" & InverteDataMySql(vardatanasc) & "','" & varlogradouro & "'," & varnumero & ")" 

E, só mudar o nome dos campos:

Eu já tenho tenho um INSET INTO que faz parte desse exemplo que tem esse código da página gerencia-registro que achei que havia necessidade de informar:

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & Request.Form("FormDataInicio")      & "' "
	sql = sql & ")"

Essa parte devo alterar com a sua sugestão Gustavo?

 

Tenho também UPDATE:

'Executa a alteração do registro, se solicitada
Elseif Request.QueryString("acao") = "editar" then
	sql = "UPDATE LIVROS SET "
	sql = sql & "livro        = '" & Request.Form("FormNomeLivro")   & "',"
	sql = sql & "autor        = '" & Request.Form("FormNomeAutor")   & "',"
	sql = sql & "editora      = '" & Request.Form("FormNomeEditora") & "',"
	sql = sql & "data_inicio  = '" & Request.Form("FormDataInicio")  & "' "
	sql = sql & "WHERE id     =  " & Request.Form("FormCodigoLivro")  

Devo altera com a sua sugestão Gustavo?

 

Desculpe, mas observe:

  1. O banco está assim:
  2. Citar

    id                   int(11)                 
    livro             varchar(255)          
    autor           varchar(50)             
    editora        varchar(60)             
    data_inicio  datetime                

     

  3. Não estava conseguindo gravar o campo data entrei com a sugestão do Gustavo, mas errei em usar a função.

  4. Pergunto.  Do código abaixo retiro a função?

  5. <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%
    	'Dados para a conexão com o banco de dados
    	driver   = "{MySQL ODBC 3.51 Driver}"   ' Driver para conexão ODBC
    	servidor = "localhost"					' Nome DNS ou IP do seu servidor HTTP
    	usuario	 = "root"						' Nome de usuário para acesso ao MySQL
    	senha 	 = "admin"						' Senha de acesso
    	banco	 = "integracao"					' Nome do banco de dados  
    
    ' Cria um objeto fr conexão com banco de dados
    Set cnnDB = Server.CreateObject("ADODB.Connection")
    
    ' Cria a string de conexão
    connStr = "driver=" + driver + "; uid=" + usuario + "; "
    connStr = connStr + "pwd=" + senha + "; database=" + banco
    
    
    ' Seta a string de conexão, e realiza a conexão
    cnnDB.ConnectionString = connStr
    cnnDB.Open
    
    ' Caso ocorra um erro, prossiga até o tratamento dp erro
    On error resume next
    
    ' Verifica se o arquivo foi chamado em modo de edição
    If Request.QueryString("acao") = "editar" then
    
    ' Cria a expressão que captura os dados do registro a ser alterado
    sql = " SELECT * FROM Livros WHERE ID = "
    sql = sql + Request.QueryString("buscacodigo")
    response.write
    
    
    ' Cria um objeto para armazenar o registro da consulta
    Set rs = Server.CreateObject("ADODB.RecordSet")
    
    ' Ativa a conexão criada para o ResultSet
    Set rs.ActiveConnection = cnnDB
    
    ' Executa a expressão SQL no servidor
    rs.Open sql
    
    ' Armazena os valores capturados em variáveis auxiliares, se existir
    codigo  	 = rs("id")
    livro   	 = rs("livro")
    autor  		 = rs("autor")
    editora 	 = rs("editora")
    data_inicio  = rs("data_inicio")
    End if
    %>
    
    <%
    Function InverteDataMySql(data_inicio)
    if not isdate(data_inicio) then exit function
    if instr(data_inicio, " ") > 0 then
    hora  = split(data_inicio, " ")(1)
    end if
    InverteDataMySql = year(cdate(data_inicio)) & "-" & month(cdate(data_inicio)) & "-" & day(cdate(data_inicio))
    if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
    End Function 
    %>
    
    <html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Gerenciando Registros</title>
    </head>
    
    <body>
    Preencha os campos a seguir:
    <%
     If Request.QueryString("acao") = "editar" then
     	acao = "editar"
     Else
     	acao = "adicionar"
     End if
    %>
    
    <form method="post" action="gerencia-registro.asp?acao=<%=acao%>">
    <input type="hidden" name="FormCodigoLivro" value="<%=Codigo%>" />
    <table>
    	<tr>
        	<td>Nome do Livro</td>
            <td>
            <input name="FormNomeLivro" size="80" maxlength="255" value="<%=livro%>">
            </td>
        </tr>
        <tr>
        	<td>Nome do Autor:</td>
            <td>
            <input name="FormNomeAutor" size="80" maxlegth="100" value="<%=autor%>" />
            </td>
        </tr>
        <tr>
        	<td>Nome da Editora:</td>
            <td>
             <input name="FormNomeEditora" size="60" maxlength="80" value="<%=editora%>"/>
            </td>
        </tr>
        <tr>
        	<td>Data Inicio:</td>
            <td>
             <input name="FormDataInicio" size="10" maxlength="80" value="<%=Response.Write data_inicio%>"/>
            </td>
        </tr>
        
        <tr>
        	<td colspan="2" align="right">
         	 <input type="reset" value="Limpar" />
     <%
       If Request.QueryString("acao") = "editar" then
          NomeBotao = "Alterar"
       Else
        NomeBotao = "Cadastrar"
       End if
    %>		
    	<input type="submit" value="<%=NomeBotao%>" />
       </td>
     </tr>
     </table>
    </form>
    </body>
    </html>

     

  6. Gustavo, deu erro indicando  ') falta,  quando incluir as sugestões sobre como deveria ficar os "value="

  7. Pensei em criar outro banco com o exemplo do Gustavo, mas não consegui.

Desculpe por alguma coisa. Quero voltar sempre.

Obrigado. 

 

 

Share this post


Link to post
Share on other sites

Li o seu post as pressas e vi que seu campo onde pede a data está como datetime, ou seja, ele deve entrar uma data no formato yyyy-mm-dd HH:mm:ss (ano, mês, dia, horas, minutos e segundos).

 

Verifica no teu banco de dados se o campo está definido como datetime, se estiver, muda para date que acredito que resolva.

Share this post


Link to post
Share on other sites

Boa noite, Josimar.

Estava sim como "datetime" e já mudei para "date".

Já tinha tentado essa mudança. Estou errando feio é na função chamar esse função.

Acredito que teria que trabalhar vendo todas as páginas.

inserir.asp

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%
	'Dados para a conexão com o banco de dados
	driver   = "{MySQL ODBC 3.51 Driver}"   ' Driver para conexão ODBC
	servidor = "localhost"					' Nome DNS ou IP do seu servidor HTTP
	usuario	 = "root"						' Nome de usuário para acesso ao MySQL
	senha 	 = "admin"						' Senha de acesso
	banco	 = "integracao"					' Nome do banco de dados  

' Cria um objeto fr conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

' Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco


' Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

' Caso ocorra um erro, prossiga até o tratamento dp erro
On error resume next


' Verifica se o arquivo foi chamado em modo de edição
If Request.QueryString("acao") = "editar" then

' Cria a expressão que captura os dados do registro a ser alterado
sql = " SELECT * FROM Livros WHERE ID = "
sql = sql + Request.QueryString("buscacodigo")
response.write

' Cria um objeto para armazenar o registro da consulta
Set rs = Server.CreateObject("ADODB.RecordSet")

' Ativa a conexão criada para o ResultSet
Set rs.ActiveConnection = cnnDB

' Executa a expressão SQL no servidor
rs.Open sql

' Armazena os valores capturados em variáveis auxiliares, se existir
codigo  	 = rs("id")
livro   	 = rs("livro")
autor  		 = rs("autor")
editora 	 = rs("editora")
data_inicio  = rs("data_inicio")
End if
%>

<%
Function InverteDataMySql(data_inicio)
if not isdate(data_inicio) then exit function
if instr(data_inicio, " ") > 0 then
hora  = split(data_inicio, " ")(1)
end if
InverteDataMySql = year(cdate(data_inicio)) & "-" & month(cdate(data_inicio)) & "-" & day(cdate(data_inicio))
if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
End Function 
%>

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registros</title>
</head>

<body>
Preencha os campos a seguir:
<%
 If Request.QueryString("acao") = "editar" then
 	acao = "editar"
 Else
 	acao = "adicionar"
 End if
%>

<form method="post" action="gerencia-registro.asp?acao=<%=acao%>">
<input type="hidden" name="FormCodigoLivro" value="<%=Codigo%>" />
<table>
	<tr>
    	<td>Nome do Livro</td>
        <td>
        <input name="FormNomeLivro" size="80" maxlength="255" value="<%=livro%>">
        </td>
    </tr>
    <tr>
    	<td>Nome do Autor:</td>
        <td>
        <input name="FormNomeAutor" size="80" maxlegth="100" value="<%=autor%>" />
        </td>
    </tr>
    <tr>
    	<td>Nome da Editora:</td>
        <td>
         <input name="FormNomeEditora" size="60" maxlength="80" value="<%=editora%>"/>
        </td>
    </tr>
    
  'Gustavo testei aqui as suas sugestões mas não funciona.
    <tr>
    	<td>Data Inicio:</td>
        <td>
         <input name="FormDataInicio" size="10" maxlength="80" value="<%=InverteDataMySql(data_inicio)%>"/>
        </td>
    </tr>
    
    <tr>
    	<td colspan="2" align="right">
     	 <input type="reset" value="Limpar" />
 <%
   If Request.QueryString("acao") = "editar" then
      NomeBotao = "Alterar"
   Else
    NomeBotao = "Cadastrar"
   End if
%>		
	<input type="submit" value="<%=NomeBotao%>" />
   </td>
 </tr>
 </table>
</form>
</body>
</html>

aqui é lista.asp

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<% 
 'Dados para a conexão com o banco de dados
 driver   = "{MySql ODBC 3.51 Driver}" ' Drive para conexão ODBC
 servidor = "localhost"                ' Nome DNS OU IP dp seu servidor HTTP
 usuario  = "root"                     ' Nome de usuário para acesso ao MySQL
 senha    = "admin"                    ' Senha de acesso
 banco    = "integracao"               ' Nome do banco de dados

'Cria um objeto de conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

'Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco

'Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

'Cria a expressão SQL de consulta
sql = " SELECT * FROM livros ORDER BY livro ASC "

'Cria um objeto para armazenar o retorno da consulta,
'conhecido como ResultSet (Conjunto de Reultado)
Set rs = Server.CreateObject("ADODB.RecordSet")

'Ativa a conexão criada para o ResultSet
Set rs.ActiveConnection = cnnDB

'Execute a expressão SQL no servidor
rs.Open sql
%>

<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registros</title>
</head>

<body>
Preencha os campos a seguir:
 <table width="100%" border="1" cellpadding="1" cellspacing="0" >
  <tbody>
  <tr align="center" bgcolor="#999999">
   <td width="10%">Cód.</td>
   <td width="15%">Livro</td>
   <td width="8%">Autor</td>
   <td width="6%">Editora</td>
   <td width="5%">Início</td>
</tr>
<%
'Execute um while para navegar nos registros de retorno
while not rs.EOF
	codigo       = rs("id")
	livro        = rs("livro")
	autor        = rs("autor")
	editora      = rs("editora")
	data_inicio  = rs("data_inicio")
%>

 <tr>
  <td align="right"><%=Codigo%>
  	<a href="inserir.asp?acao=editar&buscacodigo=<%=Codigo%>">(Editar)</a>
    <a href="gerencia-registro.asp?acao=excluir&buscacodigo=<%=Codigo%>">(Excluir)</a></td>
  <td><%=livro%></td>
  <td><%=autor%></td>
  <td><%=editora%></td>
  <td><%=data_inicio%></td>
</tr>
 
<%
 'Avança para o próximo registro
 rs.MoveNext
 
 'Fim do while
Wend
%>
</tbody>
</table>
<br /><a href="inserir.asp">Clique aqui para inserir um novo registro.</a><br />
</body>
</html>

por ultimo gerencia-registro.asp

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!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" lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Gerenciando Registro</title>
</head>

<%
'Dados para a conexão com o banco de dados
 driver   = "{MySQL ODBC 3.51 Driver}" ' Driver para conexão ODBC
 servidor = "localhost"                ' Nome DNS ou do seu servido HTTP
 usuario  = "root"                     ' Nome de usuário para acesso ao MySQL
 senha    = "admin"                    ' Senha de acesso
 banco    = "integracao"               ' Nome do banco de dados

'Cria um objeto de conexão com banco de dados
Set cnnDB = Server.CreateObject("ADODB.Connection")

'Cria a string de conexão
connStr = "driver=" + driver + "; uid=" + usuario + "; "
connStr = connStr + "pwd=" + senha + "; database=" + banco

'Seta a string de conexão, e realiza a conexão
cnnDB.ConnectionString = connStr
cnnDB.Open

'Caso ocorra um erro, prossiga até o tratamento de erro
On error resume next

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & Request.Form("FormDataInicio")      & "' "
	sql = sql & ")"

'Executa a expressão SQL no servidor
cnnDB.Execute sql

'Verifica o sucesso da operação, baseada ma variável 'err'
If err.number = 0 then
 Response.Write("Operação realizada com sucesso")
Else
 Response.Write("Erro: " + err.description)
 End if

'Executa a alteração do registro, se solicitada
Elseif Request.QueryString("acao") = "editar" then
	sql = "UPDATE LIVROS SET "
	sql = sql & "livro        = '" & Request.Form("FormNomeLivro")   & "',"
	sql = sql & "autor        = '" & Request.Form("FormNomeAutor")   & "',"
	sql = sql & "editora      = '" & Request.Form("FormNomeEditora") & "',"
	sql = sql & "data_inicio  = '" & Request.Form("FormDataInicio")  & "' "
	sql = sql & "WHERE id     =  " & Request.Form("FormCodigoLivro")  

'Response.Write "UPDATE LIVROS SET = " & sql

'Executa a expressão SQL no servidor
cnnDB.Execute sql 
'Response.Write "Query = " & sql

' Verifica o sucesso da operação, baseada na variável 'err'
If err.number = 0 then
	Response.Write("Operação realizada com sucesso")
Else
	Response.Write("Erro: " + err.description)
 End if 

' Execute a exclusão do registro, se solicitada
Elseif Request.QueryString("acao") = "excluir" then
	sql = " DELETE FROM LIVROS WHERE ID = "
	sql = sql & Request.QueryString("buscacodigo")

' Ececuta a expressão SQL no servidor
cnnDB.Execute sql 

'Verifica o sucesso da operação, baseada na variável 'err'
If err.number = 0 then
	Response.Write("Operação realizada com sucesso")
Else 
	Response.Write("Erro: " + err.description)
 End if

End if

%>

<br /><a href="inserir.asp">Clique aqui para inserir um novo registro.</a>
<br /><a href="lista.asp">Clique aqui para visualizar os registros.</a>

</body>
</html>

Abrindo página mostra erro:

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.13-log]Incorrect date value: '14/07/2017' for column 'data_inicio' at row 1

 

 

Share this post


Link to post
Share on other sites
19 horas atrás, TeixeiraRamos disse:

 

If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & Request.Form("FormDataInicio")      & "' "
	sql = sql & ")"

com base no código acima vou aplicar aquela função que escrevi... 
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & InverteDataMySql(Request.Form("FormDataInicio"))     & "' "
	sql = sql & ")"

Share this post


Link to post
Share on other sites

Bom Dia Gustavo,

Mais uma vez muito obrigado pela sua atenção.

A sua função está na página inserir.asp está assim:

<%
Function InverteDataMySql(data_inicio)
if not isdate(data_inicio) then exit function
if instr(data_inicio, " ") > 0 then
hora  = split(data_inicio, " ")(1)
end if
InverteDataMySql = year(cdate(data_inicio)) & "-" & month(cdate(data_inicio)) & "-" & day(cdate(data_inicio))
if hora <> "" then InverteDataMySql = InverteDataMySql & " " & hora
End Function 
%>

Onde chama a função, ou seja, no form está assim:

 

<tr>
    	<td>Data Inicio:</td>
        <td>
         <input name="FormDataInicio" size="10" maxlength="80" value="<%=InverteDataMySql(data_inicio)%>"/>
        </td>
    </tr>

 

O código que você aplicou, entrando a função está na página gerencia-registro.asp e ficou assim:

 

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & InverteDataMySql(Request.Form("FormDataInicio")) & "' "
	sql = sql & ")"

Gustavo, depois de aplicar o sugerido digitei na página inserir.asp um nome de um "livro", um "autor", uma "editora" e a "date" de hoje assim: 15/07/2017 e deu o seguinte erro:

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.13-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

 

Dessa forma eu continuo errando em alguma coisa.

 

 

Share this post


Link to post
Share on other sites
Em 15/07/2017 at 12:10, TeixeiraRamos disse:

<tr> <td>Data Inicio:</td> <td> <input name="FormDataInicio" size="10" maxlength="80" value="<%=InverteDataMySql(data_inicio)%>"/> </td> </tr>

esse trecho serve para converter do formato do mysql mas mas não mostra a data certinha não... essa função servia mais para salvar ou editar no banco...
esse erro não esta ligado diretamente na funcção não... mas cole a sql depois de montada... para vermos como ficou!!

Share this post


Link to post
Share on other sites

Olá Gustavo,

São essas SQL que você está pedindo para colar?

arquivo gerencia-registro.asp

 

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & InverteDataMySql(Request.Form("FormDataInicio")) & "'"
	sql = sql & ")"

'Executa a expressão SQL no servidor
cnnDB.Execute sql

'Verifica o sucesso da operação, baseada ma variável 'err'
If err.number = 0 then
 Response.Write("Operação realizada com sucesso")
Else
 Response.Write("Erro: " + err.description)
 End if

'Executa a alteração do registro, se solicitada
Elseif Request.QueryString("acao") = "editar" then
	sql = "UPDATE LIVROS SET "
	sql = sql & "livro        = '" & Request.Form("FormNomeLivro")   & "',"
	sql = sql & "autor        = '" & Request.Form("FormNomeAutor")   & "',"
	sql = sql & "editora      = '" & Request.Form("FormNomeEditora") & "',"
	sql = sql & "data_inicio  = '" & InverteDataMySql(Request.Form("FormDataInicio")) & "' "
	sql = sql & "WHERE id     =  " & Request.Form("FormCodigoLivro")  

Por favor, são três:

1) formulário que serve de ponte para tramitação dos dados entre o usuário e a linguagem ASP - inserir.asp;

2) o arquivo que realiza a operação de inserção é o gerencia-registro.asp;

3) para visualizar o registro cadastrados - lista.asp

 

Qual devo postar a SQL?

3)

 

Share this post


Link to post
Share on other sites

Não teria outra forma de você escrever essa sql query? Acho esse tipo de concatenação estranha e um pouco suja.

Share this post


Link to post
Share on other sites

Olá Josimar Bom Dia,

Todas as sql query estão no livro MySQL - Guia do Programador - André Milani, acredito que sim, mas volto a afirmar que se vou escrever outra sql query é devido a minha inclusão de mais um campo no exemplo do livro.

Fiz diversas inclusões de registros, alterei, exclui e tudo funcionou corretamente nenhum problema.

Se um banco de dados, com uma "Table" - chamada "livros" com os campos: "livro", "autor", "editora" funciona perfeitamente estaria com concatenação estranha? Se é isso eu não entendo. Volto a firmar que somente com os campos citados todos aceitam  cadastramento, alterações e exclusões sem problema algum. Porém com a minha inclusão de mais uma campo chamado "date" se abrir o arquivo inserir.asp e digitar dados nos campos, inclusive a data, por exemplo, 18/07/2017 e clicar no botão "Cadastrar":

  Mostra a mensagem:

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.13-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

 

Bem, não vamos considerar esse arquivo inserir.asp  que serve apenas de ponte para tramitação dos dados...com já informei.

O arquivo que realiza a operação de inserção é o gerencia-registro.asp  que tem uma SQL importante:

 

'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
	sql = "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ( "
	sql = sql & "'" & Request.Form("FormNomeLivro")       & "',"
    sql = sql & "'" & Request.Form("FormNomeAutor")       & "',"
	sql = sql & "'" & Request.Form("FormNomeEditora")     & "',"
	sql = sql & "'" & InverteDataMySql(Request.Form("FormDataInicio")) & "'"
	sql = sql & ")"

Aqui eu chamei a função que o Gustavo sugeriu "InverteDataMySql"

Volto a afirma que, se retirar a linha da função "inverteDataMySql"  os registros dos outros campos (livro, autor, editora) são cadastrados no banco de dados sem nenhum problema.

Josimar, com todo o respeito, mas se você quiser pode postar, por favor, como a SQL deveria ser criada. Quem sabe que é isso mesmo. Eu não estou vendo, mas outros podem ver.

O caso é que nunca criei um formulário...com data para inserir em banco de dados MySQL. E o pior não consigo um livro, apostila etc que contenha uma orientação sobre o assunto. E o pior está para vir. E os outros campos que podem ser usado em formulário onde vou estudar. Já fui orientado por um amigo Luis (que está viajando): "Só para adiantar, data você tem que formatar numa variável antes. Obedecer o formato do banco que é invertido Ano/mês/dia hora:min:seg ".

Ok, sim, muito bem, mas como na prática vou fazer isso?

O que o Augusto informou já não está invertendo a data, mas acontece que não funciona? 

Obrigado.   

 

 

 

 

Share this post


Link to post
Share on other sites

Esse é um problema com sua sintaxe de sql. Tente rodar essa sql query diretamente no banco. Veja se o erro ocorre.

 

Caso não ocorra, tente jogar sua sql query no página sem essas concatenações para ver o resultado.

Share this post


Link to post
Share on other sites

Josimar

Diretamente no banco cadastrou com essa SQL:

 

INSERT INTO livros (livro, autor, editora, data_inicio) 
VALUES ('Teste Forum', 'Josimar', 'Josimar Livros', '2017-07-18'); 

Entrei na página retirei as concatenações, colei a query do banco.

'Caso ocorra um erro, prossiga até o tratamento de erro
On error resume next
'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
sql =  "INSERT INTO livros (livro, autor, editora, data_inicio) " 
sql = sql & "'" & "VALUES ('Teste Forum', 'Josimar', 'Josimar Livros', '2017-07-18')" 
'Executa a expressão SQL no servidor
cnnDB.Execute sql

Mas não aconteceu nada. O banco não gravou nada.

Share this post


Link to post
Share on other sites
2 horas atrás, TeixeiraRamos disse:

Josimar

Diretamente no banco cadastrou com essa SQL:

 


INSERT INTO livros (livro, autor, editora, data_inicio) 
VALUES ('Teste Forum', 'Josimar', 'Josimar Livros', '2017-07-18'); 

Entrei na página retirei as concatenações, colei a query do banco.


'Caso ocorra um erro, prossiga até o tratamento de erro
On error resume next
'Verifica se o arquivo foi chamado a partir de um formulário
If Request.QueryString("acao") = "adicionar" then
sql =  "INSERT INTO livros (livro, autor, editora, data_inicio) " 
sql = sql & "'" & "VALUES ('Teste Forum', 'Josimar', 'Josimar Livros', '2017-07-18')" 
'Executa a expressão SQL no servidor
cnnDB.Execute sql

Mas não aconteceu nada. O banco não gravou nada.

 

Cara. tá com muito tempo mesmo me mexi com ASP. Más essa verificação que você faz está correta?

 

If Request.QueryString("acao") = "adicionar"

Não seria (==)? Desculpe se me equivoquei, é como já havia falado, faz muito tempo mesmo que vi ASP.

 

Outra coisa: seu código faz o tratamento desse erro? Se o fizer, qual erro ele retorna? É extremamente importante tratar exceções.

 

Share this post


Link to post
Share on other sites

Outra coisa, usa a query direto sem aquela concatenação da variável "sql = sql & " pra ver o que acontece:

 

Exemplo: sql =  "INSERT INTO livros (livro, autor, editora, data_inicio) VALUES ('Teste Forum', 'Josimar', 'Josimar Livros', '2017-07-18')"

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By TeixeiraRamos
      Olá,
      Com essa "Procedures" consigo criar a coluna data e semana.
      Como poderia fazer para a "Precedures" criar uma outra coluna só com o dia e o mês, como por exemplo: 27 de fevereiro
      Obrigado
      BEGIN DECLARE var_data DATE; DECLARE var_dia VARCHAR(50); DECLARE contador INT DEFAULT 0; SET var_data = data_inicial; SET var_dia = DAYNAME(data_inicial); WHILE contador < intervalo DO INSERT INTO tb02_santosdodia(ctb02_datasantosdia, ctb02_diassemanas) VALUES (var_data, var_dia); SET contador = contador + 1; SET var_data = DATE_ADD(data_inicial, INTERVAL contador DAY); SET var_dia = DAYNAME(var_data); END WHILE; END  
       
    • By TeixeiraRamos
      Olá,
      Por favor favor, em um script tenho:
      <?php $sql = "SELECT pensamento_do_dia FROM tbpdodia WHERE data_inicio = CURRENT_DATE"; . . . ?> Meu computador a data e a hora se encontram normal.
      Contudo, 2 (duas) horas antes das 00:00 a data muda, só no site, para o dia dia seguinte.
      Ontem, 23/02/2019, às 19:00 estava no site 23/12/2019 (igual ao computador). Quando chegou mais ou menos às 22:01, abri o site já se entrava a data 24/02/2019.
      A query dentro das linhas <?php ?> também influencia. Tenho que colocar algo na sql com current_date. 
    • By asacap1000
      Salve Galera, estou quase finalizando um relatório porém travei em um campo.
      Este relatório consiste em subtrair hora de entrada e saída, trazer em dias horas e minutos de um período.
      Depois preciso calcular a média destes resultados.
      eu barrei na parte de dias não vem a informação correta.
       
      Segue select se alguem puder me dar uma força.
       
      SELECT io.id_in_out, IOP.DOCUMENT,IO.TIME_IN entrada, IO.TIME_RELEASE_PP saida, LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) /24 )), 2, '0') || ':' || LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) * 24 )), 2, '0') || ':' || LPAD(TRUNC(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600) / 60), 2, '0') || ':' || LPAD(TRUNC(MOD(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600), 60)), 2, '0') TEMPO FROM DESMEMBR DD, IN_OUT_POS IOP, IN_OUT IO, SPEDITEURE S, VEHICLE V, DRIVER D WHERE DD.TYP_PROCESS = 'DINACI' AND 'DI' = IOP.TYP_DOCUMENT AND DD.NR_DI = IOP.DOCUMENT AND IOP.ID_IN_OUT = IO.ID_IN_OUT AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE') AND IO.STAT <> '80' AND S.ID_SPEDITEUR = IO.ID_SPEDITEUR AND V.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_IN >= TO_DATE('01/12/2018', 'dd/mm/yyyy') AND IO.TIME_IN <= TO_DATE('31/12/2018', 'dd/mm/yyyy') AND D.ID_DRIVER = IO.ID_DRIVER O resultado acima está vindo assim:
       
      1    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
      2    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
       
      Depois de acertar isso preciso realizar a média que a principio eu utilizaria o AVG mas dá erro.
       
      Agradeço quem puder me ajudar.
    • By Nioshi
      Bom dia pessoal, tenho o seguinte problema, meu back-end com PHP precisa fazer um select no banco de dados SQL server, e uma das condições para pegar o dado é a data, até ai sem problemas, se eu utilizar:
      $dataInicio = $dataInicio->format('d/m/Y'); ele pega o dado sem problema algum do meu banco, porem quando foi tentado implementar em outro SQL Server, ele retorna o seguinte erro: 
      SQLSTATE [22007, 242]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]A conversão de um tipo de dados nvarchar em um tipo de dados datetime resultou em um valor fora do intervalo. ou seja, eu acho que o problema é a forma que o sql foi instalado(inglês,português), enfim, o que eu realmente preciso e se tem como eu saber o dateformat do SQL server, antes de setar a variável da data para consulta.
       
      no SQL do cliente se colocar o seguinte código:
      $dataInicio = $dataInicio->format('m/d/y'); ele também funciona sem problema algum, o que eu preciso saber é quando utilizar qual.
       
      Obrigado desde já.
    • By silvagno
      Boa tarde,
       
      Tenho a seguinte input date time,  o que acontece que essa input chama sua id, porem não funciona com o meu script porque o script chama name e quando mudo para id não funciona o date time.
      É um script de replaceAll, ou seja ao selecionar a data e a hora no date time em teoria deveria substituir (NOME DO CLIENTE) pela data e hora.
       
      Bom, eu gostaria de saber se tem como modificar o script para chamar a id em vez do name ou ajustar a input para ser chamada por name.
      $('input[name="demo3"]').change(function(){ var nome = $(this).val(); var text = $('textarea[name="nome pessoal"]').val(); $('textarea[name="nome pessoal"]').val(text.replaceAll('(NOME DO CLIENTE)',nome)); }); <input id="demo3" type="text" size="25"><a href="javascript:NewCal('demo3','ddmmmyyyy',true,24)"><img src="images/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.