Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-07-2005
sostro sostro is offline
Miembro
 
Registrado: ago 2004
Posts: 24
Poder: 0
sostro Va por buen camino
Delphi 7 + ADO + Acces + Insercción en tabla con clave autonumérica

Hola a todos. Antes de nada agradeceros vuestro tiempo.

Intento insertar un registro en una tabla con una clave primaria autonumérica en access, pero sólo soy capaz a crear el primer registro. Al intentar crear el segundo me dice que no puede hacer tal cosa pues se duplicaría la clave primaria (cosa que lógicamente es imposible hacer).
Se que el "problema" viene derivado de que es un campo autonumerico.
Sobre un insercción en SQL de esta forma:
Código Delphi [-]
        open;
        insert;
        fieldByName('Id_Peritacion').asInteger:=NULL;
        fieldByName('Id_Compania').asInteger:=Peritacion.Id_Compania;
        ...
        (os ahorro un monton de lineas equivalentes, y por tanto innecesarias para esto)
        ...
        fieldByName('IVAHonorarios').asFloat:=Peritacion.IVAHonorarios;
        fieldByName('HonorarioNeto').asFloat:=Peritacion.HonorarioNeto;
      post;
        {Como uso autonumericos en acces, me interesa(mejor dicho, necesito) recuperar el valor de Peritacion}
        Peritacion.Id_Peritacion:=fieldByName('Id_Peritacion').asInteger;
      Close;

¿Qué debería saber para que mi programa y accces se entiendan bien en eso de trabajar con autonuméricos?

La insercción la hago sobre un objeto de la clase ADOTable.

Un saludo a todos y de nuevo agradeceros vuestro interes.
Responder Con Cita
  #2  
Antiguo 15-07-2005
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
simplemente no le asignes ningún valor...

Código Delphi [-]
with table1 do
begin
 append;
 fieldByName('Id_Compania').asInteger:=Peritacion.Id_Compania;
        ...
        (os ahorro un monton de lineas equivalentes, y por tanto innecesarias   para esto)
        ...
        fieldByName('IVAHonorarios').asFloat:=Peritacion.IVAHonorarios;
        fieldByName('HonorarioNeto').asFloat:=Peritacion.HonorarioNeto;
   post;
end;

Saludos, Tony
Responder Con Cita
  #3  
Antiguo 15-07-2005
sostro sostro is offline
Miembro
 
Registrado: ago 2004
Posts: 24
Poder: 0
sostro Va por buen camino
Ya habia probado con esa opción de no asignar valor alguno, pero sigue haciendo lo mismo...

Raro, ¿verdad?.

Saludos y gracias...
Responder Con Cita
  #4  
Antiguo 15-07-2005
Aztaroth Aztaroth is offline
Miembro
 
Registrado: dic 2003
Ubicación: Matamoros
Posts: 52
Poder: 21
Aztaroth Va por buen camino
Campo Autonumerico

Una forma de hacer eso es que al campo en la ADOTable, en la propiedad
AutoGenerateValue lo pongas a ArAutoInc

y en la propiedad ProviderFlags ponle la propiedad pfInKey a true y wala, no debe haber el mayor problema ahora depende como tengas el cursor, si lo pones a modo CursorLocation = clUseServer y el CursorType = ctKeySet.
Responder Con Cita
  #5  
Antiguo 16-07-2005
sostro sostro is offline
Miembro
 
Registrado: ago 2004
Posts: 24
Poder: 0
sostro Va por buen camino
sin avances....

He hecho los cambios y sigo igual... seguro que es un detalle tonto, pero es lo que marca la deferencia... gracias. Gracias Aztaroth...
Responder Con Cita
  #6  
Antiguo 16-07-2005
sostro sostro is offline
Miembro
 
Registrado: ago 2004
Posts: 24
Poder: 0
sostro Va por buen camino
resuelto

ya está... era una tonteria... por alguna razón me obceque en que era la clave primaria quien me daba el problema y era otro campo que le habia impuesto que fuera unico, y no lo estaba cumpliendo... así que resuelto.

Gracias a todos....
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


La franja horaria es GMT +2. Ahora son las 03:24:02.


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