UNIDAD 6: REGISTROS Y ARCHIVOS DIRECTOS

TEMA PERL 8: EDICION MODIFICACION DE REGISTROS

Modificar o editar un registro es uno de los procesos mas comunes con archivos en disco, generalmente despues de un fuerte proceso de captura de registros, una revision o consulta general muestra muchos de ellos con errores de captura.

El modelo de programacion cliente-servidor que se esta estudiando, facilita mucho este proceso de edicion.

Para este proceso se ocupara una forma html y se ocuparan dos eventos, el procedimiento a seguir es:

1.- la forma html pide la clave del registro a editar.

2.- el primer evento es el programa normal de busqueda que ya se construyo en temas anteriores, pero al desplegar el registro se debera construir una forma html completa(llamada forma o pagina dinamica) que incluya los textboxs cargados con los datos del registro e incluyendo un segundo button=evento2, observar que en general este evento lo que hace es construir una segunda forma html con los datos cargados del registro.

3.- el segundo evento es activado y toma los datos de la forma dinamica, los almacena en el registro en memoria luego se posiciona en el registro en disco a modificar con seek() y se regraba con print.

Prog36.pl

#! /usr/bin/perl -w
# usando modulo o libreria CGI
use CGI;
use IO::Seekable;
# creando el OBJETO de tipo CGI
$q = new CGI;
# mandando servidor los encabezados de la pagina html
print $q->header;
print $q->start_html();
print $q->hr();
# creando una form o ventana
print $q->startform();
print "CLAVE A EDITAR: ";
print $q->textfield('CLAVE1','', 5);
print $q->br();
# creando un submit button
print $q->submit('BUSCAR');
# cerrando la forma
print $q->endform();
print $q->hr();
# cerrando html
print $q->end_html;
if ( $q->param('BUSCAR')) {
print $q->startform();
# abriendo archivo lectura
open(ARCHIVO, "DATOS.DAT") || die "No se pudo abrir archivo";
$clave1 = $q->param('CLAVE1');
seek(ARCHIVO, $clave1*39, 0);
# leyendo registro
read(ARCHIVO, $temporal, 39);
# desempacandolo
($clave, $nombre, $edad, $bandera) = unpack("I A30 I A1", $temporal);
if($bandera eq "A")
{
print "CLAVE A EDITAR: ";
print $q->textfield('CLAVE',$clave, 5);print $q->br();
print "NOMBRE A EDITAR: ";
print $q->textfield('NOMBRE',$nombre, 30);print $q->br();
print "EDAD A EDITAR: ";
print $q->textfield('EDAD',$edad, 5);print $q->br();
print $q->submit('EDITAR');
};
close(ARCHIVO);
print $q->endform();
};
if ( $q->param('EDITAR')) {
# abriendo archivo para escritura
open(ARCHIVO, "+<DATOS.DAT") || die "No se pudo abrir archivo";
# posicion en archivo
$clave1 = $q->param('CLAVE');
seek(ARCHIVO, $clave1*39, 0);
# capturando y grabando
$clave = $q->param('CLAVE');
$nombre = $q->param('NOMBRE');
$edad = $q->param('EDAD');
$bandera="A";
print ARCHIVO pack("I A30 I A1", $clave, $nombre, $edad, $bandera);
# cerrando archivo
close(ARCHIVO);
print "REGISTRO EDITADO";
};

Corrida:

image279.jpg

Observar que es el programa normal de busqueda pero el despliegue se realiza construyendo una pagina o forma dinamica como se observa en la siguente corrida:

Este es el programa que activa la forma dinamica y que actualiza el registro editado en el archivo en disco, la logica de este programa ya se explico en el tercer parrafo de este tema.

Corrida prog31.pl

image280.jpg

TAREAS PROGRAMACION PERL

CONSTRUIRLES PROGRAMAS DE EDICION O MODIFICACION A LOS ARCHIVOS YA CONSTRUIDOS.

Politica de Privacidad