Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-03-2014
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Consulta Masetro/Detalle DBGRID

Estimados,

Estoy haciendo un bosquejo para Delphi + Firebird (Motor de datos), la idea es buscar un registro (maestro) y sobre ello poder reservar o solicitar un conjunto de materiales desde biblioteca.

Tabla Maestro: IDMaestro, IDSolicitante, FechaSolicitud
Tabla Detalle: IDDetalle, IDMaestro, IDMaterial, FechaDevolución

Logica:

1.- Al momento de buscar un Registro asociado a la TABLA Solicitantes, entonces muestra información básica en (maestro)
2.- Luego en una Grilla (detalle) están los registros del material solicitado y la fecha de compromiso de "devolución).
3.- Al presionar "AGREGAR" la idea es mostrar en otro Formulario una grilla y un texedit que filtre por nombre o titulo el material a solicitar.
4.- Al encontrar el Registro (material), poder hacer doble click en la GRILLA (registro) y arrastrar el IDMaterial (campo) al formulario anterior para con ello, registrar la fecha de devolución de ese "material solicitado".
5.- Con todo ello, se pretende registrar en ambas tablas (Maestro/Detalle) el o los materiales solicitados POR "PERSONA".

Alguien puede darme unas directrices para Delphi?.
Imágenes Adjuntas
Tipo de Archivo: jpg mockup_6.jpg (14,1 KB, 19 visitas)
Responder Con Cita
  #2  
Antiguo 07-03-2014
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 mantraxer21.

Un ejemplo muy simplificado como para darte una idea:

DataModule:
Código Delphi [-]
...
implementation
uses Forms;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  { Se supone a IBDatabase1 configurada y conectada }
  IBTransaction1.DefaultDatabase:= IBDatabase1;
  with IBDataSetMaster do
  begin
    Database:= IBDatabase1;
    Transaction:= IBTransaction1;
    SelectSQL.Text:= 'SELECT ID, FECHASOLICITUD, IDSOLICITANTE FROM MAESTRO';
    Open;
  end;
  with IBDataSetDetail do
  begin
    Database:= IBDatabase1;
    Transaction:= IBTransaction1;
    DataSource:= dsMaster;
    SelectSQL.Clear;
    SelectSQL.Add('SELECT ID,IDMAESTRO,IDMATERIAL, FECHADEVOLUCION');
    SelectSQL.Add('FROM DETALLE WHERE IDMAESTRO = :ID');
    Open;
 end;
 with IBQueryMaterial do
 begin
   Database:= IBDatabase1;
   Transaction:= IBTransaction1;
   SQL.Text:= 'SELECT * FROM MATERIAL';
   Open;
 end;
 dsMaster.DataSet:= IBDataSetMaster;
 dsDetail.DataSet:= IBDataSetDetail;
 dsMaterial.DataSet:= IBQueryMaterial;
end;

procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
  IBDataSetMaster.Close;
  IBDataSetDetail.Close;
  IBQueryMaterial.Close;
  IBTransaction1.Commit;
end;

Form1:
Código Delphi [-]
...
implementation  

uses Unit2,   // DataModule
     Unit3;   // Form material

procedure TForm1.FormCreate(Sender: TObject);
begin
  DataModule1:= TDataModule1.Create(nil);
end;

// Agregar material
procedure TForm1.btnAgregarClick(Sender: TObject);
begin
  Form2:= TForm2.Create(Self);
  Form2.Show;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:= (Source is TDBGrid) and (TDBGrid(Source).Name = 'DBGridMaterial');
end;

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  Form2.Close; // Cerrar el form (Opcional)
// Aquí las acciones que desees con los campos del registro seleccionado de la tabla "MATERIAL".
// En el ejemplo solamente muestro el campo "MATERIAL" en un mensaje.
  with TDBGrid(Source).DataSource.DataSet do
    ShowMessage(FieldByName('MATERIAL').AsString);
end;
...

Form2:
Código Delphi [-]
...
implementation   

uses Unit2; // DataModule

procedure TForm2.Edit1Change(Sender: TObject);
begin
  with DataModule1.IBQueryMaterial do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM MATERIAL WHERE MATERIAL LIKE :PARAM';
    ParamByName('PARAM').AsString := '%'+Edit1.Text+'%';
    Open;
  end;
end;

procedure TForm2.DBGridMaterialDblClick(Sender: TObject);
begin
  DBGridMaterial.BeginDrag(True);
end;
...
A fin de evitar largas explicaciones, muchas propiedades publicadas las asigné en tiempo de ejecución, pero podes hacerlo en tiempo de diseño desde el Object Inspector.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 10-05-2014
mantraxer21 mantraxer21 is offline
Miembro
 
Registrado: ago 2010
Posts: 94
Poder: 14
mantraxer21 Va por buen camino
Insertar en DBGrid

Hola a Todos,

Una consulta tengo 2 tablas (Maestro y Detalle)

Estructura de Maestro (ID_Maestro,Fecha,IDSolicitante)
Estructura de Detalle (ID_Detalle, IDMaestro, IDMaterial, Cantidad,Fecha_Solicitada, Fecha_Devolucion)

El tema es que todo es operacional en 1 sólo formulario (Operaciones)

Tengo claro el tema de Insert de la tabla "Maestro", el tema pasa por el "Detalle".

Aqui quiero trabajar con un DBGrid que me permita registrar "N" Materiales;

Consulta, que evento o metodología recmomiendan para lo siguiente:

1) Recorrer toda la DBGrid e insertar los registros en la Tabla (Detalle) (sean 1, 2, 60 registros de la grilla)

Si la tabla Detalle tengo el FK IDMaestro, cómo lo puedo tomar mientras estoy insertando en el formulario?

Gracias !

Motor de Base de Datos: Firebird !
Responder Con Cita
  #4  
Antiguo 10-05-2014
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 mantraxer21.

No logro entender en donde tenes dificultades. Si esta establecida la relacion Master-Detail, la inserción en este último se dá de forma natural.

¿ No es algo similar a lo que consultaste en este hilo ? Consulta Masetro/Detalle DBGRID

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 10-05-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Combinados ambos temas
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
Reporte del tipo Detalle/Sub Detalle/Sumarotia del Sub detalle - Sumatoria Total sonjeux Impresión 1 28-12-2009 18:55:27
Saber si el DBGrid (Detalle) esta Vacio en Relacion Maestro/Detalle Adrian Murua Conexión con bases de datos 2 03-01-2009 13:48:46
Consulta maestro detalle. jplj SQL 5 30-05-2007 20:24:14
Consulta Maestro Detalle Acker SQL 1 10-07-2006 19:25:58
Maestro-Detalle ;Actualizar detalle a partir de un DBgrid norberto_larios Conexión con bases de datos 1 11-09-2004 18:17:34


La franja horaria es GMT +2. Ahora son las 07:29:55.


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