FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
key violation a veces
Tengo un pequeño problema y no encuentro la solucion.
Inserto datos en un dataSet en un campo id(tipo key). antes de insertar muevo el dataset al ultimo registro con dataSet.last y cojo el valor del campo id. AL inserta utilizo ese valor almacenado en la variable nuevoid, lo asigno asi: FIBDataSetICCSVentas.FieldByName('id').AsInteger:= idbnuevo + 1. Me funciona bien, pero si ejecuto una consulta de ventas entre fecha y luego quiero insertar una nueva venta me da el key violation. NO se si el problema es que no me refresca el dataset o no me mueve al ultimo registro. Es un poco lioso, a ver quien puede tener algo de idea. Gracias de antemano |
#2
|
|||
|
|||
usa los generadores para las claves.. (secuencias en el standard de sql) están fuera del marco de las transacciones y son precisamente para esto que se crearon.. si necesitas una secuencia de numeros sin espacios la implementación es más complicada..
suerte! |
#3
|
||||
|
||||
Aparte de recomendarte expresamente el uso de generados, tal y como se indica, ya que están al margen de las transacciones y por tanto te evitaran problemas que si no los utilizas los tendrás MAS QUE SEGURO, te quiero hacer dos comentarios a tu pregunta :
Te debes de asegurar que la consulta que obtienes esté ordenada por ese campo que quieres incrementar. Cuando consultas entre fechas, evidentemente no tienes porqué obtener todos los registros existentes, y por lo tanto si vas a coger el último número + 1 no tiene porqué ser el número que buscas ya que ese número ya puede existir al haber consultado entre márgenes de fechas, y por tanto te saltará el error. Consejo : Olvídate por completo de ese método y estudia el tema de los generadores.
__________________
Piensa siempre en positivo ! |
#4
|
|||
|
|||
Muchas gracias por vuestra respuesta. voy a ver como va lo de los generadores nunca los he usado, a ver que tal.
Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
OnMouseWheel se me ejecuta 3 veces | gluglu | Varios | 2 | 06-04-2007 02:24:34 |
Imprimir dos veces | agora18 | Impresión | 8 | 22-12-2006 21:51:07 |
A veces MS da pena... | marceloalegre | Noticias | 9 | 03-02-2006 22:58:53 |
A veces si, a veces no | buitrago | Firebird e Interbase | 0 | 28-02-2004 04:05:13 |
4 veces casada | José Luis Garcí | Humor | 0 | 19-06-2003 12:44:42 |
|