Tipo de campo desconocido

Hola. Quería hacer esta consulta para ver si me puedes dar una ayuda:
Tengo una tabla BTrieve version 6 o 5. La puedo ver con Visual Basic 6 y las APIs de Pervasive. El registro tiene 14 bytes de ancho. En los 4 primeros bytes esta almacenado un entero correspondiente a un código de articulo. No tengo problemas con este campo.
En los siguientes 10 bytes el programador original de esta tabla almaceno un numero de 13 dígitos que corresponde a un numero de Código de Barras.
El problema es que no entiendo que procedimiento o tipo de datos fue usado para guardar este numero. Hice mil combinaciones distintas de tipos de datos y manipulación de bytes, pero no puedo sacar ningún código de barras correcto. Tengo los .exe que cargan y trabajan con esta tabla pero no tengo los fuentes.
Este sistema trabaja con casi 50 bases BTrieve y no he tenido ningún problema para trabajar con ninguna excepto esta.
2 detalles que he visto: los bytes 5 y 6, de izq. A derecha, están en 0 en toda la tabla.
Los bytes 13 y 14 tiene poca variación en toda la tabla.
El código de barras esta almacenado aquí, de eso no hay dudas.
¿Se te ocurre una solución para esto? ¿Te pudo mandar el archivo a ver si descubres como es el asunto?
He tratado de conseguir el programa DataJunction, que me han dicho que tiene acceso a muchos tipos de base de datos y me puede ayudar, pero no lo conseguí.
Un saludo, espero que puedas ayudarme

1 respuesta

Respuesta
1
Prueba a bajarte la demo de Pervasive con el servidor SQL, ahí encontrarás muchas utilidades para ver los ficheros, y con la documentación encontraras todos los tipos de datos que se pueden utilizar, aunque es posible que el programador utilizase un algoritmo propio para codificar los datos. En ese caso busca la relación del código guardardo con el código del artículo. Si no encuentras nada avisame.
Si tienes la utilidad butil.exe teclea butil -stat nombrefichero y dime el resultado, esa información puede ser de mucha utilidad.
Hola.
Todo esto ya lo he probado por supuesto. Estoy estudiando este problema desde hace meses y ya lo único que me queda es consultar la mayor cantidad posible de conocedores de BTrieve, a ver si a alguien se le ocurre algo.
Sobre el asunto del algoritmo propio, si, es probable. Nada más que no me explico porque se complicaría con eso en un numero sin importancia en el sistema como el código de barras, y por el hecho que en las otras 50 tablas del sistema, con datos más complejos he importante, no he tenido ningún problema.
Me inclino más a pensar que ha usado algún lenguaje que maneje una estructura de datos inusual o poco difundida y que lo haya guardado en un campo estándar de btrieve, similar al caso del tipo Long del VB.
Mando este ejemplo que tengo:
art.cod |    codigo barras
C76B9F06 0000207D442DF4E22940
8ED73E0D 00006098EB630A922940
6353CD13 000000E608B159812740
111111111 7798073730025
222222222 5017916366019
332223331 1111111111116
Estos son 3 registros. Arriba están los 14 bytes y abajo a los números que corresponden.
Esto es lo que da:
Btrieve Utilities Version 5.12
Copyright 1982 - 1990, Novell, Inc. All Rights Reserved.
File Stats for intercb.btr
Record Length = 14 Compressed Records = No
Variable Records = No
Number of Keys = 2
Page Size = 1536 Unused Pages = 0
Total Records = 21489
Key Position Length Duplicates Modifiable Type Null Total
0 1 4 No Yes Unsigned -- 21489
1 5 10 No Yes Unsigned -- 21489
Ok
La interpretación del fichero indica que:
La longitud del registro son 14 bytes de longitud fija y que utiliza 2 claves, la primera ocupa desde el carácter 1 hasta el 4 y la segunda desde el 5 hasta el 14, los campos de clave no tienen formato, por tanto el cambio de valor es interno del programa no de la base de datos, solo queda el trastear con algún visor de ficheros hasta encontrar una relación del dato guardado con el correspondiente una vez convertido. Yo me decantaría por probar todos los formatos posibles en el lenguaje utilizado. Por la version de butil, es bastante antiguo podría haber utilizado Pascal o QB, entonces eran los más utilizados con Btrieve.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas