Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-11-2007
Avatar de The_Duke
The_Duke The_Duke is offline
Miembro
 
Registrado: abr 2006
Ubicación: Republica Dominicana
Posts: 48
Poder: 0
The_Duke Va por buen camino
Master / Detail Quickreport

hola a todos

tengo el siguiente problema:

Estoy haciendo una aplicasion de medicina donde nececito imprimir una receta medica el problema
es que tengo una tabla llama Tindicacion (que es la receta) contiene: El medico, la fecha y el
paciente. Otra del detalle Tdetalle_ind donde se guardan los medicamentos. Todo se hace muy Bien
pero para el reporte tengo un boton con el siguiente codigo.


Código Delphi [-]
procedure TFreceta.BitBtn8Click(Sender: TObject);
var
rep: string;
begin

Data.Tindicaciones.edit;
Data.Tindicaciones.post;
rep:=DBEdit2.Text; //uso esta variable para saver el codigo de la indicacion (receta) (odtengo el
//codigo del ultimo registro para imprimirlo de esta forma
//para imprimir uso este codigo para pasarselo al reporte que esta en el form llamado form1
Form1.ADOQuery1.close;
Form1.ADOQuery1.SQL.Text:='select * from Indicaciones WHERE Cod_ind Like'+Quotedstr('%'+rep+'%');
Form1.ADOQuery1.open;
Form1.Tdetalle.Active:=true;
Form1.Tmedicamento.Active:=true;
Form1.QuickRep1.Preview;
Data.Tindicaciones.insert;
Data.Tpaciente.insert;
Data.Tmedico.insert;
Data.Tindicaciones.edit;
DBText1.caption:=datetostr(DateTimePicker1.Date);
DBGrid1.Enabled:=false;
end;




El problema es que en el reporte avece en el detalle sale mal osea sale como un selec * ó
no sale el detalle (los medicamentos).
pero si es un registro ya guardado sale todo bien (un registro que se guardo y luego se busco y
se le dio al reporte de nuevo.
En el reporte tengo:
ADOQuery1 (El del codigo de arriva): es el maestro todo sale bien con el
ADOTable1 (Tdetalle_ind): Es la de detalle esta conectado con el QuickRep1 y solo sale bien si
estavan guardado los datos.
Todo esta bajo Ado
Como corrijo que el detalle sarga siempre bien

luego suvo un pequeño ejemplo del problema
Responder Con Cita
  #2  
Antiguo 16-11-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me estraña mucho todo esto, tal vez nos puedes explicar un poco mas?
Código Delphi [-]
procedure TFreceta.BitBtn8Click(Sender: TObject);
var
rep: string;
begin

Data.Tindicaciones.edit; // edito la tabla
Data.Tindicaciones.post; // graba la tabla sin nada de por medio
rep:=DBEdit2.Text; //uso esta variable para saver el codigo de la indicacion (receta) (odtengo el
//codigo del ultimo registro para imprimirlo de esta forma
//para imprimir uso este codigo para pasarselo al reporte que esta en el form llamado form1
Form1.ADOQuery1.close;
Form1.ADOQuery1.SQL.Text:='select * from Indicaciones WHERE Cod_ind Like'+Quotedstr('%'+rep+'%');
Form1.ADOQuery1.open;
Form1.Tdetalle.Active:=true;
Form1.Tmedicamento.Active:=true;
Form1.QuickRep1.Preview; // indico que el qreport es parte del form?
Data.Tindicaciones.insert;
Data.Tpaciente.insert;
Data.Tmedico.insert;
Data.Tindicaciones.edit; // otra vez edito la tabla como en el primer paso
DBText1.caption:=datetostr(DateTimePicker1.Date);
DBGrid1.Enabled:=false;
end;
Las partes que tengo dudas estan subrayadas
Saludos
Responder Con Cita
  #3  
Antiguo 17-11-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
En lugar de abrir un TQuery, luego un TADOTable y luego todo el relajo que estas haciendo, sería mucho mejor simplemente utilizar un Tquery.

Código Delphi [-]
With TuQuery do begin
 if active then close;
 SQL.Clear;
 SQL.Add('Select I.Medico, I.Fecha, I.Paciente.....etc'); //todos los campos que necesitas de Indicaciones
 SQL.Add('M.Medicamento, M.Cantidad, M.Precio.....etc'); //todos los campos que necesitas del detalle
 SQL.Add('From Indicaciones I');
 SQL.Add('join Detalle_Ind M on I.Llave = M.Llave'); //tu campo llave que une a los dos tablas
 SQL.Add('where I.Cod_ID = :CodigoIndicacion');
 ParamByName('CodigoIndicacion').AsString := DBEdit2.Text;
 Open;
end; //

Y luego simplemente enlazas tu reporte a este query y listo.
Nunca es recomendable utilizar "Select *", las bases de datos cambia y seguro a tu aplicación en algún momento le cambiaras algo y si utilizas "Select *" un cambio que hagas en la base de datos, ocasionará que cambies también el programa.
__________________


Última edición por ContraVeneno fecha: 17-11-2007 a las 00:51:59.
Responder Con Cita
  #4  
Antiguo 17-11-2007
Avatar de The_Duke
The_Duke The_Duke is offline
Miembro
 
Registrado: abr 2006
Ubicación: Republica Dominicana
Posts: 48
Poder: 0
The_Duke Va por buen camino
Smile

lo solucione de esta forma y sale bien
Código Delphi [-]
With Form1 do begin
With ADOQuery1 do begin
 if active then close;
 SQL.Clear;
 SQL.Add('Select I.Cod_med, I.Fecha, I.Cod_pac, I.cod_ind'); //todos los campos que necesitas de Indicaciones
 SQL.Add('From Indicaciones I');
 SQL.Add('where I.cod_ind = :CodigoIndicacion');
 Parameters.ParamByName('CodigoIndicacion').Value := DBEdit2.Text;
 Open;
end;
With ADOQuery2 do begin
 if active then close;
 SQL.Clear;
 SQL.Add('Select M.Cod_medi, M.cantidad, M.dosis'); //todos los campos que necesitas de Indicaciones
 SQL.Add('From IM M');
 SQL.Add('where M.cod_ind = :CodigoIndicacion');
 Parameters.ParamByName('CodigoIndicacion').Value := DBEdit2.Text;
 Open;
end;
Form1.QuickRep1.Preview;
end;
sobre esto:
Código Delphi [-]
Data.Tindicaciones.edit; // edito porque andes de guardar puede que de error y asi me lo evito
Data.Tindicaciones.post; // graba la tabla con lo datos que se le introdujo
y esto
Form1.QuickRep1.Preview; // indico que el qreport esta en ese formulario que seria igual a:
With Form1 do begin
 QuickRep1.Preview;
end;
Gracias por ayudarme
Responder Con Cita
Respuesta



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
Master / Detail Quickreport mifiar Impresión 5 05-11-2007 16:18:31
DBLookupComboBoxs Master/Detail o Detail/Master yusnerqui OOP 5 29-07-2005 18:40:20
master/detail, imprimiendo master en cada hoja acalderonr Impresión 4 29-11-2003 14:46:07
interbase:¿como crear un master-detail-detail? ElSanto24 Firebird e Interbase 2 22-10-2003 10:24:45
Master/Detail/Detail/Detail/etc... hgiacobone Tablas planas 2 24-07-2003 17:20:31


La franja horaria es GMT +2. Ahora son las 11:27:48.


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