Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Line index out of bounds (https://www.clubdelphi.com/foros/showthread.php?t=31609)

Sito 12-05-2006 00:32:18

Line index out of bounds
 
Bueno estoy haciendo un select para conseguir sacar unos datos.

Tengo la sentencia SQL metica en un query y ademas hago esto:

Código SQL [-]
formProcPer.QueryListadoProcuradores.SQL[4]:=('and (ProcuradorPerito.NIF='''+FormProcPer.editNIF.Text+''')');





Pero me salta un Error EStringListError : line index out of bounds[4]

y no se relamente porque puede ser.

Gracias

delphi.com.ar 12-05-2006 00:35:59

Simplemente no existe la línea 4 en el TStrings que contiene la sentencia SQL.
Si quieres agregar la línea, simplemente tienes que hacer un Add:
Código Delphi [-]
  formProcPer.QueryListadoProcuradores.SQL.Add('and (ProcuradorPerito.NIF='''+FormProcPer.editNIF.Text+''')');
Saludos!

Sito 12-05-2006 19:07:38

Muchas gracias por tu respuesta y tan rapido.

Ahora el problema que me tiene atormentado es que la sentencia sql es de mas de 255 caracteres y del delphi no la ecepta

delphi.com.ar 12-05-2006 19:24:30

Cita:

Empezado por Sito
Ahora el problema que me tiene atormentado es que la sentencia sql es de mas de 255 caracteres y del delphi no la ecepta

Delphi carga la sentencia en un TStrings, devido a eso delphi puede manejar TStrings de hasta 2^16 líneas (65536), donde cada línea puede tener hasta 2GB.... (Imposible!)
Por lo que el problema de la limitación lo puedes tener o bien por el motor, o bien por la herramienta de conexión... ¿Cómo llegas a pensar en este límite?

miguelml 12-05-2006 19:46:11

Si te excedes de los 255 caracteres, puedes concatenar la consulta con trozos mas pequeños.
Imagina que a continuación tubiese una consulta de más de 255 c.
Tendrias que hacer:

Código Delphi [-]
query1.SQL.text:='select * from '+'productos where stock<1';

Si lo divides y lo concatenas así no te dara ese error.

Un saludo!

Sito 12-05-2006 19:55:10

Cita:

Empezado por delphi.com.ar
Delphi carga la sentencia en un TStrings, devido a eso delphi puede manejar TStrings de hasta 2^16 líneas (65536), donde cada línea puede tener hasta 2GB.... (Imposible!)
Por lo que el problema de la limitación lo puedes tener o bien por el motor, o bien por la herramienta de conexión... ¿Cómo llegas a pensar en este límite?

Porque me da este error al intentar hacerlo:

Cita:

[Error] unidadFormProcPer.pas(344): String literals may have at most 255 elements

delphi.com.ar 12-05-2006 20:12:25

Cita:

Empezado por Sito
Porque me da este error al intentar hacerlo:

Ese es otro tema, no tiene que ver con la capacidad de los strings, sino la del parser del compilador, la ayuda es tan buena: ;)
Cita:

Empezado por Ayuda de Delphi
This error message occurs when you declare a string type with more than 255 elements, if you assign a string literal of more than 255 characters to a variable of type ShortString, or when you have more than 255 characters in a single character string.

Note that you can construct long string literals spanning more than one line by using the '+' operator to concatenate several string literals.


Sito 12-05-2006 20:51:03

Cita:

Empezado por delphi.com.ar
Ese es otro tema, no tiene que ver con la capacidad de los strings, sino la del parser del compilador, la ayuda es tan buena: ;)

muchisimas gracias, todo solucionado


La franja horaria es GMT +2. Ahora son las 10:01:13.

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