Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 02-01-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 20
waly2k1 Va por buen camino
Autoincremental...

El problema en Access con los autoincrementales es que hasta que no
hagas el post en la tabla no puedes saber el valor asignado, y otra cosa: A no ser que tu aplicación sea monousuaria no te sirve el MAX() +1, por lo que no sabes cual es el valor real y la unica manera es seleccionando el valor @@IDENTITY. El problema no es de ADO, simplemente te digo que no te hagas problemas con los eventos porque son muchos y me pasó hace un tiempo que la sucesión de eventos no siempre respetaba un orden especifico, [code]supongo se corrigió ese bug, pero por las dudas descarté todo.

Por lo gral. cuando uso campos de tipo autoincremental lo hago cuando si o si inserto el registro y no cuando el usuario pueda cancelar la inserción.

Sino lo que uso es una tabla con un registro donde estan los últimos valores asignados y a un valor de esos le sumo uno, o sea simulo un Autoinc y llevo yo el control y no Access.

Te pego una función que la invoco cuando quiero insertar el registro

Código:
function TData.GetKey( sField:string ) :LongInt;
begin
    tblClaves.Requery;
    Result := tblClaves.FieldByName( sField ).Value + 1;
end;
Los campos son los nombres de las tablas, entonces paso como parámetro el nombre de la tabla y listo.

Algo así:
Código:
Tabla.FieldByName( 'ID_PROVEEDOR' ).Value:=TData.GetKey('PROVEEDOR');
Edito, me olvidé de decirte que una vez que insertes el registro actualices esa tablita

Código:
procedure TData.SetKey( sField:string );
begin
    tblClaves.Edit;
    tblClaves.FieldByName( sField ).Value := tblClaves.FieldByName( sField ).Value + 1;
    tblClaves.Post;
end;
Algo así:
Código:
TData.SetKey( 'PROVEEDOR');
Bueno espero te sirva de algo, exitos. Y no te compliques mucho.

Última edición por waly2k1 fecha: 02-01-2008 a las 23:30:59.
Responder Con Cita
 


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
Query dentro de otro query (Access) FGarcia SQL 2 28-12-2007 05:46:05
Problema con Insert dentro de Evento BeforePost Jvilomar Conexión con bases de datos 2 21-11-2007 16:31:12
Como hacer referencia a un query dentro de otro query? JuanBCT SQL 2 05-09-2006 18:35:25
query dentro de query jonmendi SQL 3 29-07-2005 15:13:33
Crear query dentro de unit y funcion? alehillebrand OOP 3 19-07-2005 00:56:59


La franja horaria es GMT +2. Ahora son las 05:19:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi