Num grid de uma aplicação deparei-me recentemente com um erro, que origina quando um dos campos da query mysql, os utilizadores dá jeito escreverem uma plica ', como vendo no anexo quando escrevem por exemplo wc’s.
Acontece que o grid ao encontrar o registo com o campo que contenha a plica ', origina erro SQL syntax;
Ver exemplo
.
Esse erro está acontecendo por causa da aspa simples no texto do campo anunciosugestão.
exatamente na palavra wc’s
no onValidade faça um replace na aspa simples
{anunciosugestao} = str_replace("’","’",{anunciosugestao});
no caso trocou ’ por ’
Isso para MySql.
execute um replace no campo e substitua o ’ por `. pode ser direto no sql.
Em príncipio resolve o problema, especificamente no campo indicado, MAS é preciso ter em conta que nunca sabemos quando um utilizador onde e quando irá utilizar a plica (aspas simples) e em que campo, assim em todos os campos temos de utilizar a rotina sugerida, o que não faz muito sentido.
Herberto,
E nesse caso daria problemas se você usar aspas duplas (") no teu SQL?
Curiosamente não da problema com as " (aspas), mas neste caso que referi, não fica muito bem escrever wc"s
para além disso estou a preparar uma base de dados pessoal, onde vou registar rotinas de programação, como voce sabe na programação a ’ (plica) é muito utilizada, o que não poderei alterar a ’ por outra coisa, caso contrário a rotina irá originar erros quando efetuar o copy… paste para dentro de um futuro programa, teria de ter o cuidado de novamente substituir o que la estava (por exemplo aspas ") pela plica '.
Essa aspa ’ (simples) sempre deu problema desde que eu uso o SC, ai fiz uma rotina que nas telas de cadastros onde ela pode ocorrer no Onvalidate,
eu faço o str_replace em todos os campos.
Porque quando o cliente se deparava com ela, tinha que me ligar e eu entrar na BASE diretamente remover, para ele poder usar o cadastro normalmente.
Seria interessante o SC já eliminar sozinho essa ’ na hora de gravar todos os campos.
Não me referia a substituir em wc"s e sim na string do teu SQL, ficando assim:
"UPDATE imoveis … ";
Faço como o Jailton e mandei uma sugestão há muito tempo de ter essa facilidade mas nunca tive retorno.
Boa noite,
Não consegui chegar no mesmo erro. Você poderia me informar alguns passos pra que eu possa simular o problema?
att,
Bernhard Bernsmann
No SC7
Num grid onde o SQl contém por exemplo
SELECT numero, codigointerno, codfabricante, nserie, descricao, codfamilia, familia, FROM artigos
Quando o utilizador ao escrever na descrição como neste caso toalhetas para wc’s provova o erro de sintax do SQL como mostra na 1ª mensagem enviada.
Aparentemente já fiz um texte com o SC8 e não origina esse erro.