Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con campo identity (https://www.clubdelphi.com/foros/showthread.php?t=63210)

Luis Cuenca 03-02-2009 18:22:30

Problema con campo identity
 
Hola Amigos:

Tengo una base de datos sql 2000 con delphi 7 ambos conectados con un odbc. Apenas estoy conociendo SQL y mi problema es este:

Al hacer insert en una de las tablas me sale el siguiente error del campo identity, despues del Post: Field "ID" must have a value.

Si hago un edit en la tabla o un delete no me sale error.

Este es el codigo que tengo en delphi:

procedure TForm4.Button2Click(Sender: TObject);
Var Registros:Integer;
begin
if Choferes1.State = dsInsert then
Begin
Choferes1.Post;
Choferes1.Close;
Choferes1.Open;
Choferes1.FindLast;
Registros:= Choferes1.RecordCount;
Label18.Caption:= inttostr(Registros)+' Registros';
end;

Ojala que me puedan ayudar, no se que estoy haciendo mal o que me falta hacer, pero necesito resolver esto, gracias de antemano

luisgutierrezb 03-02-2009 20:59:06

Tienes que asignarle un valor al campo ID, aunque realmente no se use porque tiene el identity, puedes generar los campos persistentes y quitarle lo de requerido para que no te lo pida, pero puedes usar el evento afterinsert y ahi darle un valor al campo ID, insisto no importa cual porque despues lo descarta

Luis Cuenca 03-02-2009 21:54:20

Gracias Luis

Este campo en realidad lo necesito como un id, ¿ no hay algun tipo de campo en SQL que incremente y asigne su valor automaticamente cuando se inserta un nuevo registro ?

Saludos

luisgutierrezb 03-02-2009 22:24:04

Puedes usar ese campo tal cual como identidad, nada mas en delphi le vas a asignar un valor aunque este no se use, por ejemplo cuando creas los registros tu le asignas el valor de 2 por ejemplo, pero en realidad cuando grabe te va a dejar el 1,2,3,.... etc

lgarcia 03-02-2009 22:27:08

Problema con campo identity
 
Hola:
en SQL Server 2000 puedes crear un campo autonumerico poniendo la propiedad Identity en Verdadero y las propiedades Identity Seed y Incrementy en 1. Otra cosa que te recomendaria es utilizar como conexion a la BD ADO que te permitira mas velocidad y seguridad, utilizando los AdoStoreProcedure.

Saludos

Luis Garcia

olbeup 03-02-2009 23:06:16

Hola,

Para declarar un campo autonumerico debes de decirle al campo que los es de la siguiente manera:

Código SQL [-]
CREATE TABLE
(
  ID    AS int IDENTITY(1,1)
  NOMBRE AS varchar(15)
  APELLIDOS AS varchar(20)
)
El Campo ID es un campo autonumerico, y cuando insertas un registro en la base de datos éste campo aumentara su valor en uno automáticamente, sin necesidad de pasarle ningún dato.

Si en dos ordenadores añades un registro a la misma vez, no te preocupes el servidor le asignara un número a cada uno.

Un saludo.

olbeup 03-02-2009 23:07:26

Perdón se me ha olvidado el nombre de la table.
Código SQL [-]
CREATE TABLE Clientes
(
  ID    AS int IDENTITY(1,1)
  NOMBRE AS varchar(15)
  APELLIDOS AS varchar(20)
)
Un saludo.

Luis Cuenca 04-02-2009 16:10:54

Gracias a todos por su ayuda, ya esta resuelto ese problema

Luis Cuenca


La franja horaria es GMT +2. Ahora son las 07:03:06.

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