Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2004
elbilla elbilla is offline
Miembro
 
Registrado: jul 2004
Posts: 27
Poder: 0
elbilla Va por buen camino
2 Listbox y BD ....

Tengo dos LISTBOX en los cuales hago lo de siempre, pasar de un lado a otro valores de 1 lista. El problema que tengo es que al pasarlo a la base de datos lo hago de la siguiente manera y me da error. Si por ejemplo, en este caso, paso dos valores a la lista me lo mete en la base de datos, pero si solo meto un valor me da error " LIST INDEX OUT OF BOUNDS (1)"
Pensaba que si comparaba con ' ' y habia algo metido lo pasaría a la base de datos y sino no se metería en el bucle. Que hago mal ??
El objetivo es q todos los valores que paso a la segunda lista se metan en una base de datos.

Código:
table4.open;
table4.insert;
x:=0;
if listbox3.Items[x] <> ' ' then
  begin
  table4.FieldByname('Exp1').AsString:=listbox3.Items[x];
  x:=x+1;
  end;
if listbox3.Items[x] <> ' ' then
  begin
  table4.FieldByname('Exp2').AsString:=listbox3.Items[x];
  x:=x+1;
  end;
 
Table4.post;
table4.flushbuffers;
Un saludo.
Gracias
Responder Con Cita
  #2  
Antiguo 03-11-2004
elbilla elbilla is offline
Miembro
 
Registrado: jul 2004
Posts: 27
Poder: 0
elbilla Va por buen camino
Sigo sin dar con la solución. Una ayudita please...

Un saludo..
Responder Con Cita
  #3  
Antiguo 03-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si sólo metes un valor en la lista, el primer condicional se ejecuta y se incremente el valor de x de manera que al llegar al segundo condicional x = 1 y no habiendo más que el elemento 0 en la lista te produce el error por intentar acceder a listbox3.Items[1].

Si metes dos valores no te falla porque listbox3 tiene los elmentos 0 y 1.

También te va a fallar si no hay ningún elemento en la lista. En este caso fallará dese el primer condicional al intentar acceder a listbox3[0] ya que no existe item coníndice 0.

No sé bien qué intentas hacer pero da la impresión de que requieres un bucle:

Código Delphi [-]
for x := 0 to listbox3.Count - 1 do
begin
  table4.Insert;
  table4.FieldByname('Exp1').AsString:=listbox3.Items[x];
  table4.Post;
end;

De esta forma, además de que abarcas cualquier número de elementos en la lista, te aseguras que dentro del bucle x sólo pueda ser un índice válido de listbox3. En el caso de que la lista esté vacía, ni siquierea se entrará al bucle.

// Saludos
Responder Con Cita
  #4  
Antiguo 04-11-2004
elbilla elbilla is offline
Miembro
 
Registrado: jul 2004
Posts: 27
Poder: 0
elbilla Va por buen camino
El problema q tengo es q haya los elementos q haya se metan en la base de datos. Por eso lo de comparar con blanco en mi código del principio. El tema es lo q tu dices, al intentar acceder a un elemento de la lista q no existe da el error. Pero como hago para saber si el el elemento 'x' existe o no ??
Como dije al principio pensaba q era compararlo con ' ', pero ya he visto q no es así. Entonces como?
En el ejemplo q me pones no me valdría, ya q son 15 variables (de 'Exp1' a 'Exp15') y si solo meto en 'Exp1' machacaria el mismo valor todo el tiempo.
Otra cosa q me gustaria aclarar es si se puede meter una tabla dentro de un campo de la BD, ya q por ejemplo en este caso la tabla en cuestion tiene casi 40 campos y pienso q es demasiado. No ?? Vamos en este caso mi intencion sería en el campo exp, meter una tabla de 15 elementos. Es posible ?? La BD es Paradox.

Un saludo..
Gracias..

EDITADO

Ya lo he sacado, es lo q decias necesitaba un bucle como el q tu me has puesto y dentro de ahí con IF's controlar si es el elmento 1 exp1, el 2 exp2, y así sucesivamente...
Lo q sigo en la duda es lo de tabla q he dicho antes..

Gracias de nuevo.

Última edición por elbilla fecha: 04-11-2004 a las 02:04:05.
Responder Con Cita
  #5  
Antiguo 04-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No creo que Paradox te permitar anidar tablas pero además esto rompería la normalización de tus tablas. Por otro lado Paradox admite hasta 255 campos por tabla.

// Saludos
Responder Con Cita
  #6  
Antiguo 04-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Quizás no he entendido muy bien el tema, pero a ver que parece esto:
Código Delphi [-]
  for i:=0 to listbox3.items.count-1 do
  if  table4.FindField('Exp'+inttostr(i)) <> nil  then // si existe el campo
  begin
    table4.Insert;
    table4.FieldByname('Exp'+inttostr(i)).AsString:=listbox3.Items[i];
    table4.Post;
  end
  else
    ShowMessage(' uuuuppss, el campo Exp'+inttostr(i) + ' no existe ');

Otra posibilidad es crearte una tabla llamada "Expresiones" con 2 campos, una de código (para relacionar con la tabla maestra), y otra con las expresiones del tipo "Exp1".."Exp15"

Saludos y espero que vayan los tiros por aqui.

Última edición por Lepe fecha: 05-11-2004 a las 15:11:51. Razón: en el <> nil no era FieldByName
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:51:18.


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
Copyright 1996-2007 Club Delphi