Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2017
johnny_jjc johnny_jjc is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
johnny_jjc Va por buen camino
Smile Recorrer bd con parametros

buenas amigos expertos.

tengo un problema.. tengo una tabla llamada 'VIGENCIAS' y unos campos con nombres >> 2010, 2011, 2012,.......2017.

quisiera recorrer los campos a travez de parametros.. actualmente los recorro con un CASE of
quisiera ahorrarme el CASE OF por un FOR vigencia=2010 to 2017

pero la instrucción >> TOTALAVALUOS:=TAvaluos[vigencia] >>> me genera error

podría alguien ilustrarme la forma debida?

mil gracias
Responder Con Cita
  #2  
Antiguo 30-08-2017
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 entendí nada.

¿A qué te refieres con "campos con nombres"? ¿Los campos se llaman 2010, 2011, 2012,.......2017 o ésos son los valores de algún campo?

Un CASE es una intrucción de bifurcación de código mientras que un FOR es una instrucción de ciclo. ¿De qué manera podría una reemplazar a la otra?

¿Qué tiene que ver la asignación TOTALAVALUOS:=TAvaluos[vigencia] con todo lo demás que pones? Y ¿cuál es el error que genera?

Dedica más tiempo a formular la pregunta de una forma inteligible.

LineComment Saludos
Responder Con Cita
  #3  
Antiguo 31-08-2017
johnny_jjc johnny_jjc is offline
Registrado
 
Registrado: mar 2010
Posts: 4
Poder: 0
johnny_jjc Va por buen camino
Thumbs up

gracias Amigo roman.

te explico mas a detalle para tu gentil colaboracion.

Nombre tabla: AVALUOS
Campos
predio A 25
2010 N
2011 N
2012 N
2013 N
2014 N
2015 N
2016 N
2017 N
************************
Resultado: Llenar un Grid

Vigencia Avaluo Impuesto
2010 XXXX1 YYYYY1
2011 XXXX2 YYYYY2
........
2017 XXXX8 YYYYY8

********************************

Actualmente

NVigencias:=8;

FOR VANO:=1 TO NVigencias DO
BEGIN

GRIDLIQUIDACION.CELLS[1,I]:=inttostr(2010+I);


GRID:= GRIDLIQUIDACION.CELLS[1,I];

CASE GRID OF

//************ 2010

2010: begin
GRIDLIQUIDACION.CELLS[2,I]:=strtoint(TAvaluos['2010']);
GRIDLIQUIDACION.CELLS[3,I]:=CALCULARIMPUESTO(TAvaluos['2010']);
end;

EN TOTAL SON 8 VIGENCIAS >>> OBSERVANDO PODRIA REDUCIR TODO EL CASE DE LA SIGUIENTE MANERA:

FOR VVIGENCIA:=2010 TO 2017
begin
GRIDLIQUIDACION.CELLS[2,I]:=strtoint(TAvaluos[VVIGENCIA]);
GRIDLIQUIDACION.CELLS[3,I]:=CALCULARIMPUESTO(TAvaluos[VVIGENCIA]);
end;

PERO ME MARCA ERROR >>> QUISIERA REEMPLAZAR TAvaluos['2010'] POR TAvaluos[VVIGENCIA]
COMO RREMPLAZO EN NOMBRE DEL CAMPO POR UN PARAMETRO????....
Responder Con Cita
  #4  
Antiguo 31-08-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.022
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, lee nuestra guía de estilo, gracias

Y para otras ocasiones, recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 01-09-2017
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Por lo que entiendo el campo se llama '2010'. '2011', etc.
Si TAValuous['2010'] es la forma de llamar al contenido del campo, entonces tienes que pasarle un string como índice.
Quedaría algo así:

Código Delphi [-]
FOR VVIGENCIA:=2010 TO 2017 DO
begin
   GRIDLIQUIDACION.CELLS[2,I] := StrToInt(TAvaluos[IntToStr(VVIGENCIA)]);
   GRIDLIQUIDACION.CELLS[3,I] := CALCULARIMPUESTO(TAvaluos[IntToStr(VVIGENCIA)]);
end;

o un poco mas claro
Código Delphi [-]
var
   Vigencia : integer;
   NombreCampo : string;

[...]

FOR Vigencia := 2010 TO 2017 DO
begin
   // El nombre del campo corresponde con el valor de vigencia
   NombreCampo := IntToStr(Vigencia);

   // Paso datos de la tabla al grid.
   GRIDLIQUIDACION.CELLS[2,I] := StrToInt(TAvaluos[NombreCampo]);
   GRIDLIQUIDACION.CELLS[3,I] := CALCULARIMPUESTO(TAvaluos[NombreCampo]);
end;

Última edición por duilioisola fecha: 01-09-2017 a las 15:33:58.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
recorrer componentes NEG1414 C++ Builder 12 11-12-2007 06:50:43
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 16:18:42
Recorrer Archivo INI Coco_jac OOP 6 27-06-2006 21:01:15
recorrer string emiliu Varios 2 16-11-2005 11:23:25
Recorrer un Treeview mateamargo OOP 0 11-11-2003 17:53:39


La franja horaria es GMT +2. Ahora son las 03:21:30.


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