Fecha y hora actual: Jueves 17 Ene 2019 05:43
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.39 - Archivos secuenciales, formatos

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.39 - Archivos secuenciales, formatos

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Sábado 23 Ene 2010 20:57

Título del mensaje: Curso VB .NET - Tema 1.39 - Archivos secuenciales, formatos

Responder citando

Curso de programación en .NET - Tema 1.39 - Archivos secuenciales, formatos


1. Archivos secuenciales, formatos.
1.1 Objetivos del tema.

Sabemos cuales son los pasos para acceder a un archivo y las acciones a realizar, grabación y lectura.
En este tema vamos a ver como utilizar un archivo secuencial en varios formatos.

1.2 Introducción.
Los archivos secuenciales disponen de una serie de características que no los habilitan para el uso diario en una aplicación, pero sin embargo por sus características permiten que sean usados en temas muy concretos:

  • Trasvase de datos entre empresas.
  • Almacenamientos de datos para tablas de una aplicación.
  • Guardar datos de configuración.

Normalmente estos datos son cargados al principio de un programa.

1.3 Formatos.
1.3.1 ASCII delimitado.

El ASCII delimitado es un formato que permite indistintamente el formato de longitud fija y variable, pues cada dato viene separado del otro con comas.
Es el más estándar, eso significa que los datos se almacenan:
  • Los datos alfanuméricos delimitados entre comillas dobles.
  • Los campos numéricos sin delimitadores.
  • Los campos se separan entre si por comas.
  • Los registros incorporan una marca de fin de registro, los caracteres ascii trece y diez.

Los problemas que pueden surgir a la hora de su utilización vendrán dados por los distintos tipos de datos numéricos que cada aplicación, o sea el lenguaje en el que se ha desarrollado esa aplicación, sea capaz de tratar.
Como el problema más normal es ese, una forma de saltarlo es grabar todos los datos como datos de tipo string, que es un tipo de dato que cualquier lenguaje es capaz de tratar sin ningún problema.

Existe otro posible problema y es que el lenguaje en cuestión no sea capaz de tratar el formato, la alternativa es la de utilizar la instrucción de lectura, que todos los lenguajes disponen, que permita leer un registro completo, es decir de marca de fin de registro hasta la siguiente.
Posteriormente se puede desarrollar una función que aísle los campos buscando las comas ubicadas entre comillas dobles, y de esa forma se consigue separar los datos.

1.3.2 Registros de longitud fija.
Podemos evidentemente grabar registros de datos sin separadores de campos y utilizando una estructura de datos fija y conocida, sino no es posible tratarlos.
Se leen y graban con instrucciones que trabajan con registros completos, de marca a marca de fin de registro, o leyendo una sola variable de tipo string.

1.4 Estructuras.
Los archivos secuenciales permiten que podamos trabajar con registros de longitud fija o de longitud variable, que es otra de sus ventajas.
Otra posibilidad es la de poder utilizar estructuras de registros de distintos tipos en el interior del archivo.

1.5 Escritura.
La escritura de cada uno de los formatos que podemos utilizar dependerá en gran medida de las posibilidades del lenguaje que estemos utilizando, ya que no todos los lenguajes incorporan instrucciones adecuadas a los posibles formatos.

La escritura en un formato de longitud fija se podrá realizar con una instrucción que permita grabar una variable de tipo string.
La escritura de un formato en ascii delimitado es posible realizarla igualmente si no hay una instrucción que genere ese formato directamente con la misma instrucción que antes, pero previamente habrá que realizar el montaje de los datos componiendo una cadena de datos con ese formato.

1.6 Lectura.
La lectura de uno u otro tipo de estructura de datos dependerá de la estructura utilizada.
Se vuelve a presentar la misma situación que en la grabación, puede ser que no dispongamos de instrucciones para la lectura del formato recibido, por lo tanto posiblemente habrá que recurrir a la lectura de registros completos, como cadenas de caracteres, para su posterior desmontaje o desglose en los campos y tipos adecuados.

Por ejemplo la lectura de un registro de longitud fija puede darse en dos formatos.
  • Como cadena de caracteres, sin delimitadores.
  • Como ascii delimitado, con delimitadores.

La estructura de longitud variable también puede darse bajo los dos tipos de formatos, siempre y cuando cada registro se acompañe con las marcas de fin de registro.

1.7 Ejemplos de formatos.
El formato que sigue es un formato de registro de longitud fija y con marcas de final de registro.
No incorpora delimitadores de campos.


El formato que sigue es ascii delimitado con campos de longitud fija, pero podrían haber sido de longitud variable.
Incorpora delimitadores de campo y separadores
Código:
","

Y las marcas de final de registro.


El registro que sigue es de longitud fija, sin delimitadores de campo y sin marcas de final de registro.
Se hace algo más complejo su proceso, pues requiere de algún ajuste, y tiene sentido usarse cuando los registros son pequeños, el soporte también, que hoy no es el caso, y queremos ajustar por el motivo que sea.


1.8 Utilización.
Un archivo secuencial, es un archivo que tiene muchas utilizaciones.
Cualquier archivo de imagen, sonido, o similares, son archivos que poseen una estructura, una cabecera, y una serie de datos que se leen posteriormente o bien en bloque o de forma secuencial.

Basta solo ver las definiciones de las estructuras de los archivos mencionados, para poder entender lo dicho anteriormente.
Estos archivos son muy compactos.

Un archivo secuencial, al igual que los random y las bases de datos, necesita de ser actualizado.
Los que contienen sonido, vídeo e imágenes no necesitan de estos procesos, pero los que almacenan datos sí.

A pesar de ser archivos que no son habituales en un proceso de gestión, sin embargo surge la necesidad de su utilización en algunas ocasiones, o en muchas.
Dado que no es un archivo direccionable, el proceso de actualización se basa siempre en un proceso de emparejamiento de registros de dos archivos secuenciales, de entrada que da uno nuevo de salida.
  • El que contiene los datos actuales.
  • El que contiene los nuevos datos.

El resultado es un archivo nuevo, en el que han desaparecido los registros que había que borrar, se han incorporado los nuevos y se han actualizado los que tenían algún cambio.

En la imagen podemos ver una representación gráfica de dicho proceso.


Además de la acción de leer y grabar, hay un apartado importante en su tratamiento, y es el de la necesidad de la utilización de una estructura repetitiva para su proceso, listado, consulta etc.
Esta estructura será siempre del tipo Mientras
Código:
Mientras no Fin de archivo
Leer registro
Proceso
Fin Mientras

Es importante tener presente que este es el mejor sistema para su proceso.
Un bucle del tipo Repite, no es adecuado.

1.9 Actualización.
El segundo proceso clásico es el de la actualización, o el de emparejamiento, son iguales en esencia.
Su proceso se basa en el uso de lo que se conoce como high value.
Se trata de crear un bucle del tipo mientras, en el que la condición es que se proceda a leer registros mientras no se alcance el máximo valor en los archivos de proceso.

La filosofía es la de emparejar registros como ya se explicó en el tema anterior.
Importante que el valor utilizado como High value, no sea alcanzable por los datos del archivo.
El proceso se basa en que solo puede haber proceso de actualización si los códigos coinciden, en ese caso puede darse el caso de borrado o actualización, pero nunca un alta, eso sería un error.

Si el código del archivo principal se adelanta al de los cambios, significa que los registros hasta igualarse deben ser del tipo alta, en caso contrario sería un error en la grabación del archivo de cambios.
Si el código del archivo principal se queda por detrás significa que ese código no dispone de incidencias, por lo que debe ser copiado tal como está en el archivo que se crea nuevo en el proceso, para no perder los datos que no van a sufrir cambios.

Siempre debemos disponer de una pareja de registros, por lo que al tratar un registro del archivo principal, inmediatamente hay que leer otro.
Igual con el de los cambios.
Por este motivo antes de entrar en el bucle de proceso, se debe cargar una pareja de registros fuera del bucle.
Al realizar la lectura en un archivo si se da la circunstancia de final de archivo, es cuando al código de ese archivo se le asigna el high value.

No sirve utilizar variables de tipo booleano, ni cualquier otra combinación, cuyo único resultado al final es maquiavélico, comparado con la sencillez de éste proceso.

Código:
If No final(Incidencias) Entonces
   Leer(Canal, Codigo, .....)
Sino
   Codigo = Hv
Fin

If No final(Datos) Entonces
   Leer(CanalDatos, CodDatos)
Sino
   CodDatos = Hv
Fin

Wientras Codigo <> Hv Or CodDatos <> Hv
   Según Codigo
      Si Codigo = CodDatos
         Proceso
         If No final(Incidencias) Entonces
            Leer(Canal, Codigo, ......)
         Sino
            Codigo = Hv
         Fin
     
         If No final(Datos) Entonces
            Leer(CanalDatos, CodDatos, .....)
         Sino
            CodDatos = Hv
         Fin
     
      Si Codigo > CodDatos
         Proceso
         If No final(Datos) Entonces
            Leer(CanalDatos, CodDatos, .....)
         Sino
            CodDatos = Hv
         Fin
     
      Si Codigo < CodDatos
         Proceso
         If No final(Incidencias) Entonces
            Leer(Canal, Codigo, ......)
         Sino
            Codigo = Hv
         Fin
      Fin segun
Fin Mientras


La variable o constante HV debe recibir un valor que sea inalcanzable por los datos del archivo, en caso contrario el proceso no funcionará adecuadamente.
Los archivos a procesar deben estar ordenados, pues el proceso realiza una comparación de los códigos El archivo de incidencias será igual en diseño que el archivo de datos actuales, y además incorporará un dato que indicará si es una modificación, alta o borrado.

El proceso se realiza en función de los valores del campo código.


Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
guiyermo
Ex coAdmin


Registrado: 07 Mar 2007
Mensajes: 897
Ubicación: Avià - Barcelona

Mensaje Publicado: Domingo 24 Ene 2010 11:24

Título del mensaje: Re: Curso VB .NET - Tema 1.39 - Archivos secuenciales, forma

Responder citando

Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso Aplauso


GRACIAS
GUIYERMO
NO SOY DIGNO Y PRETENDO SERLO
www.operaberga.es
Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

necesito ayuda con el algoritmo de dijkstra en ...

mery Python 0 Jueves 13 Dic 2018 18:07 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Porque no puedo descargar archivos desde la nube?

reeccom Visual Basic .NET 0 Sábado 28 May 2016 18:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Procesar y facturar con archivos .xml mediante ...

Monje_Babuino C, C#, Visual C++ 0 Viernes 04 Mar 2016 16:53 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,