Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   InsertRecord con campo autonumerico de access y delphi7 (https://www.clubdelphi.com/foros/showthread.php?t=70865)

saldanaluis 16-11-2010 04:20:18

InsertRecord con campo autonumerico de access y delphi7
 
Compañeros,

Estoy intentando insertar un registro nuevo en una tabla de access cuyo primer campo es autonumerico, pero el comando de delphi 7 ...
Código Delphi [-]
TPEDHDR.InsertRecord([null,CltActual,CltNombre....])

me da un error de que el primer campo no debe de modificarse.

Lo que estoy tratando de hacer es lo siguiente:
Estoy añadiendo un encabezado de pedido y el campo autonumerico es el numero de pedido. Despues de esto debo de añadir el detalle del pedido y poner en un campo de la tabla del detalle del pedido el campo autonumerico que se generó al insertar el encabezado del pedido, por lo que necesito saber que numero se le asignó al pedido en el encabezado del pedido.

¿que falla tiene el comando arriba mostrado? :confused:
¿Cual es la mejor manera de insertar un registro y saber que numero le fue asignado al campo autonumerico?

Gracias compañeros del Club.

olbeup 16-11-2010 08:43:38

Cita:

TPEDHDR.InsertRecord([null,CltActual,CltNombre....])
Si el primer valor (null) es el campo autonumérico, no debes de ponerlo, sólo tienes que poner los campos que se grabarán en la DB

Sobre el número que ha insertado en el campo autonumérico, sólo tienes que hacer una SQL para recuperar el dato como:
Código SQL [-]
SELECT
    MAX(CAMPOAUTO) AS NUMPEDIDO
  FROM Pedidos

Espero que te sirva.

un saludo.

saldanaluis 16-11-2010 23:20:08

Cita:

Empezado por olbeup (Mensaje 382425)
Si el primer valor (null) es el campo autonumérico, no debes de ponerlo, sólo tienes que poner los campos que se grabarán en la DB

Gracias por la respuesta.

Lo que me quieres decir es que debo de poner la instruccion como
Código Delphi [-]
TPEDHDR.InsertRecord([CltActual,CltNombre,....])

¿De esta manera, si la tabla tiene 12 columnas, y la primera es el campo autonumérico, solo debo de especificar 11 valores en el comando InrertRecord?

Por otro lado. Me surge la duda con relación al numero de pedido asignado obteniendolo con el comando MAX, porque hay la posibilidad que pudiera haberse dado de alta otro pedido adicional y obtuviera el numero del segundo pedido, en lugar del primero. ¿Puede suceder esto?

Gracias por sus respuestas.

Saludos... :)

saldanaluis 06-12-2010 04:35:39

Lo que hice fue usar el comando Append de Delphi, dado que al hacer el Post me deja el registro insertado como registro actual y de ahi tomo el numero asignado por el campo autonumérico.


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