Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-07-2007
Arturo_ Arturo_ is offline
Miembro
 
Registrado: jul 2007
Posts: 48
Poder: 0
Arturo_ Va por buen camino
Maxima valor de un nuevo registro

// Versión: 10.0000 - © 1980, 2006 For Tables DELPHI SERVER .DB
// Ejecutar en: El Evento <Table.BeforePos> ****
// Función que Extrae el Valor Maximo para un Nuevo Registro Key
// Ejemplos:
// Form_DDBTLM.ASSEMBLY_RECORD_MaxKey(Table_NN, 'LINK_0001');
// Form_DDBTLM.ASSEMBLY_RECORD_MaxKey(Table_NN, 'LINK_0002');
// Form_DDBTLM.ASSEMBLY_RECORD_MaxKey(Table_NN, 'LINK_0003');
Código Delphi [-]
procedure TForm_DDBTLM.ASSEMBLY_RECORD_MaxKey(var pmt_TABLE: TTable; pmt_FIELD: string);
begin
  // Init_PROPERTIES
  if (Table_ARMK.Active) then Table_ARMK.Close;
  Table_ARMK.Filter := '';
  Table_ARMK.Filtered := False;
  Table_ARMK.IndexFieldNames := '';
  Table_ARMK.MasterFields := '';
  Table_ARMK.MasterSource := nil;
  // Assign_PROPERTIES
  Table_ARMK.DatabaseName := pmt_TABLE.DatabaseName;
  Table_ARMK.SessionName := pmt_TABLE.SessionName;
  Table_ARMK.TableName := pmt_TABLE.TableName;
  Table_ARMK.MasterSource := pmt_TABLE.MasterSource;
  Table_ARMK.MasterFields := pmt_TABLE.MasterFields;
  if (Table_ARMK.MasterFields = '') then
    Table_ARMK.IndexFieldNames := pmt_FIELD
  else
    Table_ARMK.IndexFieldNames := Table_ARMK.MasterFields + ';' + pmt_FIELD;
  // Open_TABLE
  Table_ARMK.Open;
  Table_ARMK.Last;
  // Load_RECORD_KEY
  if (Table_ARMK.RecordCount = 0) then
    pmt_TABLE.FieldByName(pmt_FIELD).AsFloat := 1
  else
    pmt_TABLE.FieldByName(pmt_FIELD).AsFloat := Table_ARMK.FieldByName(pmt_FIELD).AsFloat + 1;
  // Close_TABLE
  Table_ARMK.Close;
end;
(*
Lo que hace este modulo es extraer el numero maximo del ultimo registro grabado luego le suma 1 para el nuevo registro esto funciona con una tabla ó tables master detalle. Lo bueno es que no uso campos incrementales porque a medida que se agranda la tabla puede que la inserción de registros sean lentos con este codigo añadir el registro 1,000,000,000 seria como añadir el primer registro de una tabla en blanco.

Form_DDBTLM.ASSEMBLY_RECORD_MaxKey(Table_NN, 'LINK_0003');

Table_NN - Se pasa todo el componente de la Tabla
LINK_0003 - Es el campo que contendra el ultimo valor del registro.

Los campor LINK_0001 y LINK_0002 son los enlaces de la tabla Padre

*)

Última edición por marcoszorrilla fecha: 13-07-2007 a las 21:58:12.
Responder Con Cita
 



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
Abrir tabla en nuevo registro Moparova Conexión con bases de datos 4 17-05-2007 21:24:03
Registro Nuevo, Porque se va al Final???? AGAG4 Conexión con bases de datos 9 10-08-2005 07:44:11
Insertar Nuevo Registro perillan Conexión con bases de datos 3 24-04-2005 14:30:23
nuevo registro en tabla de sqlserver davidgaldo Conexión con bases de datos 4 24-09-2004 14:37:38
Error al insertar nuevo registro Humberto Firebird e Interbase 13 06-05-2004 22:45:01


La franja horaria es GMT +2. Ahora son las 18:41: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