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)
-   -   delete con DBExpress (https://www.clubdelphi.com/foros/showthread.php?t=7855)

cesar_picazo 27-02-2004 23:32:27

delete con DBExpress
 
Buenas tardes.

Estoy realizando una aplicacion con DBExpress con Delphi 6 conectandome a una DB de (Interbase) Firebird 1.5, el problema que tengo o la duda es, como puedo hacer para eliminar un registro de la DB, el problema con el que me encontre es que si tengo registros duplicados, despues para elimar un registro me envia un mensaje de error que no se puede eliminar mas de un registro y me imagino que el problema va por el aspecto de que el registro 1 y el registro 10 de la tabla, estan duplicados tienen los mismos valores y este es el motivo del mensaje.

No se si existe alguna forma de decirle a Firebird elimina el registro 1.

O bien si esto no es posible en Firebird y DbExpress, que me recomiendan para utilizar una especie de campo autonumerico, con el fin de que no se presente otra ves el problema de que DBExpress no pueda eliminar un registro o antes de que se almacene el registro me informe que el campo ya existe("no estoy utilizando un indice ya que no es necesario en este momento crear ninguno"), Nota con visor de Db de Interbase y Firebird si pudé borrar el registro que esta duplicado.

Espero alguien me sepa que hacer.

jachguate 28-02-2004 00:31:23

pues si todos los campos son iguales, no podes borrar un solo registro desde ningun lado. Me imagino que DBExpress se basa, de cualquier forma, solo ne la llave primaria, que en teoria no podria ser igual en ninguno de los dos...

Lo ideal es que crees una llave primaria (si no la necesitas, usa un número obtenido de generator).

Hasta luego.

;)

cesar_picazo 28-02-2004 00:57:17

Como asigno el generador a un campo
 
Ya nada más para terminar, en los componentes de DBExpress en donde se le asigna que se utilizarà un generado en un determinado campo, esto es:
Campo ID propiedad generated, en los componente de IB si existia un campo para asignarle un generador, pero en DBexpress no lo encuentro.

PD. Que malo que no se pueda crear una tabla sin Indices y con campos duplicado, estaria bien que se le pudiera decir que borre el registro que esta en la posiciòn X sin importa si existe otro igual.

jachguate 28-02-2004 01:04:12

Cita:

Empezado por cesar_picazo
Que malo que no se pueda crear una tabla sin Indices y con campos duplicado, estaria bien que se le pudiera decir que borre el registro que esta en la posiciòn X sin importa si existe otro igual.

Te recomiendo la lectura de un libro sobre bases de datos relacionales y el estándar SQL. A grandes razgos, solo te comento que en una base de datos relacional no existe la "posición" de un registro.

Quizas la unica base de datos que tiene una forma de saltarse este asunto es Oracle con su rowid

Por otro lado, que se puede crear la tabla, que te diré... vos mismo has visto que si se puede.... :rolleyes: el problema está en manipularla...

Por último, para asignar el valor al campo llave te sugiero que te valgas del evento OnNewRecord del DataSet.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 01:11:47.

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