[RESUELTO]ID automático se salta registros

Discute sobre las herramientas de la base de datos
Responder
lodo20
Mensajes: 15
Registrado: Lun Ene 23, 2017 4:43 pm

[RESUELTO]ID automático se salta registros

Mensaje por lodo20 »

Buenas, verán, en mi base de datos tengo un listado de clientes identificados con un ID, el problema está en que cuando a través de un formulario introduzco nuevos clientes, el ID se inserta automàticamente pero, a veces se salta algún número, por ejemplo inserto un cliente dónde le da el ID 20 y el siguiente le da el 22, luego el 23, .... y asi, saltándose el 21 (suele pasar cuando le doy a guardar y hay algun campo no insertado que necesite entrada o repetido)
¿Alguien que me pueda ayudar? grácias. ;)
Última edición por lodo20 el Mié Mar 08, 2017 4:41 pm, editado 1 vez en total.
LibreOffice 4 en windows7
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: ID automático se salta registros

Mensaje por RMG »

Hola,

Por lo que comentas, el problema puede ser debido a que has eliminado un registro, por lo que al insertar uno nuevo ese número se pierde, esto es algo natural de Base. Si el ID simplemente es para control de tus clientes, no importa que desaparezca algún número, otra cosa es que te sirva para saber la cantidad de clientes que tienes, en este caso tendrás que de alguna forma numerarlos.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
lodo20
Mensajes: 15
Registrado: Lun Ene 23, 2017 4:43 pm

Re: ID automático se salta registros

Mensaje por lodo20 »

si simplemente es para control nada mas, aunque a veces, cambiando el ID en la tabla, se arregla y vuelve a introducir en su orden.
gracias :)
LibreOffice 4 en windows7
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: ID automático se salta registros

Mensaje por telemeteo »

Buenas noches.

Eso pasa siempre con los campos autonuméricos.
Me acuerdo en Microsoft Office que ya me pasaba.
El modo de solucionarlo era que al entrar los datos mediante formulario, el campo Id se calcule con una formula o macro.
Siempre el último de la tabla + 1.

Te paso lo que tenía sobre el cuadro contador, en un fichero de texto de hace años.
Es de Access, a ver si te vale para algo:

Código: Seleccionar todo


Formularios : frmContador
----------------------------------------------------------------------CCUADRO TEXTO CONTADOR EN FUNCIONARIO CONTINUO
 
Autor/es:
José Bengoechea Ibaceta (Chea) 
Pregunta : Tengo un formulario en formato continuo o tabular y quisiera saber si hay alguna manera de poner un cuadro de texto que me muestre el número de registro correspondiente a cada fila. 
Respuesta : La función frmContador hace exactamente eso. Puedes utilizarla desde Visual Basic, o como Origen del control de un cuadro de texto en un formulario. Tiene los siguientes 
Argumentos

Argumento Descripción 
frm Requerido. Variable objeto del formulario en el cual se quieren numerar los registros 
 
Se la puede llamar desde Visual Basic así: 
' asignando su valor a una variable o a un cuadro de texto
' y llamándola desde el mismo formulario 
NumeroDeRegistro = frmContador(Me)

' o llamándola desde otro formulario
NumeroDeRegistro = frmContador(Forms!NombreFormulario) 
o bien poniéndola como Origen del Control en un cuadro de texto directamente, de esta manera 
= frmContador(Forms!NombreFormulario) 
'---------------------------------------------------------
'
' frmContador
'
' Código escrito originalmente por José Bengoechea Ibaceta
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     j.bcheaTARARIQUETEVI@wanadoo.es
'
' Este código se brinda por cortesía de
' José Bengoechea Ibaceta
'
Dim lngContador As String

Public Function frmContador(frm As Form) As Long
 
    On Error GoTo frmContador_err
    
    With frm.RecordsetClone
        .Bookmark = frm.Bookmark
        frmContador = 1 + .AbsolutePosition
    End With
    Exit Function
    
frmContador_err:

    ' estas líneas realmente no se necesitan pues
    ' si se produce cualquier error, la función
    ' devolverá 0 igualmente, pero se deja aquí
    ' a nivel de información
    If Err = 3021 Then 'no hay registro activo
        lngContador = 0
    End If
    
End Function
'--------------------------------------------------------- 


LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: ID automático se salta registros

Mensaje por telemeteo »

Un saludo, que me he despistado.
Emiliano.
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
mriosv
Mensajes: 2335
Registrado: Sab Dic 27, 2008 1:12 am
Ubicación: Galiza (España)

Re: ID automático se salta registros

Mensaje por mriosv »

Los campos autonumericos tiene como finalidad ser un identificador unico del registro en la tabla (la clave primaria PK), y nunca debiera ser modificado, de esta forma son muy seguros y eficientas para ser utilizados como campo de enlace en las relaciones entre tablas.
Así se evita duplicar datos en distintas tablas, por ejemplo la referencia o nombre de un artículo, solo los archivamos en la tabla de artículos, y en el resto de las tablas que lo referencian tenemos solo el ID (PK) del artículo en su tabla de artículos, que ocupa menos que la referencia del artículo o su descripción. Además esto nos permite modificar cualquier dato del artículo incluida su referencia sin necesidad de hacer modificaciones en cascada en todas las tablas en las que está relacionado.
Aunque al principio cuesta un poco acostumbrarse, especialmente porque obliga a SQL un poco mas complejas, hace las bases de datos mucho mas eficientes y compactas.

También suele utilizarse una tabla auxiliar para guardar la númeración de los documentos en base de datos complejas, otra alternativa es asignar el mayor + 1 de los existentes en la tabla
Puedes usar "Subir adjunto" en Respuesta rápida - Editor Completo - Pestaña Subir adjunto
Apache OpenOffice 4, LibreOffice (Win10x64)
telemeteo
Mensajes: 49
Registrado: Jue Ago 13, 2015 6:26 pm

Re: ID automático se salta registros

Mensaje por telemeteo »

Buenas tardes.

Te envío una solución que encontré en los foros y tenía guardado el enlace.
La he empleado en algún formulario.

Es de RMG, de los más activos del foro y que mas soluciones nos aportan:

https://forum.openoffice.org/es/forum/v ... ura#p25858

Espero que te sirva.

Un saludo,

Emiliano
LibreOffice 5.3.1.1 - Fedora 25 (Principal)
OpenOffice 3 - Windows 7 (trabajo)
lodo20
Mensajes: 15
Registrado: Lun Ene 23, 2017 4:43 pm

Re: [RESUELTO]ID automático se salta registros

Mensaje por lodo20 »

Muchas gracias, ya está solucionado gracias al enlace del foro, me ayudó mucho :)
LibreOffice 4 en windows7
Responder