Explicamos cómo resetear o reiniciar (cambiar) el valor del campo autoincremento (autoincrement) de una tabla Paradox (.db) usando Borland Delphi 6. Además, publicamos una nueva aplicación: AjpdSoft Reiniciar Autoincremento Paradox con código fuente (source code) que permite cambiar el valor del campo autoincremento de una tabla Paradox.
- Paradox.
- El campo autoincremento en Paradox.
- Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox manualmente con editor hexadecimal.
- Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox mediante Delphi.
- AjpdSoft Reiniciar Autoincremento Paradox.
- Artículos relacionados.
- Créditos.
Paradox
Paradox es una base de datos relacional para entornos Microsoft Windows, anteriormente disponible para MS-DOS y Linux, desarrollada actualmente por Corel e incluida en la suite ofimática WordPerfect Office.
En los tiempos de MS-DOS, era una base de datos de bastante éxito, compitiendo con dBase, Clipper y FoxBase. Pasó al control de Borland después de la compra de Ansa Software en 1987.
Aunque Borland la portó a Windows, su cuota de mercado es mucho menor que la de Microsoft Access, pero su lenguaje de programación (ObjectPAL) es Pascal, lo que le hace más potente que Access, que usa Visual Basic y esto limita bastante sus prestaciones si se compara con otras bases de datos que usan lenguajes más avanzados. Con su Runtime se puede desarrollar una aplicación usando una sola licencia sin limitación de puestos.
El campo autoincremento en Paradox
Paradox admite campos de tipo autoincremento con un máximo de uno por cada tabla. Este tipo de datos en realidad es un entero (integer) con la característica especial de que es el propio motor de la base de datos el que le asigna el valor, autoincrementándolo correlativamente en cada registro.
Muchos motores de bases de datos avanzados como Oracle Database, Microsoft SQL Server, MySQL, DB2, PostgreSQL, etc. incluyen este tipo de datos, bien directamente como MySQL o bien a través de secuencias. En todos ellos es posible modificar el valor actual de campo autoincremento, por si queremos resetearlo o cambiarlo para que continúe por un valor elegido.
Por ejemplo, con MySQL, para cambiar el valor del campo autoincremento de una tabla podremos usar la siguiente sentencia SQL:
ALTER TABLE nombre_tabla AUTO_INCREMENT = 100;
Para el caso de Oracle Database, mostramos aquí cómo usar las secuencias para crear un campo autoincremento:
En el caso de Paradox no existe una forma de cambiar el valor del campo autoincremento de una tabla, salvo eliminando el campo y volviéndolo a crear o mediante algún proceso similar a este. Así pues, mostramos en este artículo cómo hacer una aplicación Delphi que permita modificar el valor del campo autoincremento para resetearlo a 0 o al valor que se quiera.
Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox manualmente con editor hexadecimal
Instalaremos cualquier editor hexadecimal gratuito como por ejemplo HxD Hex Editor, abriremos el fichero .db correspondiente a la tabla a la que queramos cambiar el valor autoincremento. Antes de continuar, como siempre, es muy recomendable hacer copia de seguridad pues vamos a editar el fichero directamente y cualquier descuido o error podría dejar el fichero inaccesible.
Una vez abierto el fichero .db con el editor hexadecimal nos situaremos en la posición 49 (bloque 49-4A) (posición 73 en decimal). En esta posición, en hexadecimal, aparecerá el valor del campo autoincremento de la tabla actual:
En el ejemplo anterior, el valor es F3 05, que si lo convertimos a decimal usando, por ejemplo, AjpdSoft Conversor Hexadecimal, Decimal, Texto, podremos ver el valor guardado. Para cambiarlo, escribiremos (en hexadecimal) el valor que queramos. Por ejemplo, para resetear a cero el contador de autoincremento escribiremos 00 00 y guardaremos los cambios:
Si todo es correcto, al editar la tabla y añadirle un nuevo registro, volverá a inicar el contador de autoincremento por 1:
Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox mediante Delphi
Paradox guarda el valor actual del campo autoincremento (autoincrement) de una tabla en la posición 73, por ello podemos usar la siguiente función Delphi para cambiar el valor autoincremento de una tabla Paradox:
Un ejemplo de uso de esta función:
procedure resetearAutoincremento ( fichero : string; valor : Longint); var mystream : tfilestream; begin mystream := tfilestream.create(fichero, fmOpenWrite + fmShareExclusive); try mystream.Seek(73, soFromBeginning); mystream.Writebuffer(valor, SizeOf(valor)); finally mystream.Free; end; end;
resetearAutoincremento (txtTabla.Text,
StrtoInt(txtValorAutoincremento.text));
AjpdSoft Reiniciar Autoincremento Paradox
AjpdSoft Reiniciar Autoincremento Paradox permite cambiar el valor actual del campo autoincremento de una tabla Paradox. La aplicación sólo requiere que se introduzca la tabla Paradox (.db) a la que se cambiará el valor del campo autoincremento y el valor nuevo a establecer.
Por ejemplo, si queremos establecer a 100 el valor del campo autoincremento de la tabla "tabla.db" realizaremos los siguientes pasos:
1. Abriremos la aplicación haciendo doble clic sobre el fichero resetearContadorParadox.exe. En "Resetear contaor autoincremento" pulsaremos en el botón "..." para seleccionar el fichero Paradox:
2. Seleccionaremos el fichero Paradox, en nuestro caso "Tabla.db" y pulsaremos "Abrir":
3. En "Valor" introduciremos el valor por el que queramos que empiece el autoincremento (siempre empezará un valor más del introducido). En nuestro caso introduciremos 100 (al crear un nuevo registro, el valor autoincremento será de 101). Pulsaremos "Resetear autoincremento":
4. La aplicación nos avisará de que debe ser un fichero Paradox pues no comprobará el formato y escribirá en la posición 73 del fichero, sea del tipo que sea, por lo que hay que proceder con precaución y hacer copia de seguridad previa:
Con el texto:
---------------------------
Confirmación
---------------------------
Atención: la aplicación no comprueba el fichero origen, por lo que debe asegurarse de que se trata de una tabla Paradox (.db). La aplicación escribe en el fichero directamente por lo que debe hacer copia de seguridad antes de continuar.
¿Desea continuar con el proceso?
---------------------------
Sí No
---------------------------
Tras el reseteo del contador, la aplicación nos mostrará una ventana indicando que el proceso ha concluido:
Con el texto:
---------------------------
Información
---------------------------
Campo de autoincremento de la tabla Tabla.db reseteado a 100. Compruebe los datos abriendo y editando la tabla.
---------------------------
Aceptar
---------------------------
Si queremos ver los datos de la tabla Paradox, AjpdSoft Reiniciar Autoincremento Paradox permite también mostrar los registros de la tabla, eliminar registros, añadir nuevos registros, modificar registros existentes, etc. Para ello pulsaremos en "Mostrar datos de la tabla":
En el ejemplo, si añadimos un nuevo registro a la tabla, en el campo autoincremento (Código) establecerá 101:
Nota: para mostrar el contenido de la tabla debe estar instalado el BDE (Borland Database Engine) en el equipo.
Artículos relacionados
- Realizar aplicación en Delphi con tablas Paradox en Red.
- Trucos Delphi sobre Paradox.
- Secuencias en Oracle (para simular el autoincremento).
- AjpdSoft Monitor SQL Código Fuente Delphi.
- AjpdSoft Administración Bases de Datos.
- AjpdSoft Comerciales y comisiones.
- AjpdSoft Gestión de productos fitosanitarios.
- AjpdSoft Control de Campo (Código fuente Open Source en Borland Delphi 6).
- AjpdSoft Gestión de Transportes.
- AjpdSoft Gestión de Taller.
- AjpdSoft Gestión Comercial.
- AjpdSoft Gestión de prendas.
- AjpdSoft Ventas e Ingresos con materiales.
- AjpdSoft Trazabilidad de productos fitosanitarios.
- AjpdSoft Control aula libre acceso.
- AjpdSoft Control de Stock.
- AjpdSoft Videoteca.
- AjpdSoft Vehículos, consumo y seguros.
- AjpdSoft Comerciales y comisiones.
- AjpdSoft Reparaciones y despieces.
- Otros artículos sobre Borland Delphi.
- Manual que explica cómo instalar algunos componentes habituales en Delphi.
- Borland Database Desktop.
- BDE (Borland Database Engine).
No hay comentarios:
Publicar un comentario