Celamar 0 Denunciar post Postado Julho 12, 2005 Como resolver o apóstrofe de um texto num INSERT, por exemplo: strTexto := 'MARCA D'AGUA'; Query.SQL.Add('INSERT INTO MINHATABELA (NOME) VALUES(' + '''' + Trim(strTexto) + ''')'); Ele dá erro quando encontra o apóstrole, porque ele acha que minha string terminou, sendo que na verdade ainda tem "AGUA" para cadastrar, aí a sintaxe fica errada pq o "AGUA" fica fora da sintaxe. Eu pensei em trocar o caracter quando gravar e quando ler retrocar, mas o problema é que eu estou migrando esta tablea para outro banco, e o sistema que popula esta tabela não fui eu que fiz e tem varios outros sistemas q usam esta tabela, se eu trocar o apóstrofo por outro caracter vai ficar errado para os demais sistemas. Como resolver isso? Valeu Compartilhar este post Link para o post Compartilhar em outros sites
rucanuso 0 Denunciar post Postado Julho 12, 2005 Caro celamar, A coisa é simples, utilize aspas simples para a sintaxe do comando e aspas duplas internamente, OK! Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Julho 12, 2005 você pode me passar um exmplo em cima do código que citei? Caro celamar, A coisa é simples, utilize aspas simples para a sintaxe do comando e aspas duplas internamente, OK! <{POST_SNAPBACK}> Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Julho 12, 2005 Veja a forma como eu tentei fazer.. mas não funcionou: sNome := 'te''ste'; //te'ste Query.SQL.Add('INSERT INTO LOGRADOU (NOME) VALUES (' + '"' + Trim(sNome) + '"); Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Julho 12, 2005 É que o dados que vem do banco que estou importanto é com apóstrofe e não com aspas... eu não posso alterar pq é uma consulta universal pela empresa... tem que estar igual...Daí não sei como resolver... Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Julho 12, 2005 Pô veinho fiz igualzinho e no meu não funcionou, será q tem alguma coisa há ver com o tipo de banco de dados? Mas a sintaxe está da forma ANSII... mas em todo caso eu estou usando FIRIBIRD.Valeu pela ajuda... Compartilhar este post Link para o post Compartilhar em outros sites
Celamar 0 Denunciar post Postado Julho 12, 2005 Veja como está meu código completo: sNome := 'te''ste'; iCodigo := 9995; sTipo := ADOQuery2.FieldValues['TIPO']; iCep := ADOQuery2.FieldValues['CEP']; iBairro := ADOQuery2.FieldValues['BAIRRO']; nRolei := ADOQuery2.FieldValues['NROLEI']; iData := ADOQuery2.FieldValues['DTALEI']; iDelim1 := ADOQuery2.FieldValues['DELIMITADOR1']; iDelim2 := ADOQuery2.FieldValues['DELIMITADOR2']; QueryFirebird.Active := false; QueryFirebird.SQL.Clear; QueryFirebird.SQL.Add('INSERT INTO LOGRADOU ' + '(NOME, ' + ' CODIGO, ' + ' TIPO, ' + ' CEP, ' + ' BAIRRO, ' + ' NROLEI, ' + ' DTALEI, ' + ' DELIMITADOR1, ' + ' DELIMITADOR2) VALUES("' + Trim(sNome) + '", ' + IntToStr(iCodigo) + ', ' + '''' + Trim(sTipo) + ''', ' + IntToStr(iCep) + ', ' + IntToStr(iBairro) + ', ' + '''' + Trim(nRolei)+ ''', ' + IntToStr(iData) + ', ' + IntToStr(idelim1) + ', ' + IntToStr(idelim2) + ')'); try QueryFirebird.SQL.Text; QueryFirebird.ExecSQL; QueryFirebird.Transaction.Commit; QueryFirebird.Close; ADOQuery2.Next; Result := true; except on E: Exception do begin msgErro := E.Message; Result := false; exit; end; end; end; E não funcionou... Compartilhar este post Link para o post Compartilhar em outros sites