Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Obtener unos datos de una bbdd (https://www.clubdelphi.com/foros/showthread.php?t=40120)

pennylane 07-02-2007 18:56:44

Obtener unos datos de una bbdd
 
Hola:

Primero decir que no tengo mucha experiencia en DELPHI y es muy posible q haya metido un gambazo.

Estoy intentando obtener unas cositas de una bbdd. He hecho el codigo de la siguiente forma.
SELECT * FROM ARTICULOS WHERE ALT >= "????' + MODD5040.TEXT + '?????" AND ALT <= "????' + MODH5040.TEXT + '?????"

No estoy seguro de hacer un correcto uso de los interrogantes para lo que pretendo.
El campo ALT tiene 12 caracteres y MODD5040.TEXT son 3 caractetes que se encuentran a mitad de ALT... quiero filtrar y obtener cualquier dato de la bbddque vaya desde MODD5040.TEXT hasta MODH5040.TEXT. Para esto me da igual el valor de los 4 caracteres anteriores y los 5 posteriores.

Espero haberme explicado bien... Si alguien puede ayudarme estaria muy agradecido.

Ivanzinho 08-02-2007 09:43:06

Código Delphi [-]
'Select * from Articulos where ALT like ' + QuotedStr('%' + MODH5040.TEXT + '%')

pennylane 08-02-2007 11:09:56

El problema de eso es que me obtendría todo donde apareciese MODH5040.TEXT sin importar la posición. Mi MODH5040.TEXT empieza en el caracter 5 y acaba en el 7 (3 caracteres de un total de 12).
Aparte hay un MODD5040.TEXT y un MODH5040.TEXT que significa el numero en el cual empezaria y en el que finalizaria la busqueda.

Ivanzinho 08-02-2007 12:03:02

Cita:

Empezado por pennylane
El problema de eso es que me obtendría todo donde apareciese MODH5040.TEXT sin importar la posición. Mi MODH5040.TEXT empieza en el caracter 5 y acaba en el 7 (3 caracteres de un total de 12).
Aparte hay un MODD5040.TEXT y un MODH5040.TEXT que significa el numero en el cual empezaria y en el que finalizaria la busqueda.

Perdón, entendí mal la pregunta y pensé que se trataba de la misma variable. Para este caso debías indicar con que base de datos trabajas. Por ejemplo en el caso de firebird podrías hacer uso de las UDF´s y usar la función SubStr(). Con lo que la consulta quedaria de la siguiente manera.

Código Delphi [-]
'Select * from Articulos where SubStr(ALT,4,3) > ' + QuotedStr(MODD5040.TEXT) + 
' and SubStr(ALT,4,3) < ' + QuotedStr(MODH5040.TEXT)

pennylane 08-02-2007 12:18:53

La BBDD es de Paradox

Ivanzinho 08-02-2007 12:50:25

Cita:

Empezado por pennylane
La BBDD es de Paradox

Pues lo único que se me ocurre para Paradox es recorrer la tabla desde Delphi y comprobar que el campo cumpla la condición comentada anteriormente usando la función Copy(String, Index, Length), si el campo cumple la condición entonces realizas con el las acciones que quieras (ponerlo en un StringGrid, almacenarlo en una tabla, etc..) y continuas con el siguiente, si no cumple la condición entonces continuas y así hasta que llegues al final de la tabla. Comprueba antes si existe para Paradox una función parecida a SubStr(), ya que no te lo puedo asegurar, pero de que yo sepa no.

Un saúdo

pennylane 08-02-2007 13:32:02

Muchas gracias... seguire lo que me dices


La franja horaria es GMT +2. Ahora son las 03:18:36.

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