Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Reemplazar caracterer en sentencia SQl (https://www.clubdelphi.com/foros/showthread.php?t=56972)

judit25 02-06-2008 16:58:30

Reemplazar caracterer en sentencia SQl
 
Buenos Dias

Estoy trabajando con delphi 7, Access 2003 y ODBC.

Tengo un campo en la tabla que puede tener "/", "x", "X", ".", "-", y numeros.

Tengo un query en e cual hago referencia a esa tabla y quiero copiar ese campo en otro sin ninguno de esos caracteres o sea que solo me quedaria con numeros.

Directamente desde Access utilice el comando Replace(nombre_campo, "/", "") as campo2. Pero cuando intento agregar este nuevo campo en el Field editor de la tabla en Access me sale el siguiente error Invalid Table Name.

Entonces quite esa sentencia del query, y estoy intentando crearlo desde delphi en el Query en el SQL string y en el Query1.SQL.Add(''), pero no me reconoce ni el Replace, ni el StringReplace, ni el AnsiReplaceStr.

Existe alguna funcion que pueda utilizar para realizar lo que quiero?
Gracias anticipadas

Saludos

BlueSteel 02-06-2008 17:40:46

Hola

Creo que debes trabajarlo de la sgte manera:

- conectar a base de datos
- pasar los datos a unos campos temporales creados en el delphi
- eliminar los caracteres que no deseas..
- insertar o traspasar a otra base o tabla

Yo utilizo el AnsiReplaceStr.. y me ha ido bien, aunque no lo estoy usando desde una sentencia SQL..

Código Delphi [-]
 
AnsiReplaceStr('Eliminar todos los . puntos,'.','');

Salu2:p:D

judit25 02-06-2008 18:30:57

Cita:

Empezado por BlueSteel (Mensaje 290746)
Hola

Creo que debes trabajarlo de la sgte manera:

- conectar a base de datos
- pasar los datos a unos campos temporales creados en el delphi
- eliminar los caracteres que no deseas..
- insertar o traspasar a otra base o tabla

Yo utilizo el AnsiReplaceStr.. y me ha ido bien, aunque no lo estoy usando desde una sentencia SQL..

Código Delphi [-]
AnsiReplaceStr('Eliminar todos los . puntos,'.','');


Salu2:p:D


Gracias por la respuesta, pero el problema es que utilizo lo de Query1.SQL.Ad('') por que necesito filtrar ese query luego cuando escriban algo en un edit, por eso lo necesito en la sentencia.

Gracias

Wiarbumu 03-06-2008 23:11:53

si te explicas un poquito mas, de pronto podriamos ayudarte, poque la verdad no me queda claro que eslo que quieres hacer, ilustranos con un ejemplo mas claro y muy seguramante te ayudaremos a resolver tu problema.

Por ejemplo cuando hablas que no te reconece ciertas funciones no se a que te refieres, pero creo que podría ser que no agregaste la Unit StrUtils.

Saludos

judit25 04-06-2008 15:26:29

Cita:

Empezado por Wiarbumu (Mensaje 291100)
si te explicas un poquito mas, de pronto podriamos ayudarte, poque la verdad no me queda claro que eslo que quieres hacer, ilustranos con un ejemplo mas claro y muy seguramante te ayudaremos a resolver tu problema.

Por ejemplo cuando hablas que no te reconece ciertas funciones no se a que te refieres, pero creo que podría ser que no agregaste la Unit StrUtils.

Saludos

Hola,

Deja ver si me explico mejor:

Tengo una tabla en Access que contiene un campo llamado Size, en el se guardan los sizes de la siguiente manera:
123/45/98 o 000/00/00 (este ultimo es para los sizes que son de diferente formato que el anterior). Para saber el size en el segundo caso cree un query donde tomo el primer size y lo pongo en otro campo en el query y aqui cuando es 000/00/00 tomo el size de la descripcion del producto. O sea que en el query me quedaria Size (size original), Size2 (donde esta el original y en el caso de que sea 000/00/00 el que esta en la descripcion).

En delphi tengo una consulta donde puedo buscar por ese size (Size2), pero lo que necesito es que cuando digiten el size en el Edit no tengan que digitarlo con los "/" o en el otro caso con ("X", "-", ".") sino simplemente "1234598".

Aqui dejo la sentencia SQL que estoy usando en Delphi

Código Delphi [-]
Query1.SQL.Add('SELECT *, Mid(QGomas.[Size],8,2) as Tam, InStr(QGomas.[Descripcion], ' + ' ' + ') AS posicion, ');
Query1.SQL.Add(' Mid(QGomas.[Descripcion],QGomas.[posicion]+2,15) AS parte1, InStr(QGomas.[parte1], ' + ' ' + ') AS posi2, Mid(Qgomas.[parte1],1,QGomas.[posi2]-1) AS parte2, IIf((QGomas.[Size]= ' + quotedStr('000/00/00') + '),QGomas.[parte2],QGomas.[Size]) AS Size2,');
Query1.SQL.Add(' Replace(Size2,' + '/' + ',' +'' + ') AS Size3 FROM QGomas');

Gracias

Saludos


La franja horaria es GMT +2. Ahora son las 04:13:02.

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