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-10-2004
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Exclamation problemas en delphi con campo autoincremental

Uso delphi 7 e interbase6.5. En una tabla tengo un campo autoincremental, y al provarlo desde el IBExpert, funciona bien, pero en delphi al introducir datos mediante:
IBDatabase1.Insert;
IBDatabase.fieldbyName('Codigo').Value:=valor;
...
IBData1.post;

Si no le pongo tambien el campo clave me genera un erro la base, de que me falta el campo clave. Y digo yo que si lo resuelve la base, no deberia preocuparme del dichoso campo teniendo que darle yo el indice.

Gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #2  
Antiguo 15-10-2004
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
creo que le tienes que pasar al campo el valor NULL.

Saludos, Tony
Responder Con Cita
  #3  
Antiguo 15-10-2004
nicolasdom nicolasdom is offline
Miembro
 
Registrado: ago 2004
Posts: 41
Poder: 0
nicolasdom Va por buen camino
Yo lo resolvi pasandole cualqueir valor. El tema es el siguiente:
En la base se te va a guardar bien el dato, pero en la tabla se te va a hacer una ensalada si le pones un codigo que ya existe. Moraleja, pasale un numero lo sufisientemente alto y que sepas que no esta en la tabala. Yo lo arregle asi

[codigo Delphi]

procedure TFormComprobantes.IBTable1AfterInsert(DataSet: TDataSet);
begin
Dataset.FieldValues['CODIGO_COMPROBANTE']:=9999;
end;

[/codigo Delphi]

Espero que te sirva.
Responder Con Cita
  #4  
Antiguo 15-10-2004
JulioGO JulioGO is offline
Miembro
 
Registrado: ago 2004
Posts: 94
Poder: 20
JulioGO Va por buen camino
Hola forofos:

Por lo que he leido lineas arriba, la cuestion es la siguiente:

- Tienes un campo autoincremental, que de seguro debe haber sido creado de la siguiente manera: CREATE TABLE MITABLA(NOMBRE_CAMPOAUTOINC not null, ...)

- Si es asi como se ha creado en el DataSet deberias poner esto en el procedure InserSQL: INSERT INTO MITABLA(DEMAS CAMPOS SIN TOMAR EN CUENTA EL CAMPO AUTOINCREMENTAL)

A mi me funciona, espero que a ti tambien.

Saludos.
Responder Con Cita
  #5  
Antiguo 20-10-2004
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Cita:
Empezado por tcp_ip_es
creo que le tienes que pasar al campo el valor NULL.
Saludos, Tony
He puesto:
Código:
IBTable1.FieldByName('CLAVE').Value := NULL;
y no funciona

Cita:
procedure TFormComprobantes.IBTable1AfterInsert(DataSet: TDataSet);
begin
Dataset.FieldValues['CODIGO_COMPROBANTE']:=9999;
end;
Asi tampoco funciona, porque en la tabla me inserta el 9999 como clave y la proxima vez que voy a insertar un registro me dice que como es clave primaria no se puede repetir y casca el programa.

Cita:
- Tienes un campo autoincremental, que de seguro debe haber sido creado de la siguiente manera: CREATE TABLE MITABLA(NOMBRE_CAMPOAUTOINC not null, ...)

- Si es asi como se ha creado en el DataSet deberias poner esto en el procedure InserSQL: INSERT INTO MITABLA(DEMAS CAMPOS SIN TOMAR EN CUENTA EL CAMPO AUTOINCREMENTAL)

A mi me funciona, espero que a ti tambien.

Saludos
Esto no lo he provado, porque inserto mediante:
Código:
  IBDatabase1.Insert;
   IBDatabase.fieldbyName('Codigo').Value:=valor;
   ...
   IBData1.post;
Pero sino me queda otra tendre que probar como dice JulioGo.

PD: El procedimiento
Código:
IBTable1.InsertRecord(...);
funciona bien?

Gracias
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
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 01:39:38.


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