Ir para conteúdo

Arquivado

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

TeixeiraRamos

INSERT INTO,

Recommended Posts

Vamos supor que nesse exemplo tenha um campo numérico como ficaria? Considerando que trabalhei o banco de dados MySQL. Entendo que no comando fica as aspas simples assim para campo, digamos, texto:

INSERT INTO XTESTE
(Codigo, Localidade)
VALUES(12345, 'LISBOA')

Meu problema é quando a sintaxe SQL é escrita dentro da linguagem ASP com um campo numérico como fica? 

 

sql = "INSERT INTO LIVROS (LIVRO, AUTOR, EDITORA) VALUES ("
sql = sql & "'" & Request.Form("FormNomeLivro") & "', "
sql = sql & "'" & Request.Form("FormNomeAutor") & "', "
sql = sql & "'" & Request.Form("FormNomeEditora") & "'"
sql = sql & ")"

sql = "UPDATE LIVROS SET "
sql = sql & "LIVROS = '" & Request.Form("FormNomeLivro") & "', "
sql = sql & "AUTOR  = '" & Request.Form("FormNomeAutor") & "', "
sql = sql & "EDITORA = '" & Request.Form("FormNomeeDitora") & "' "
sql = sql & "WHERE ID = " & Request.Form("FormCodigoLivro")

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor,

A tentar incluir registro com o código:

' Verifica se o arquivo foi chamado a partir de um formulário
 If Request.QueryString("acao") = "adicionar" then
 	sql = "INSERT INTO tb_registros_para_controle(nome_livro, nome_autor, nome_editora, quant_fl, fl_parei, " 
	sql = sql & " data_inicio, data_termino, data_paralisacao, "
	sql = sql & " segunda_feira, terca_feira, quarta_feira, quinta_feira, "
	sql = sql & " sexta_feira, sabado, domingo, observacao ) VALUES (" 
	sql = sql & "'" & Request.Form("FormNomeLivro")                  & "', "
	sql = sql & "'" & Request.Form("FormNomeAutor")                  & "', "
	sql = sql & "'" & Request.Form("FormNomeEditora")                & "', "
	sql = sql & "'" & Request.Form("FormQuantFl")                    & ",  "
	sql = sql & "'" & Request.Form("FormFlParei")                    & ",  "
    sql = sql & "STR_TO_DATE('" & Request.Form("FormDataInicio")     &"','%d/%m/%Y')" & ", "
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataTermino")    &"','%d/%m/%Y')" & ", " 
    sql = sql & "STR_TO_DATE('" & Request.Form("FormDataParalisacao")&"','%d/%m/%Y')" & ", "
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataSegunda")    &"','%d/%m/%Y')" & ", "
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataTerca")      &"','%d/%m/%Y')" & ", " 
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataQuarta")     &"','%d/%m/%Y')" & ", "
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataQuinta")     &"','%d/%m/%Y')" & ", "
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataSexta")      &"','%d/%m/%Y')" & ", " 
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataSabado")     &"','%d/%m/%Y')" & ", " 
	sql = sql & "STR_TO_DATE('" & Request.Form("FormDataDomingo")    &"','%d/%m/%Y')" & ", "
	sql = sql & "'" & Request.Form("FormNomeObservacao") & "' "
	sql = sql & ")" 	 
 

Mostra o Erro:

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.20-log]Column count doesn't match value count at row 1

 

O mesmo INSERT INTO digitando direto no bando de dados inclui o registro:

INSERT INTO tb_registros_para_controle
            (id_registros, nome_livro, nome_autor, nome_editora, quant_fl, fl_parei, data_inicio,
	    	 data_termino, data_paralisacao, segunda_feira, terca_feira, quarta_feira, quinta_feira, 
	    	 sexta_feira, sabado, domingo, observacao ) 
	    VALUES (
                56,'Intrução HTML3 e CSS3','Richard Clark','Alta Book', 623, 20, 0000-00-00, 0000-00-00, 0000-00-00,
	            0000-00-00, 0000-00-00, 0000-00-00, 0000-00-00, 0000-00-00, 0000-00-00, 0000-00-00, 'teste'); 

Por favor.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

não é o mesmo "Insert", aparentemente faltou o principal (o id); verifique.

a proposito: considere trocar essas expressões:

Request.Form("FormNomeObservacao")

  por variaveis; seu codigo vai ficar bem mais legivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Fernando,

Obrigado pela ajuda, mas o código é o mesmo sim, inclusive é um exemplo de um livro. Com relação as expressões concordo que eu poderia caprichar mais , mas desde que estejam digitadas corretamente não seria impedimento para não manipular dados. 

Inclusive, no INSERT (o id), por ser do tipo "AUTO_INCREMENT", pode entrar ou não no INSERT INTO. Eu coloco as vezes para recuperar um "id" que foi excluído.

Pode tentar. Se não colocar na expressão o registro será incluído sem Erro.    

