Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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)%>"

Compartilhar este post


Link para o post
Compartilhar em outros 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;

 

Compartilhar este post


Link para o post
Compartilhar em outros 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!!!

 

Compartilhar este post


Link para o post
Compartilhar em outros 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. 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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 & ")"

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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!!

Compartilhar este post


Link para o post
Compartilhar em outros 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)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros 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.   

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

Compartilhar este post


Link para o post
Compartilhar em outros 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')"

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
    • Por unset
      Olá, estou com um probleminha aqui se alguém puder ajudar,
       
      Eu tenho a data em uma coluna no formato date 2020-12-01 e a hora em outra coluna no formato time 09:00:00
       
      Como eu posso saber se a data de hoje é maior do que data e hora dessas 2 colunas?
    • Por thiagocola
      Eu peguei esse JSON no site do iFood e estou com dúvida de como converter esses 8 números em Time (HH:mm).
      Já tentei timestamp mas 8 dígitos é muito pequeno e já tentei ticks.
      Estou usando C#.
       
      "openingHours": [
                        {
                          "dayOfWeek": "MONDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "TUESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "WEDNESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "THURSDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "FRIDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SATURDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SUNDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        }
                      ]
       
      Estou achando que tenho que fazer algum tipo de multiplicação ou em última hipótese, esse valor é algum identificador interno do sistema deles.
       
      Tentei converter assim:
       
      DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
       
      var openingTime = dtDateTime.AddSeconds(13500000).ToLocalTime();
      // {06/06/1970 03:00:00}
       
      var closingTime = dtDateTime.AddSeconds(97140000).ToLocalTime();
      // {29/01/1973 05:20:00}
       
      Mas os valores que retornam não fazem sentido pra mim.
       
    • Por lucianfpaula
      Olá bom dia, estou com um problema, eu estou tentando fazer um select que me retorne dados de uma tabela com data igual a data do dia ou maior mas não estou conseguindo, só consigo trazer datas maiores que a do dia, mas datas igual ao dia não consigo, estou usando o seguinte select
      SELECT * FROM tabela WHERE id = 1 AND dataTermino >= NOW()
       
      Não sei se tem a ver com a data do servidor 
    • Por lucianfpaula
      Olá, saudações a todos, eu tenho a seguinte duvida: preciso identificar se a data do dia esta dentro de um intervalo de datas, nos temos o seguinte sql
      "SELECT * FROM tb_cadastro WHERE datCadastro BETWEEN '2010/09/10' AND '2011/10/10'".
      O que preciso é saber se a data do dia este nesse intervalo. Tipo
      Data 01 = 01/02/2020
      Data 02 = 10/02/2020
      Data 03 = 05/02/2020
      se Data 03 estiver no intervalo de Data 01 e Data 02 faça algo se não faça nada
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.