PDA

Ver la Versión Completa : Problema con campo identity


Luis Cuenca
03-02-2009, 18:22:30
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
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:

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.
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