Ir para conteúdo

Arquivado

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

Celamar

Apóstrofo no INSERT

Recommended Posts

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

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

É 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

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

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

×

Informação importante

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