Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Error en Insert (https://www.clubdelphi.com/foros/showthread.php?t=42185)

francisco260184 06-04-2007 01:49:17

Error en Insert
 
Hola, Estoy haciendo un INSERT en una tabla que cree desde DELPHI 7, (en paradox), Pero me marca un error en un campo llamado DESCRIPCION, ya que la descripcion del producto contiene unas comillas ("). Es decir:

PRODUCTO --> SAWBLADE 8" DIAM/150TEETH.

Y me marca error al momento de insertarla en la tabla,
El campo de la tabla que yo cree se llama DESCR y es un Char (50)

El INSERT lo estoy haciendo de la siguiente manera:

Edit1.Text:=DBEdit1.Text;
Edit2.Text:=DBEdit2.Text;
Edit3.Text:=DBEdit3.Text;
Edit4.Text:=DBEdit4.Text;
Edit5.Text:=DBEdit5.Text;
Edit6.Text:=DBEdit6.Text;
Edit7.Text:=DBEdit7.Text;
Edit8.Text:=DBEdit8.Text;
Edit9.Text:=DBEdit9.Text;
Edit10.Text:=DBEdit10.Text;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO temp (CVE_DOC,COST,CVE_ART,CVE_DOC2,DESCR,CVE_CLPV,FECHA_DOC,TIP_DOC,IMP_TOT4,CAN_TOT)');
Query1.SQL.Add('VALUES ("'+Edit1.Text+'","'+Edit2.Text+'","'+Edit3.Text+'","'+Edit5.Text+'","'+Edit4.Text+'","'+Edit6.Text+ '","'+Edit7.Text+'","'+Edit8.Text+'","'+Edit9.Text+'","'+Edit10.Text+'")');
Query1.ExecSQL;


Esto para que el usuario lo pueda ver....
QUE HAGO :S:confused:

droguerman 06-04-2007 02:58:20

el problema es que estás usando comillas dobles para indicar los valores.

podrías usar comillas simples pero eso solucionará el problema por ahora sin embargo posteriormente cuando quieras poner algo como 3.5' tendrás problemas.

una solución podría ser la siguiente llevar el texto a una función que convierta la cadena en un conjunto de sumas de cadenas ojala te sirva este código:

Código Delphi [-]
function sumaCadenas(const cadena : string): string;
begin
   //reemplazamos las comillas simples por ^#^
   result := stringReplace(cadena, #39, '^#^', [rfReplaceAll]);
   //volvemos a reemplazar los ^#^ por comillas simples
   result := stringReplace(result, '^#^', #39+'+"'+#39+'"+'#39, [rfReplaceAll]);
result := #39+result+#39;
  //este es el resultado final
  inputbox('','', result);

end;

por ejemplo si tienes el texto hol'a a t"odos debe convertirlo a 'hol'+"'"+'a a t"odos' paradox acepta cualquiera
de los dos (comillas simples o dobles) para indicar cadenas

saludos

francisco260184 06-04-2007 04:40:11

GRACIAS droguerman PROBLEMA RESUELTO.


La franja horaria es GMT +2. Ahora son las 19:57:24.

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