Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Programación: Cómo reiniciar el campo autoincremento de una tabla Paradox con Delphi
Delphi


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

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.

AjpdSoft El campo autoincremento en Paradox

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:

Secuencias en Oracle (para simular el 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:

AjpdSoft Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox manualmente con editor hexadecimal

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:

AjpdSoft Cómo cambiar el valor actual del campo autoincremento de una tabla Paradox manualmente con editor hexadecimal

Si todo es correcto, al editar la tabla y añadirle un nuevo registro, volverá a inicar el contador de autoincremento por 1:

AjpdSoft 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

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:

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;

Un ejemplo de uso de esta función:

    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:

AjpdSoft Reiniciar Autoincremento Paradox

2. Seleccionaremos el fichero Paradox, en nuestro caso "Tabla.db" y pulsaremos "Abrir":

AjpdSoft Reiniciar Autoincremento Paradox

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":

AjpdSoft Reiniciar Autoincremento Paradox

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:

AjpdSoft Reiniciar Autoincremento Paradox

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:

AjpdSoft Reiniciar Autoincremento Paradox

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":

AjpdSoft Reiniciar Autoincremento Paradox

En el ejemplo, si añadimos un nuevo registro a la tabla, en el campo autoincremento (Código) establecerá 101:

AjpdSoft Reiniciar Autoincremento Paradox

Nota: para mostrar el contenido de la tabla debe estar instalado el BDE (Borland Database Engine) en el equipo.


Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.


Anuncios


Enviado el Domingo, 06 febrero a las 15:56:32 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A