Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Como Rellenar Componentes En Qreport

Buenas tardes a todos, tengo un problema con un qreport. Tengo definidos varios componentes de tipo QRRICHTEXT (50) , y debo ir rellenandolos.
Cuando invoco el qreport debo ir recorriendo los 50 QRRICHTEXT pero no se como indicarle el nombre de cada uno sin necesidad de escribir 50 veces lo mismo.
Os paso el codigo que estoy utilizando, en el cual evidentemente la variable "ncelda" es un string y me da error. ¿ Como puedo hacerlo ?


var ncelda:string;

begin
profe:='1';
finforme:=tfinforme.Create(self);
for orden:= 1 to 49 do
begin
ncelda:='q'+IntTostr(orden);
memo:='celda'+IntTostr(orden);

basededatos.ado_uno.SQL.Clear;
basededatos.ado_uno.SQL.Add('SELECT * FROM GRUPOHORARIO WHERE C_PROFESOR="'+profe+'" AND CELDA="'+memo+'";');
basededatos.ado_uno.Active:=true;
basededatos.ADO_uno.First;
While not basededatos.ado_uno.Eof do
begin
finforme.ncelda.Lines.Add(basededatos.ado_uno.FieldByName('ALUMNO').AsString);
basededatos.ado_uno.Next;
end;

fdisenohorario.QuickRep1.Preview;
end;


Gracias por el tiempo que dedicais todos a este foro.
Responder Con Cita
  #2  
Antiguo 20-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MARIA_MAR.

Por favor cuando incluyas código en tus mensajes, para darle mayor legibilidad usa los TAG's. Te pongo una imágen que explica el uso:




Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 21-03-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
error

podrias decir exactamente que dice el error???
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #4  
Antiguo 21-03-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Gracias ecfisa por tu aclaración , vuelvo a plantear mi mensaje como me indicas.
Tengo un problema con un qreport. Tengo definidos varios componentes de tipo QRRICHTEXT (50) , y debo ir rellenandolos.
Cuando invoco el qreport debo ir recorriendo los 50 QRRICHTEXT pero no se como indicarle el nombre de cada uno sin necesidad de escribir 50 veces lo mismo.
Os paso el codigo que estoy utilizando, en el cual evidentemente la variable "ncelda" es un string y me da error. ¿ Como puedo hacerlo ?

Código Delphi [-]
var ncelda:string; 

begin
profe:='1';
finforme:=tfinforme.Create(self);
for orden:= 1 to 49 do
begin
ncelda:='q'+IntTostr(orden);
memo:='celda'+IntTostr(orden);

basededatos.ado_uno.SQL.Clear;
basededatos.ado_uno.SQL.Add('SELECT * FROM GRUPOHORARIO WHERE C_PROFESOR="'+profe+'" AND CELDA="'+memo+'";');
basededatos.ado_uno.Active:=true;
basededatos.ADO_uno.First;
While not basededatos.ado_uno.Eof do
begin
finforme.ncelda.Lines.Add(basededatos.ado_uno.FieldByName('ALUMNO').AsString);
basededatos.ado_uno.Next;
end; 

fdisenohorario.QuickRep1.Preview;
end;

El error me da es sintactico y marca la siguiente linea
Código Delphi [-]
finforme.ncelda.Lines.Add(basededatos.ado_uno.FieldByName('ALUMNO').AsString);

Y me dice:
"Undeclared identifier: 'ncelda' "
"Missing operator or semicolon"

Espero haber sido un poco mas clara y que asi me podais ayudar.
Gracias
Responder Con Cita
  #5  
Antiguo 21-03-2012
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
No se si interpreto bien tu codigo, veamos ..
1ro.
Código Delphi [-]
var ncelda:string;
mas adelante.
Código Delphi [-]
ncelda:='q'+IntTostr(orden);
el cual va ir tomando el valor segun el bucle
q1
q2
..
q49
el cual no veo q utilices en ningun momneto.

y por ultimo
Código Delphi [-]
finforme.ncelda.Lines.Add(basededatos.ado_uno.FieldByName('ALUMNO').AsString);

aqui tratas a "ncelda" como un memo cuyo "dueño" dice ser "finforme"

El error dice q en finforme no existe declaracion ncelda.
Esto es correcto ?
Responder Con Cita
  #6  
Antiguo 21-03-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Estee... No entiendo? ¿50 QRRICHTEXT en un QReport? Con que los rellenas y donde los estas invocando?..

Saludos
Responder Con Cita
  #7  
