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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 10:44:36.


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