Inclusive, Fernando, se eu retirar essas 2 (duas) colunas  quant_fl, fl_parei, que criei depois de tudo pronto, funciona perfeitamente.

O comando INSERT pode falhar, mas acredito que já vi todas as possibilidades. Todas? Não, tem algo errado senão não daria o Erro.

Já fique horas tentando, mas nada. Pode ser que estou errando nas quebras de linhas ou em uma ( ' ) ou ( " ), ou ainda (", " ) ( , )

Não é à toa que pedem para ter muita atenção nas ( '), (" ")..., mas não daria esse Erro. Concorda?

Mas, Fernando valeu! Sempre é bom uma alerta.

     

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem,

Retirei duas aspas simples dos dois campos numérico, aqui:

sql = sql & " " & Request.Form("FormQuantFl")  & ", "
sql = sql & " " & Request.Form("FormFlParei")  & ", "

Com isso entrei com um novo registro e não apresentou Erro e o registro foi salvo no banco de dados.

Já Inclui, Editei e Exclui registro e funcionou.

Muito obrigado a todos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que comédia. Ontem fiz todos os testes, tudo indicava  que foi resolvido, mas não. Agora fui editar e alterar um registro 

voltou a mostrar erro. Continua erro e é no campo "quant_fl". Que loucura.

 

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.20-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 ' data_inicio = STR_TO_DATE('','%d/%m/%Y'), data_termino = STR_TO_DA' at line 1

Observo que não entrei com nenhuma data, no campo "data_inicio" e nem no campo "data_termino". Só digitei "quant_fl" e mostra Erro no campo data?

Será que aqui estou deixando o campo numerico com formatação de data?

'Executa a alteração do registro, se solicitada
  Elseif Request.QueryString("acao") = "editar" then
   sql = "UPDATE tb_registros_para_controle SET "
   sql = sql & "nome_livro        	= '" & Request.Form("FormNomeLivro") 				   & "', "
   sql = sql & "nome_autor        	= '" & Request.Form("FormNomeAutor") 				   & "', "
   sql = sql & "nome_editora      	= '" & Request.Form("FormNomeEditora") 				   & "', "
   sql = sql & "quant_fl      	    =  " & Request.Form("FormQuantFl") 				       & ", "
   sql = sql & "fl_parei      	    =  " & Request.Form("FormFlParei") 				       & ", "
   sql = sql & "data_inicio       	= STR_TO_DATE('" & Request.Form("FormDataInicio")      &"','%d/%m/%Y')" & ", "  
   sql = sql & "data_termino      	= STR_TO_DATE('" & Request.Form("FormDataTermino") 	   &"','%d/%m/%Y')" & ", "
   sql = sql & "data_paralisacao  	= STR_TO_DATE('" & Request.Form("FormDataParalisacao") &"','%d/%m/%Y')" & ", "
   sql = sql & "segunda_feira     	= STR_TO_DATE('" & Request.Form("FormDataSegunda")     &"','%d/%m/%Y')" & ", "
   sql = sql & "terca_feira       	= STR_TO_DATE('" & Request.Form("FormDataTerca")       &"','%d/%m/%Y')" & ", "
   sql = sql & "quarta_feira      	= STR_TO_DATE('" & Request.Form("FormDataQuarta")      &"','%d/%m/%Y')" & ", "
   sql = sql & "quinta_feira      	= STR_TO_DATE('" & Request.Form("FormDataQuinta")      &"','%d/%m/%Y')" & ", "
   sql = sql & "sexta_feira       	= STR_TO_DATE('" & Request.Form("FormDataSexta")       &"','%d/%m/%Y')" & ", "
   sql = sql & "sabado            	= STR_TO_DATE('" & Request.Form("FormDataSabado")      &"','%d/%m/%Y')" & ", "
   sql = sql & "domingo           	= STR_TO_DATE('" & Request.Form("FormDataDomingo")     &"','%d/%m/%Y')" & ", "
   sql = sql & "observacao        	= '" & Request.Form("FormNomeObservacao") 			   &"' "
   sql = sql & "WHERE id_registros  =  " & Request.Form("FormCodigoLivro") 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei porque seu Editar e deixar os campos

 sql = sql & "quant_fl      	    =  " & Request.Form("FormQuantFl") 				       & ", "
 sql = sql & "fl_parei      	    =  " & Request.Form("FormFlParei") 				       & ", "

Não faz o UPDATE e mostra Erro

Citar

Erro: [MySQL][ODBC 3.51 Driver][mysqld-5.7.20-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 ' fl_parei = , data_inicio = STR_TO_DATE('','%d/%m/%Y'), data_t' at line 1

Porém se alterar apenas as datas e manter os campos quant_fl e fl_parei com os valores funciona.

Tem que alterar o código ou alguma coisa no banco de dados MySQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que fiz para conseguir entrar com os registros?

No banco de dados indiquei 0 como "Defaust" para os campos tipo int -  "quant_fl"  e "fl_parei", mas continuo sem tender. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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