Antiguo 21-03-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Hola juanlaplata,
Si me has interpretado bien, el problema que tengo es que no se como declarar 'ncelda' ó como ponerlo para que sea un memo en vez de un string,
y a su vez vaya cambiando su valor en el bucle.
Saludos
Responder Con Cita
  #8  
Antiguo 21-03-2012
MartinS MartinS is offline
Miembro
NULL
 
Registrado: nov 2011
Ubicación: Villa Cacique - Argentina
Posts: 283
Poder: 13
MartinS Va por buen camino
Hola: Ahora mas o menos interprete lo que quieres hacer... (Puede que no)
El error se da porque declaraste la variable string ncelda y despues en:
Código Delphi [-]
finforme.ncelda.Lines.Add(basededatos.ado_uno.FieldByName('ALUMNO').AsString);
la tratas como componente. Lo que debes hacer es verificar que antes de asignar el valor si el componente de llegada es un TQRRichText. Lo que yo suelo hacer es lo siguiente y como para que te des una idea:

Código Delphi [-]
 for I := 0 To ComponentCount -1 do
    BEgin
      if (Components[i] Is TEdit) then
         (Components[i] as TEdit).Text := '';
    End;

en este caso lo que hace es de acuerdo a todos los componentes que hay dentro del formulario ir verificando si alguno es del tipo TEdit (en este ejemplo) y en el caso de que así sea aplica el correspondiente valor...

Para tu caso:

Código Delphi [-]
 for I := 0 To FInforme.ComponentCount -1 do
    BEgin
      if (FInforme.Components[i] Is TQrRichText) then
         (FInforme.Components[i] as TQrRichText).Lines.Add := Valor;
    End;

Espero que hayas entendido y que yo tambien haya interpretado

Saludos y cualquier cosa acá estamos.
Responder Con Cita
  #9  
Antiguo 21-03-2012
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
seguimos con el analisis ....
finforme, lo tienes prediseñado ?
si es asi, inserta un memo, y renombralo como ncelda.
o de que tipo es finforme ?
trata de redactar un poco mas el contexto, como para , talves, buscar otro camino para el mismo resultado
Responder Con Cita
  #10  
Antiguo 21-03-2012
MARIA_MAR MARIA_MAR is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 21
Poder: 0
MARIA_MAR Va por buen camino
Bueno Martins,tu idea me ha sido muy valida y he conseguido solucionarlo gracias a ti, de esta manera ya me da
igual que haya 50 componentes TQrRichText ó 200. Paso el codigo de como lo he dejado al final por si le sirve a alguien
de ayuda, solo aclarar que en el Qreport ha asignado a cada TQrRichText un 'Tag' para llevar un orden.

Código Delphi [-]
 
begin
 fdisenohorario:=tfdisenohorario.Create(self);
 for i:=0 to fdisenohorario.ComponentCount-1 do
  begin
  if (fdisenohorario.Components[i] is TQrRichtext) then
  begin
  orden:=(fdisenohorario.Components[i].Tag);
  memo:='celda'+IntTostr(orden);

          basededatos.ado_uno.SQL.Clear;
          basededatos.ado_uno.SQL.Add('SELECT * FROM GRUPOHORARIO WHERE C_PROFESOR="'+profe+'" AND CELDA="'+memo+'";');
          basededatos.ado_uno.Active:=true;
          basededatos.ADO_uno.First;
   While not basededatos.ado_uno.Eof do
     begin
     (fdisenohorario.Components[i] as TQrRichText).Lines.Add(' '+basededatos.ado_uno.FieldByName('ALUMNO').AsString);
     basededatos.ado_uno.Next;
     end; // del while
  end; // del if
  end; // del for

  // Imprimo el previo
  fdisenohorario.e_nombreprofesor.Lines.Add(e_nombreprofesor.Text);
  fdisenohorario.QuickRep1.Preview;

 end; // del if

Al final no he necesitado para nada la variable 'ncelda' que tantos problemas me daba.

De nuevo muchas gracias a todos por se tan atentos.
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
como rellenar con ceros a la izquierda algun dato uper PHP 1 15-03-2011 20:49:10
como rellenar una factura dvd_13 Varios 8 15-01-2008 23:13:23
Como rellenar de caracteres un string carlos gonzalez Varios 8 01-10-2006 06:55:21
Como rellenar campo de tabla JODELSA Conexión con bases de datos 6 28-02-2005 22:31:49
¿Que paso con los componentes de QReport en Delphi 7 ? danytorres Impresión 4 07-07-2003 22:27:10


La franja horaria es GMT +2. Ahora son las 20:24:25.


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