Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con comilla simple. (https://www.clubdelphi.com/foros/showthread.php?t=77740)

Daim 23-02-2012 11:39:24

Problema con comilla simple.
 
Hola compañeros, me presento ya que nunca había tenido la necesidad de resolver una duda, pero tengo 2 días resolviendo un problema que me tiene liado un mucho, les dejo el resumen:

Capturo datos de un Excel con nombres de empresas y sus datos, estos datos los vuelco a una DB, el problema viene cuando ingreso una empresa americana que tiene por nombre:

Villa's Brothers

Solo es esta empresa la que me da problemas, al intentar volcarla a la DB es cuando salta el mensaje de error de sintaxis del SQL.

He probado con QuoteStr, StringReplace, leyendo cada carácter y quitando las comillas, esto lo hago con un if que busca:

caracter <> ''''
o
caracter <> '"'

Pero no pasa nada, la condición no encuentra dicho carácter, podría quitarla a mano y evitarme problemas, pero la elegancia de un programa consiste en hacer creer al usuario que todo se realiza muy fácil.

Así que compañeros si alguien me puede echar una mano estaría agradecido.

P.D. Si alguien pudiera invitarme a ForoCoches resolvería otro gran problema que tengo en mi vida xD

Neftali [Germán.Estévez] 23-02-2012 12:14:59

Lo que debes hacer es una sustitución de caracteres en la cadena antes de "volcarla" a la Base de Datos.
Cambia la comilla simple, por 3 comillas simples.

Daim 23-02-2012 12:27:06

Neftali eso ya lo había pensado, lo que me dices es algo similar a esto:

Villas'''s Brothers

Pero como lo hago desde código, tengo un string:

s := "Villa's brothers";

Este string lo obtengo desde un Excel, implemento un while que recorra el vector de caracteres del string pero el if no tengo claro como definirlo, podria ser algo asi

s := "Villa's brothers";
s1 := '';
i := 0;
while i <= lenght(s) do
begin
if s[i] <> ''''' then
begin
s1 := s1 + s[i];
end;
i := i+1;
end;

Por lo que el resultado sin la comilla seria s1, pero vamos que tengo dudas de cual seria la condición, soy telemàtico por lo que estos temas no los domino, espero que mi pregunta no sea muy boba pero vamos que me tiene liado y no se por donde tirar...

Neftali [Germán.Estévez] 23-02-2012 12:43:56

Debería bastar con un código similar a este:

Código Delphi [-]
  s1 := AnsiReplaceText(s, #39, #39#39#39);

Si s contiene:

s => "Villa's brothers";

s1 debería acabar con el valor:

s1 => 'Villa'''s brothers';


La franja horaria es GMT +2. Ahora son las 17:31:48.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi