Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Numerar el detalle Maestro / detalle en secuencia (https://www.clubdelphi.com/foros/showthread.php?t=39912)

josejose 01-02-2007 20:46:59

Numerar el detalle Maestro / detalle en secuencia
 
Que rutina podría utilizar para una pantalla maestro detalle lo que necesito que me haga es lo siguiente.

Los campos son

Tabla maestro
Código _ encargado
Nombre_encargado



Tabla detalle
Código _ asistente
Código _ encargado
Nombre _ asistente


Lo que necesito es que cuando este en el detalle para insertar un registro me de una secuencia numerica ejemplo

Tabla maestro
1 registro

Tabla detalle
1-1
2-1
Que cada vez que inserte uno si es de algún detalle que existe me incremente y me presente el valor siguiente
3-1 si es el que sigue

Trabajo en Delphi 7 y access 2003

LordRF 03-02-2007 02:19:37

Hola Jose,

no se si te puedo ayudar ya que no trabajo con access, pero me imagino que tambien access tiene un autoinc, que incrementa automaticamente el Nr. de registro y si no lo puedes hacer a mano

Código:

var
form: Tform;
nr : longint;

procedure TForm.TableBeforeInsert(DataSet: TDataSet);
begin
  Dataset.Last;
  Nr := Dataset.FieldByName('Campo').AsInteger + 1;
end;

procedure TFom.TableNewRecord(DataSet: TDataSet);
begin
  Dataset.FieldByName('campo').AsInteger := Nr;
end;

un saludo

jandres 05-02-2007 15:20:54

Gracias Pero ...
 
Hola y Gracias LordRF por ayudar me pero esta rutina la tengo la que necesito es una que dependiendo el código que tenga el maestro me va a numerar el detalle en secuencia
Te coloco un ejemplo nueva mente una vez vía lago así en un demo de delphi la versión era delphi 3


Maestro
Código maestro 1

Detalle
1 código de detalle
2 código de detalle
Y Así varias veces
Si inserto otro registro en el maestro seria

Maestro
Código maestro 2

Y entonces quisiera que el detalle Comenzara el ese nuevo registro

1 código de detalle
2 código de detalle

A ver si me explique un poco mejor Gracias ojala puedas ayudar me.

Lepe 05-02-2007 15:55:18

Necesitas:

Para el maestro
- un campo auto inc


Para el detalle:
- Un campo LongInteger o del mismo tipo del auto inc
- Un autoinc

Ahora abres las "relaciones de las tablas" en access, añades ambas tablas y desde la tabla Maestro, arrastra el campo al campo LongInteger, cuando esté encima lo sueltas y Access te preguntará el tipo de integridad referencial que necesitas. Normalmente es uno a muchos con duplicados.

Ahora en Delphi, para insertar una línea detalle, siempre deberás hacerlo en este orden:
- Primero insertar en la tabla maestra
- Ahora enviar un insertar al detalle.

Al tiempo de guardar los registros:
-Primero guardar el maestro.
- Después guardar el detalle.

Saludos

Saludos.

LordRF 09-02-2007 00:49:02

Hola por ejemplo lo puedes hacer asi:

con un query en la detalle
Código:

SELECT * FROM Maestra WHERE ID = :ID

Código:

procedure TDBM.DetalleAfterInsert(DataSet: TDataSet);
begin
  Detalle['ID'] := Maestar.FieldValues['ID'];
end;

y el resto ya lo pone arriab.

un saludo Robert

fjcg02 10-02-2007 00:27:38

Te sugiero que utilices la propiedad Recno de las tablas/querys. Cuando abres una tabla/query hay un campo que es recno que te dice el nº de registro que se trata.
Para hacerlo. crea un campo calculado en la query Detalle, de tipo integer.
En el evento DrawDataCell del grid donde visualizas los datos, pon el siguiente código.

Código Delphi [-]
if field.Name='TablaCampo' and Tabla.RecCount> 0 
  then
         DBGrid.Canvas.TextOut(Rect.left+5, Rect.Top +5, inttostr(Tabla.recno));

Ten en cuenta que recno es un campo calculado por delphi, que no puedes editarlo, y que dependiendo del campo por el que ordenes la tabla detalle te numerará las lineas.

Espero que te sea util.

Un saludo


La franja horaria es GMT +2. Ahora son las 01:07:04.

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