leccion 3 - archivos con bases de datos

Upload: idsystems

Post on 04-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    1/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    3.1 ARCHIVOS CON ESTRUCTURA DE BASE DE DATOS

    Una base de datos es un conjunta de datos organizados y relacionados lgicamente entre si. Una base de datosse podra considerar como el almacenamiento organizado de los datos proporcionados por el programa.

    Los archivos con estructura de bases de datos sirven para almacenar de forma personalizada datos de unprograma que luego lo podr utilizar para ejecutar operaciones internas en su aplicacin, por ejemplo, podrutilizar un archivo con estructura de base de datos para almacenar la configuracin de su programa con elobjetivo de que esta quede almacenada cada vez que cierre el programa y posteriormente leer este archivocuando la aplicacin vuelva a ser ejecutada. No pretenda almacenar en un archivo de texto datos importantes deuna empresa, para esto cree bases de datos con sistemas SGBD profesionales como SQL, ORACLE, ACCESS,etc. En el siguiente captulo tratamos este asunto.

    Una base de datos esta compuesta de filas y columnas que fsicamente representa una tabla.Cada columna representa un Campo en la base de datos y cada Fila un Registro. Un campo se define como launidad de informacin ms pequea de la base de datos que tiene significado y un Registro se define como la

    coleccin de todos los campos de una base de datos. Toda lo que se escribe en dicha base de datos sedenomina Datos y juegan un papel muy importante en la base de datos.

    La estructura de una base de datos es la siguiente:

    Campos

    La base de datos anterior se podra considerar como una estructura que representa una agenda telefnica dondelos datos a almacenar son: Nombre, Apellido, Telfono y Direccin.

    Todos estos datos son de un mismo tipo y deben ser almacenados en un mismo archivo siguiendo unaestructura organizada tal y como se muestra en la tabla anterior. Por ejemplo, en este caso el primer registroCarlos Rodrguez 809-699-5858 Carretera Mella KM 8 (Mandinga) sera la primera lnea del archivo de labase de datos, el segundo registro sera la segunda lnea del archivo, el tercer registro sera la tercera lnea delarchivo y as sucesivamente.

    Si almacenamos estos datos en un archivo deberamos de almacenarlo de la siguiente forma:

    Carlos;Rodrguez;809-699-5858;Carretera Mella KM 8 (Mandinga)Pablo;Bucarelly;809-585-6325;Urb. Ralma. Calle #5

    Nelson;Prez;809-755-2352;Urb. Los Mina. Res. Catanga

    Se ha utilizado un punto y coma (;) para separar cada uno de los campos de la base de datos.Cuando almacenemos los registros en una base de datos deberemos agregar al final de cada campo un punto ycoma (;) que nos va a permitir el final de cada campo de la base de datos. Se puede utilizar otro carcter pero elms utilizado siempre ha sido el punto y coma (;).

    LECCION 3 Archivos con Base de datos Pgina 1

    Nombre Apellido Telfono Direccin

    Carlos Rodrguez 809-699-5858 Carretera Mella KM 8 (Mandinga)

    Pablo Bucarelly 809-585-6325 Urb. Ralma. Calle #5

    Nelson Prez 809-755-2352 Urb. Los Mina. Res. Catanga

    Registros

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    2/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    3.2 CREAR UN ARCHIVO CON ESTRUCTURA DE BASE DE

    DATOS EN VISUAL BASIC

    Crear una base de datos en Visual Basic no implica utilizar sentencias especiales para el almacenamiento de los

    datos, sino, que implica utilizar otros mtodos y algoritmos para almacenar y leer los datos.

    Vamos a utilizar las mismas sentencias Open, Line Input, Print, Output, Input y Append ya vistas anteriormente.Ahora crearemos una pequea agenda telefnica que le permitir aprender a crear archivos con estructura debase de datos. Cree una carpeta llamada Agenda en el disco duro para almacenar nuestro proyecto y nuestra base de datos.

    Abra un nuevo proyecto y dibuje el siguiente entorno:

    El primer botn servir para agregar un nuevo contacto o una nueva persona.

    El segundo botn permitir buscar algn contacto, ya sea por nombre o por el nmero de telfono.

    El tercer botn ser utilizado para eliminar un contacto de la base de datos.

    El cuarto botn se utilizar para obtener una lista de todos los contactos que han sido agregado a la basede datos.

    El quinto botn ser utilizado para salir de la aplicacin.

    Establezca los siguientes valores a los controles del formulario anterior para que quede como se muestra en laimagen anterior:

    Control Propiedad Valor Form1 Caption

    BorderStyleHeightWidthStartUpPositionBackColor

    Agenda1- Fixed Single454554301 CenterOwner

    LECCION 3 Archivos con Base de datos Pgina 2

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    3/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Label1 CaptionAutoSizeLeftTopFontBackColor

    MENU PRINCIPALTrue1635240Tamao 10 y Negrita.

    cmdAgregar CaptionHeightWidthLeftTopStyleBackColor

    &Agregar un nuevo contacto375301510807201- Graphical

    cmdBuscar CaptionHeightWidthLeftTopStyleBackColor

    &Buscar contacto3753015108013201- Graphical

    cmdBorrar CaptionHeightWidthLeftTopStyleBackColor

    &Eliminar contacto3753015108019201- Graphical

    cmdReporte CaptionHeightWidthLeftTopStyle

    BackColor

    &Reporte3753015108025201- Graphical

    cmdSalir CaptionHeightWidthLeft

    TopStyleBackColor

    &Salir37530151080

    31201- GraphicalEl primer verde.

    Ahora vamos a agregar un nuevo formulario (Form2) para la primera opcin del men principal.

    Haga clic en el men Project y luego haga clic en la opcin Agregar Windows Forms. En el cuadro de dialogoque aparece haga clic en el botn Open (abrir).

    LECCION 3 Archivos con Base de datos Pgina 3

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    4/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Ahora aparecer un formulario en blanco. En este formulario pondremos todo lo necesario para agregar unnuevo contacto en la base de datos.

    Ahora dibuje el siguiente entorno en el nuevo formulario (Form2):

    El primer botn ser utilizado para guardar los datos del nuevo contacto.

    El segundo botn ser utilizado para limpiar las cajas de texto y permitir agregar un nuevo contacto.

    El tercer botn cerrar la ventana de Agregar nuevo contacto.

    Establezca los siguientes valores en los controles del nuevo formulario:

    CONTROL PROPIEDAD VALORForm2 Caption

    BackColorBorderStyleShowInTaskBarHeightWidthStartUpPosition

    Agregar nuevo contactoEl primer amarillo.1 Fixed SingleFalse400554451 - CenterOwner

    Label1 AutoSizeCaptionBackColorLeftTopFont

    TrueINTRODUZCA LOS DATOS DEL NUEVO CONTACTOEl primer verde.120240Tamao 8 y Negrita.

    Label2 AutoSizeCaptionBackStyleFontLeftTop

    TrueNombre0 TransparentTamao 8 y Negrita.120720

    Label3 AutoSizeCaption

    TrueApellido

    LECCION 3 Archivos con Base de datos Pgina 4

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    5/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    BackStyleFontLeftTop

    0 TransparentTamao 8 y Negrita.1201200

    Label4 AutoSizeCaptionBackStyleFontLeftTop

    TrueTelfono0 TransparentTamao 8 y Negrita.1201680

    Label5 AutoSizeCaptionBackStyleFontLeftTop

    TrueDireccin0 TransparentTamao 8 y Negrita.1202160

    txtNombre TextAppearanceHeight

    WidthLeftTop

    (Vaci)0 Flat285

    36151080720

    txtApellido TextAppearanceHeightWidthLeftTop

    (Vaci)0 Flat285361510801200

    txtTelefono TextAppearanceHeight

    WidthLeftTop

    (Vaci)0 Flat285

    205510801680

    txtDireccion TextAppearanceHeightWidthLeftTop

    (Vaci)0 Flat285397510802160

    cmdGuardar CaptionHeightWidth

    LeftTop

    &Guardar375855

    2403000

    cmdNuevo CaptionHeightWidthLeftTop

    &Nuevo37585513203000

    cmdCancelar CaptionHeightWidth

    &Cancelar375855

    LECCION 3 Archivos con Base de datos Pgina 5

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    6/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    LeftTop

    42003000

    Active o seleccione el primer formulario (Form1) de la ventana de Proyectos (Project) haciendo doble clic sobreel mismo.

    Ahora haga clic en el primer botn Agregar un nuevo contacto y escriba en el evento Click la siguiente lneade cdigo:

    Form2.Show()

    La lnea de cdigo anterior permite mostrar el segundo formulario. El mtodo Show permite mostrar un formularioen la pantalla.

    Active el segundo formulario (Form2) de la ventana de Proyecto (Project) haciendo doble clic sobre el mismo.

    Ahora vamos a codificar el botn de Guardar:

    En el evento Click del botn Guardarescriba lo siguiente:

    Dim iNumArchivo AsIntegeriNumArchivo = FreeFile()FileOpen(iNumArchivo, "agenda.dat", OpenMode.Append)Print(iNumArchivo, txtNombre.Text & ";" & txtApellido.Text & ";" & txtTelefono.Text & ";" &

    txtDireccion.Text)FileClose()

    txtNombre.Text = ""txtApellido.Text = ""txtTelefono.Text = ""txtDireccion.Text = ""txtNombre.Focus()

    MsgBox("El nuevo contacto ha sido agregado.")

    Explicacin del cdigo anterior:

    - Segunda lnea:

    FileOpen(iNumArchivo, agenda.dat, OpenMode.Append)

    En esta lnea de cdigo la nica novedad es el mtodo Append que permite agregar informacin al final delarchivo y si este no existe entonces se crea. No utilizamos el mtodo Output por la razn de que este mtodocrea nuevamente el archivo y elimina los datos que tenia anteriormente para sustituirlo con los nuevos datos.

    - Tercer lnea:

    Print(iNumArchivo, Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text)

    Esta lnea permite escribir en una lnea del archivo el contenido de cada unas de las cajas de texto separado conun punto y coma (;), como habamos explicamos anteriormente.

    - Ultimas lneas:

    FileClose()

    LECCION 3 Archivos con Base de datos Pgina 6

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    7/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""

    Text1.SetFocusMsgBox ("El nuevo contacto ha sido agregado.")

    En estas ltimas lneas no hay nada nuevo. Se cierra el archivo, se limpian cada unas de las cajas de texto, sehace que el cursor se posicione en la primera caja de texto y se muestra un mensaje.

    Corra la aplicacin y, a continuacin, haga clic en el botnAgregar un nuevo contacto.

    Debe de aparecer el segundo formulario (Form2). Bien agregue un contacto y haga clic en el botn Guardar.Inmediatamente este registro se agrega en la base de datos. Ms adelante veremos como leer estos registros.

    Detenga la aplicacin.

    Haga doble clic en el botn Nuevo del segundo formulario (Form2) y escriba lo siguiente:

    Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""

    Text1.Focus()

    Explicacin del cdigo anterior:

    Ninguna novedad. Limpia todas las cajas de texto y hace que el cursor se posicione en la primera caja.

    En el evento Click del botn Cancelarescriba:

    Close()

    Explicacin del cdigo anterior:

    Close()

    Esta lnea de cdigo permite cerrar el formulario y no la aplicacin completa.

    Active el primer formulario desde la ventana de Proyectos (Project) haciendo doble clic sobre el mismo.

    Ahora vamos a crear un nuevo formulario que ser el formulario de la segunda opcin del men principal. Eneste formulario agregaremos todo lo necesario para buscar un contacto, ya sea por nmero telefnico o pornombre.

    Agregue un nuevo formulario haciendo clic en el men Project y a continuacin, en Agregar Windows Forms.En el cuadro de dialogo que aparece haga clic en el botn Open.

    Aparecer un nuevo formulario (Form3).

    LECCION 3 Archivos con Base de datos Pgina 7

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    8/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Dibuje un entorno similar al que se muestra en la imagen siguiente en un tercer formulario (Form3). Hgalo tal ycomo se ve, no dar los valores de los controles como lo haba echo anteriormente.

    En el evento Click del botn de comando Buscarescriba el siguiente bloque de cdigo:

    IfLen(Trim(txtBusqueda.Text)) = 0ThenMsgBox("Debe escribir algo en la caja de texto.")txtBusqueda.Focus()

    ElseIfoptNombre.Checked = FalseAnd optNumero.Checked = FalseThen

    MsgBox("Debe seleccionar el tipo de bsqueda.") Else OnErrorGoTo NOarchivo Dim Linea AsString Dim iNumArchivo AsInteger Dim Campo1, Campo2, Campo3, Campo4 AsString Dim Posicion1, Posicion2, Posicion3 AsInteger

    Dim Encontro AsIntegerEncontro = 0iNumArchivo = FreeFile()FileOpen(iNumArchivo, "agenda.dat", OpenMode.Input)

    'Open "C:\AGENDA\Agenda.dat" For Input As #1

    WhileNot EOF(iNumArchivo) 'Line Input #1, Linea

    Linea = LineInput(iNumArchivo)Posicion1 = InStr(1, Linea, ";", vbTextCompare)Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)Campo1 = Mid(Linea, 1, Posicion1 - 1)Campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)

    Campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)Campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))

    IfUCase(Campo1) = UCase(txtBusqueda.Text) And optNombre.Checked =TrueThenMsgBox("Nombre: " & Campo1 & " Apellido: " & _

    Campo2 & " Telfono: " & Campo3 & " Direccin: " & Campo4)Encontro = 1

    EndIf

    IfCampo3 = txtBusqueda.Text And optNumero.Checked =TrueThen

    LECCION 3 Archivos con Base de datos Pgina 8

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    9/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    MsgBox("Nombre: " & Campo1 & " Apellido: " & _Campo2 & " Telfono: " & Campo3 & " Direccin: " & Campo4)Encontro = 1

    EndIf

    EndWhile

    IfEncontro = 0ThenMsgBox("No se ha encontrado el contacto especificado.")

    EndIf

    FileClose(iNumArchivo)

    EndIf

    Exit Sub

    NOarchivo:MsgBox("La base de datos no existe.")

    Explicacin del bloque de cdigo anterior:

    - Las primeras tres lneas:

    IfLen(Trim(txBusqueda.Text)) = 0 ThenMsgBox ("Debe escribir algo en la caja de texto.")txtBusqueda.Focus()

    Este bloque de cdigo permite verificar si la caja de texto se deja vaca, en caso de que se deje vaca entoncesse muestra un mensaje y el cursor se enva a la caja de texto.

    La sentencia Len permite obtener la longitud de una cadena de caracteres, en este caso la longitud de la caja detexto. La sentencia Trim permite eliminar los espacios en blanco que posiblemente se escriban al final de la cajade texto.

    La traduccin del cdigo anterior sera la siguiente:SI LA LONGITUD DE LA CAJA DE TEXTO ES IGUAL A CERO ENTONCES

    MUESTRA EL MENSAJE (Debe escribir algo en la caja de texto)HAS QUE LA CAJA DE TEXTO RESIVA EL ENFOQUE

    - Lnea 4, 5 y 6:

    ElseIf optNombre.Checked = FalseAnd optNumero.Checked = False Then

    MsgBox ("Debe seleccionar el tipo de bsqueda.")

    Else

    Este bloque de cdigo permite verificar si se selecciona una de las opciones del tipo de bsqueda.La propiedad Checked permite verificar si el botn de opcin esta seleccionado o no. Cando tiene el valor Falseindica que el botn no esta seleccionado.

    La traduccin del bloque anterior es la siguiente:

    LECCION 3 Archivos con Base de datos Pgina 9

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    10/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    SI PRIMERA OPCION = no seleccionadaY SEGUNDA OPCION = no seleccionada ENTONCES

    MUESTRA EL MENSAJE (Debe seleccionar el tipo de bsqueda.)

    DE LO CONTRARIO

    El operador lgico And permite enlazar dos expresiones. Si ambas expresiones se cumplen, entonces, seejecutan las lneas de cdigos de ms abajo.

    La clusula Else (De lo contrario) se ha utilizado para tomar una decisin en caso de que no se cumpla lacondicin, es decir, en caso de que se seleccione alguna de las opciones. Si una da las opciones se selecciona,entonces, toda la codificacin que se encuentra debajo de la clusula Else se ejecutar.

    - Lnea 7:

    On Error GoTo NOarchivo:Esta lnea de cdigo activa el detector de errores. Si ocurre algn error en la apertura del archivo, entonces, seejecuta la codificacin que se encuentra debajo en la etiqueta NOarchivo.

    - Lneas 8, 9, 10, 11 y 13:

    Dim LineaAs StringDim iNumArchivo As IntegerDim Campo1, Campo2, Campo3, Campo4As StringDim Posicion1, Posicion2, Posicion3As Integer

    Dim EncontroAs IntegerEncontro = 0

    En esta seccin se declararon todas las variables necesarias para proceder con la codificacin.

    La primera variable Linea se utilizar para almacenar cada unas de las lneas de texto del documento. La

    segunda variable almacenara el numero de manipulador del archivo a abrir. Las variables Campo1, Campo2,Campo3, Campo4 son variables de tipo cadena donde se almacenarn temporalmente el contenido de cadacampo de la base de datos. Las variables Posicion1, Posicion2, Posicion3 son variables de tipo entero, donde sealmacenarn las posiciones de cada uno de los punto y coma (;) que utilizamos para separar los campos. Tresposiciones porque utilizamos solamente tres punto y coma.

    La variable Encontro como tipo entero, donde se almacenar un valor que indicar si se encontr o no labsqueda realizada. Si la variable tiene el valor cero entonces no se encontr ningn elemento y si tiene el valoruno entonces se encontr el elemento.Encontro = 0 se ha especificado para darle un valor inicial a la variable.

    - Lneas 14, 15, 16, 17:

    iNumArchivo = FreeFile()FileOpen( iNumArchivo, agenda.dat, OpenMode.Input)

    While Not EOF(iNumArchivo)

    Linea = LineInput( iNumArchivo)

    LECCION 3 Archivos con Base de datos Pgina 10

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    11/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Nada que no haya visto. Primero se abre el archivo para modo de lectura, segundo se inicia el bucle y por ultimose lee cada lnea del archivo y se almacena en la variable Linea.

    - Lneas 18, 19, 20:

    Posicion1 = InStr(1, Linea, ";", vbTextCompare)

    Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)

    Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)Posiblemente aqu encuentre muchas cosas extraas pero tratar de explicarlo con algunos ejemplos.

    Primeramente empezar definiendo la funcin de la sentencia InStr. Esta sentencia permite obtener la posicinde un carcter especificado en la cadena de caracteres, es decir, te devuelve el nmero de la posicin donde seencuentra ese carcter en la cadena de texto.

    Ejemplo:

    Carlos;Manuel;809-589-5858;Urb. Ralma, Calle #4

    Puede observar que utilic tres punto y coma (;) para separar los tres campos (nombre, apellido, telfono ydireccin). Esas posiciones de esos tres punto y coma lo almacenar en cada una de las variables ya vistasanteriormente.

    Por ejemplo, la posicin del primer punto y coma (;) lo almacenar en la variable Posicion1, al posicin delsegundo punto y coma (;) lo almacenar en la variable Posicion2 y la posicin del tercer punto y coma (;) loalmacenar en la variable Posicion3.

    En el ejemplo anterior las posiciones que se almacenaran en las variables son los siguientes:

    Posicion1 = 7

    Posicion2 = 14Posicion3 = 27

    Esto es por lo siguiente:

    C a r l o s ; M a n u e l ; 8 0 9 5 8 9 5 8 5 8 ; U r b . R a l m a , C a l l e # 41 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ..

    Cada carcter tiene una posicin en la cadena. Estas posiciones que hemos ledo sern de mucha utilidad a lahora de leer los campos de la base de datos. Eso lo veremos a continuacin.El formato de la sentencia InStres el siguiente:

    InStr(Valor_Inicial, Cadena_Principal, Cadena_a_Buscar, Tipo_de_busqueda)

    Donde:

    Valor_Inicial: Es un nmero de una posicin de algn carcter de la cadena de texto principal. Por ejemplo, si elvalor inicial es 1 entonces la bsqueda comienza desde el principio de la cadena, es decir, desde el primercarcter.

    Cadena_Principal: Representa la cadena de caracteres en donde se realizar la bsqueda.

    LECCION 3 Archivos con Base de datos Pgina 11

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    12/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Cadena_a_Buscar: Representa la cadena a buscar.

    Tipo_de_busqueda: Es una constante que representa el tipo de bsqueda. Se ha especificado la constantevbTextCompare que indica que la bsqueda que se realizar es de tipo texto.

    a) Posicion1 = InStr(1, Linea, ";", vbTextCompare)

    Esta lnea busca el primer punto y coma que aparece en el registro. La bsqueda se realiza a partir del primercarcter, por eso se especifica el nmero 1.

    b) Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)Esta lnea busca el segundo punto y coma que aparece en el registro. La bsqueda se realiza a partir de laposicin del primer punto y coma, por eso se especifica Posicion1 + 1.

    c) Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)Esta lnea busca el tercer punto y coma que aparece en el registro. La bsqueda se realiza a partir de la posicindel segundo punto y coma, por eso se especifica Posicion2 + 1.

    - Lneas 21, 22, 23 y 24:

    Campo1 = Mid(Linea, 1, Posicion1 - 1)

    Campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)

    Campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)

    Campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))

    Estas cuatro lneas de cdigo permiten leer cada uno de los campos de la base de datos.

    Antes de explicar cada lnea de cdigo, vamos a definir la sentencia Mid.

    La sentencia Mid permite copiar una cadena de caracteres de otra cadena de caracteres, llamada cadenaprincipal. En esta funcin se debe especificar la cadena de donde se har la copia que es la cadena principal. Sedebe especificar tambin la posicin en la cadena desde donde se quiere iniciar la copia y por ultimo, se debeespecificar la cantidad de caracteres a copiar.

    Su formato es:

    Mid (cadena_principal, posicin_inicial, cantidad_de_caracteres_a_copiar)

    a) Campo1 = Mid(Linea, 1, Posicion1 - 1)

    Esta lnea de cdigo lee el campo Nombre. La variable Linea es la variable que tiene el registro completo, oms bien, la cadena principal. El nmero uno, indica que la copia iniciar desde el primer carcter de la cadenaprincipal. Posicion1 1 indica la cantidad de caracteres a copiar, es decir, se copiarn todos los caractereshasta el primer punto y coma (;). Recuerde que la variable Posicion1 tiene la posicin del primer punto y coma.El menos uno -1 se especifico para que en la copia no se incluya el punto y coma.

    b) Campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)

    LECCION 3 Archivos con Base de datos Pgina 12

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    13/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Esta lnea de cdigo lee el campo Apellido. Posicion1 + 1 indica que la copia iniciar despus del primer puntoy coma (;), es decir, a partir de la posicin del primer punto y coma (;). Posicion2 1 Posicion1 indica lacantidad de caracteres a copiar. Se lo explicar grficamente:

    C a r l o s ; M a n u e l ; 8 0 9 5 8 9 5 8 5 8 ; U r b . R a l m a , C a l l e # 41 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ..

    Campo2 = Mid(Linea, 8, 14 1 7)

    El 8 es por Posicion1 + 1 que es la posicin del primer punto y coma (;).El 14 es por Posicion2 que es la posicin del segundo punto y coma (;).El -1 es para que en la copia no se incluya el primer punto y coma (;).

    -Posicion1 es la posicin del primer punto y coma que se le resta a la segunda posicin menos uno, esto le darla cantidad de caracteres del segundo campo. 14 1 7 = 6 que es la longitud del campo Apellido.

    c) Campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)Esta lnea lee el campo Telfono. Se aplica lo mismo que al campo anterior pero iniciando desde la posicin2.

    d) Campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))Esta lnea lee el campo Direccin. Se aplica lo mismo que el campo anterior pero iniciando desde la posicin3.Len(Linea) es lo nico diferente y se especifica porque no existe una ultima posicin que indique la longitud delltimo campo. Siempre tendr que utilizar esta sentencia para leer el ltimo campo, pero todo lo dems es igual.

    - Lnea 25, 26, 27, 28 y 29:

    IfUCase(Campo1) = UCase(Text1.Text)And Option1.Value = TrueThenMsgBox ("Nombre: " & Campo1 & " Apellido: " & _Campo2 & " Telfono: " & Campo3 & " Direccin: " & Campo4)Encontro = 1

    End If

    Este bloque de cdigo permite verificar si el contenido del campo nombre es igual al contenido de la caja de textopara luego mostrar el registro completo en una caja de mensaje.

    La sentencia Ucase permite convertir un texto en mayscula. Esta sentencia se utilizo para que no existaproblema de mayscula y minscula, es decir, si el usuario escribe el nombre en mayscula y en la base dedatos esta en minscula entonces habr un problema, porque no sera el mismo texto aunque dijera lo mismo,por esa razn se ha convertido el valor del campo y el valor de la caja de texto en mayscula.

    La traduccin del bloque anterior es la siguiente:

    SI el campo nombre en mayscula = al contenido de la caja de texto en mayscula Y la primera opcinesta seleccionada (la opcin bsqueda por nombre) Entonces

    Muestra (El nombre, el apellido, el telfono y la direccin)Asigna el valor uno a la variable Encontr para saber que se encontr el registro

    Finaliza el SI

    - Lneas 30, 31, 32, 33 y 34:

    IfCampo3 = Text1.TextAnd Option2.Value = True Then

    LECCION 3 Archivos con Base de datos Pgina 13

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    14/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    MsgBox ("Nombre: " & Campo1 & " Apellido: " & _Campo2 & " Telfono: " & Campo3 & " Direccin: " & Campo4)Encontro = 1

    End If

    Lo mismo que el bloque de cdigo anterior. La nica diferencia es que la comparacin se hace con el Campo3,es decir, con el campo telfono. Esto es en caso de que se seleccione la segunda opcin que es buscar portelfono.

    La traduccin del bloque anterior es:

    SI el campo nombre en mayscula = al contenido de la caja de texto en mayscula Y la primera opcinesta seleccionada (la opcin bsqueda por nombre) Entonces

    Muestra (El nombre, el apellido, el telfono y la direccin)Asigna el valor uno a la variable Encontr para saber que se encontr el registro

    Finaliza el SI

    - Lneas 35, 36, 37, 38 y 39:

    IfCampo3 = Text1.TextAnd Option2.Value = True ThenMsgBox ("Nombre: " & Campo1 & " Apellido: " & _Campo2 & " Telfono: " & Campo3 & " Direccin: " & Campo4)

    Encontro = 1

    End IfLo mismo que el bloque de cdigo anterior. La nica diferencia es que la comparacin se hace con el Campo3,es decir, con el campo telfono. Esto es en caso de que se seleccione la segunda opcin que es buscar portelfono.

    La traduccin del bloque anterior es:

    SI el campo telfono = al contenido de la caja de textoY la segunda opcin esta seleccionada (la opcinbsqueda por nombre) Entonces

    Muestra (El nombre, el apellido, el telfono y la direccin)Asigna el valor uno a la variable Encontr para saber que se encontr el registro

    Finaliza el SI

    En este bloque no se utilizo la sentencia Ucase por la razn de que los nmeros no se escriben ni en maysculani en minscula.

    - Lnea 40:

    Wend

    Esta sentencia ya la he explicado anteriormente y se utiliza para indicar el final del bucle, o bien, hasta donde serepetir el bucle.

    - Lneas 41, 42 y 43:

    LECCION 3 Archivos con Base de datos Pgina 14

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    15/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    IfEncontro = 0 ThenMsgBox ("No se ha encontrado el contacto especificado.")

    End If

    Este bloque de cdigo permite mostrar un mensaje en caso de que no se encuentre el registro especificado.Cuando el valor de la variable Encontro es igual a cero entonces no se encontr ningn registro y si el valor esuno entonces se encontr el registro.

    - Ultimas lneas:

    FileClose( iNumArchivo )

    End If

    Exit Sub

    NOarchivo:MsgBox ("La base de datos no existe.")

    En el evento Click del botn Cancelarescriba:

    Descarga el formulario.Close()

    Corra la aplicacin. Haga clic en el botnAgregar un nuevo contacto y, a continuacin, agregue un nuevocontacto.

    Cierre la ventana de Agregar un nuevo contacto, y a continuacin, haga clic en el botn Buscar contacto.

    Escriba el nombre del contacto y seleccione la opcin Buscar por nombre, y a continuacin, haga clic en elbotn Buscar.

    Ahora vamos a darle funcin a la tercera opcin del men principal (Eliminar contacto):

    Agregue un nuevo formulario y dibuje el siguiente entorno:

    LECCION 3 Archivos con Base de datos Pgina 15

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    16/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    En el evento Click del botn Buscarescriba:

    IfLen(Trim(txtBusqueda.Text)) = 0Then

    MsgBox("Debe escribir algo en la caja de texto.")txtBusqueda.Focus()

    ElseIfoptNombre.Checked = FalseAnd optNumero.Checked = FalseThenMsgBox("Debe seleccionar el tipo de bsqueda.")

    Else

    OnErrorGoTo NOarchivo Dim iNumArchivo, iNum2Archivo, iNum3Archivo AsInteger Dim Linea AsString Dim I AsInteger Dim Campo1, Campo2, Campo3, Campo4 AsString Dim Posicion1, Posicion2, Posicion3 AsInteger Dim Encontro AsInteger

    Encontro = 0

    Dim posicionRegistro AsInteger Dim LineasdelArchivo(1000000) AsString Dim NumeroLinea AsInteger Dim registroBorrar AsInteger

    Dim Respuesta AsIntegerposicionRegistro = 0NumeroLinea = 0iNumArchivo = FreeFile()iNum2Archivo = FreeFile()iNum3Archivo = FreeFile()

    FileOpen(iNumArchivo, "agenda.dat", OpenMode.Input) ' Open "C:\AGENDA\agenda.dat" For Input As #1 WhileNot EOF(iNumArchivo)

    NumeroLinea = NumeroLinea + 1 'Line Input #1, LineasdelArchivo(NumeroLinea)

    LineasdelArchivo(NumeroLinea) = LineInput(iNumArchivo) EndWhile

    'Close #1FileClose(iNumArchivo)

    FileOpen(iNum2Archivo, "agenda.dat", OpenMode.Input) 'Open "C:\AGENDA\Agenda.dat" For Input As #1 WhileNot EOF(iNum2Archivo)

    posicionRegistro = posicionRegistro + 1 'Line Input #1, Linea

    Linea = LineInput(iNum2Archivo)

    LECCION 3 Archivos con Base de datos Pgina 16

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    17/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Posicion1 = InStr(1, Linea, ";", vbTextCompare)Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)

    Campo1 = Mid(Linea, 1, Posicion1 - 1)Campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)Campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)

    Campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))

    IfUCase(Campo1) = UCase(txtBusqueda.Text) And optNombre.Checked =TrueThenregistroBorrar = posicionRegistroRespuesta = MsgBox("Desea eliminar el registro " & "'" & _

    Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)

    IfRespuesta = vbYesThen

    'SE MODIFICA EL ARREGLO ' ---------------------------------------

    For I = 1To NumeroLinea IfI = registroBorrarThen

    LineasdelArchivo(I) = "" EndIf Next I EndIf

    Encontro = Encontro + 1 EndIf

    IfUCase(Campo3) = UCase(txtBusqueda.Text) And optNumero.Checked =TrueThen

    Respuesta = MsgBox("Desea eliminar el registro " & "'" & _Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)

    IfRespuesta = vbYesThen

    'SE MODIFICA EL ARREGLO ' ---------------------------------------- For I = 1To NumeroLinea IfI = registroBorrarThen

    LineasdelArchivo(I) = "" EndIf Next I

    EndIfEncontro = Encontro + 1

    EndIf EndWhile 'Close #1

    FileClose(iNum2Archivo)

    IfEncontro = 0ThenMsgBox("No se ha encontrado el contacto especificado.")

    EndIf

    IfEncontro > 0 And Respuesta = vbYesThenFileOpen(iNum3Archivo, "TemporalArchivo.dat", OpenMode.Output)

    ' Open "C:\AGENDA\TemporalArchivo.Dat" For Output As #2 For I = 1To NumeroLinea

    LECCION 3 Archivos con Base de datos Pgina 17

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    18/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    IfLen(Trim(LineasdelArchivo(I))) > 0Then 'Print #2, LineasdelArchivo(I)

    Print(iNum2Archivo, LineasdelArchivo(I)) EndIf Next I 'Close #2

    FileClose(iNum3Archivo)

    'SE ELIMINA LA BASE DE DATOS ORIGINAL ' ------------------------------------------------------------

    Kill("agenda.dat")

    'SE LE PONE EL NOMBRE ORIGINAL A LA BASE DE DATOS TEMPORAL ' ---------------------------------------------------------------------------------------------------- 'Name("TemporalArchivo.Dat", "agenda.dat")

    FileIO.FileSystem.RenameFile("TemporalArchivo.Dat", "agenda.dat")

    MsgBox(Encontro & " registro eliminados.")

    txtBusqueda.Text = ""

    EndIf EndIf Exit SubNOarchivo:

    MsgBox("La base de datos no existe.")

    Explicacin del bloque de cdigo anterior:

    1.- Lneas desde la 1 hasta la 14:

    Es la misma codificacin que se escribi en el botn buscar del formulario Buscar contacto.

    2.- Lneas 15, 16, 17, 18, 19 y 20:

    Dim posicionRegistro As Integer Dim LineasdelArchivo(1000000)As String

    Dim NumeroLineaAs Integer Dim registroBorrarAs Integer

    posicionRegistro = 0NumeroLinea = 0

    En la lnea 15 de declara una variable llamadaposicionRegistro de tipo entero. En esta variable se almacenar elregistro actual que se esta leyendo de la base de datos, para saber cual es el nmero del registro que se esta

    leyendo.

    En la lnea 16 se declara un arreglo llamado LineasdelArchivo de tipo cadena. Este arreglo permitir almacenarun milln de registros de la base de datos en caso de que existan. Este arreglo es muy importante, ya que va apermitir almacenar temporalmente cada registro de la base de datos.

    En la lnea 17 se declara una variable llamada NumeroLinea de tipo entero. En esta variable se almacenar eltotal de registros de la base de datos, es decir, el nmero de lneas que tiene la base de datos.

    LECCION 3 Archivos con Base de datos Pgina 18

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    19/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    En la lnea 18 se declara una variable llamada RegistroBorrarde tipo entero. En esta variable se almacenar elnmero de la lnea que se va a borrar, es decir, el nmero del registro que se va a borrar de la base de datos.

    Las otras dos lneas establecen un valor inicial en las variablesposicionRegistro y NumeroLinea.

    3.- Lneas 24, 25, 26, 27, 28 y 29:

    FileOpen(iNumArchivo, "agenda.dat", OpenMode.Input) WhileNot EOF(iNumArchivo)

    NumeroLinea = NumeroLinea + 1LineasdelArchivo(NumeroLinea) = LineInput(iNumArchivo)

    EndWhileFileClose(iNumArchivo)

    Este bloque de cdigo permite almacenar en el arreglo cada uno de los registro de la base de datos. Lo niconuevo es el bloque de cdigo LineasdelArchivo(NumeroLinea) que explicar a continuacin:

    La variable NumeroLinea se incrementar cada vez que se repite el bucle. Gracias a esto es posible almacenaren posiciones diferentes del arreglo cada registro ledo de la base de datos.

    Cada vez que se repite el bucle sucede lo siguiente:LineasdelArchivo(1) = LineInput( iNumArchivo) Cuando inicia el bucleLineasdelArchivo(2) = LineInput( iNumArchivo) La segunda repeticinLineasdelArchivo(3) = LineInput( iNumArchivo) La tercera repeticinLineasdelArchivo(4) = LineInput( iNumArchivo) La cuarta repeticin

    Esto se repite hasta el fin del archivo.

    - Lneas desde la 30 a la 40:

    FileOpen(iNum2Archivo, "agenda.dat", OpenMode.Input) 'Open "C:\AGENDA\Agenda.dat" For Input As #1 WhileNot EOF(iNum2Archivo)

    posicionRegistro = posicionRegistro + 1 'Line Input #1, LineaLinea = LineInput(iNum2Archivo)

    Posicion1 = InStr(1, Linea, ";", vbTextCompare)Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)

    Campo1 = Mid(Linea, 1, Posicion1 - 1)Campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)Campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)Campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))

    Esta codificacin se explica en el botn Buscarde la ventana Buscar contacto.

    Se ha agregado una nueva lnea de cdigo posicionRegistro = posicionRegistro + 1. Esta variable seincrementa cada vez que se lee un registro. En pocas palabras esta variable almacena el nmero del registroque se lee de la base de datos.

    - Lneas desde la 41 a la 55:

    IfUCase(Campo1) = UCase(txtBusqueda.Text) And optNombre.Checked =TrueThenregistroBorrar = posicionRegistroRespuesta = MsgBox("Desea eliminar el registro " & "'" & _

    LECCION 3 Archivos con Base de datos Pgina 19

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    20/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)

    IfRespuesta = vbYesThen

    'SE MODIFICA EL ARREGLO ' ---------------------------------------

    For I = 1To NumeroLinea IfI = registroBorrarThen

    LineasdelArchivo(I) = "" EndIf Next I EndIf

    Encontro = Encontro + 1 EndIf

    En la primera lnea del bloque anterior se declara una variable donde se almacena la respuesta proporcionadapor el usuario, cuando se le hace la pregunta Desea borrar el registro?.Si el usuario hace clic en el botn YES o SI, entonces en la variable se almacena un valor constante que es

    vbYES. Si hace clic en el botn NO, entonces en la variable se almacena un valor constante que es vbNO.

    La segunda lnea del cdigo anterior se explic en el botn Buscar.

    La lnea 38 que es la tercera lnea del cdigo anterior, permite almacenar en la variable RegistroBorrarel nmerodel registro que se va a borrar, que es el registro actual ledo de la base de datos.

    Respuesta = MsgBox("Desea eliminar el registro " & "'" & _Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)

    Lo nuevo en esta lnea de cdigo es la variable Respuesta delante de la sentencia MsgBox. Esta variable permitealmacenar la respuesta proporcionada por el usuario.

    IfRespuesta = vbYes Then

    'SE MODIFICA EL ARREGLO' --------------------------------------

    ForI = 1 To NumeroLineaIf I = registroBorrar Then

    LineasdelArchivo(I) = "" End If

    Next I

    End If

    Encontro = Encontro + 1

    End If

    En este bloque se comprueba cual fue la respuesta proporcionada por el usuario, si la respuesta es si, se haceuna modificacin en el arreglo.

    La traduccin del bloque anterior es la siguiente:

    SIRespuesta = Si Entonces

    LECCION 3 Archivos con Base de datos Pgina 20

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    21/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    SE MODIFICA EL ARREGLO --------------------------------------

    ParaI = 1 Hasta El nmero de lneas que tiene el archivoSi I = Al registro a BorrarEntoncesLimpia el elemento correspondiente al valor de I en el arreglo LineasdelArchivoFin Si

    Prximo I

    Fin Si

    Incrementa la variable Encontr, para saber cuantos contactos encontr.

    Fin SI

    - Lneas desde la 56 hasta la 69

    IfUCase(Campo3) = UCase(Text1.Text)And Option2.Value = True Then

    Respuesta = MsgBox("Desea eliminar el registro " & "'" & _Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)

    IfRespuesta = vbYes Then

    'SE MODIFICA EL ARREGLO' --------------------------------------

    ForI = 1 To NumeroLinea

    If I = registroBorrar ThenLineasdelArchivo(I) = ""

    End If

    Next IEnd If

    Encontro = Encontro + 1

    End If

    La misma codificacin del bloque de cdigo anterior. La nica diferencia es que se hace cuando se selecciona laopcin bsqueda por telfono en vez de bsqueda por nombre.

    - Lneas desde la 70 hasta la 74:

    End While

    FileClose(iNum2Archivo)

    IfEncontro = 0 ThenMsgBox ("No se ha encontrado el contacto especificado.")

    End IfEste bloque de cdigo se entiende claramente. Indica primero el fin del bucle, cierra el archivo y verifica si no seencontr el contacto especificado para luego mostrar un mensaje al usuario.

    -Lneas desde la 75 hasta la 98:

    LECCION 3 Archivos con Base de datos Pgina 21

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    22/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    IfEncontro > 0 And Respuesta = vbYesThenFileOpen(iNum3Archivo, "TemporalArchivo.dat", OpenMode.Output)

    ' Open "C:\AGENDA\TemporalArchivo.Dat" For Output As #2 For I = 1To NumeroLinea

    IfLen(Trim(LineasdelArchivo(I))) > 0Then 'Print #2, LineasdelArchivo(I)

    Print(iNum2Archivo, LineasdelArchivo(I)) EndIf Next I 'Close #2

    FileClose(iNum3Archivo)

    'SE ELIMINA LA BASE DE DATOS ORIGINAL ' ------------------------------------------------------------

    Kill("agenda.dat")

    'SE LE PONE EL NOMBRE ORIGINAL A LA BASE DE DATOS TEMPORAL ' --------------------------------------------------------------- 'Name("TemporalArchivo.Dat", "agenda.dat")

    FileIO.FileSystem.RenameFile("TemporalArchivo.Dat", "agenda.dat")

    MsgBox(Encontro & " registro eliminados.")

    txtBusqueda.Text = ""

    EndIf EndIf Exit SubNOarchivo:

    MsgBox("La base de datos no existe.")

    La primera lnea del bloque anterior permite verificar si se ha encontrado algn elemento para borrar y verificatambin si el usuario proporciona la respuesta Si, es decir, si el desea que el registro sea borrado. Es lgico que

    en la bsqueda se puede encontrar el contacto, pero esto no es suficiente, tambin se requiere saber si elusuario quiere borrar el contacto de la base de datos. Por tal razn se verifica ambas cosas.

    'SE CREA UN ARCHIVO TEMPORALFileOpen(iNum3Archivo, "TemporalArchivo.dat", OpenMode.Output)

    ForI = 1 To NumeroLinea - Encontro Print #2, LineasdelArchivo(I) Next I

    Close #2Este bloque de cdigo crea un archivo temporal con los datos que contiene el arreglo. Es muy importante crearun archivo temporal con los datos de la base de datos original porque no trabajaramos directamente con la basede datos y se envidaran muchos problemas futuros.El cdigo se entiende claramente: Se abre el archivo para modo de escritura, se inicia un bucle que se repetirhasta el total de lneas del archivo menos el total de registros borrados, se almacena cada uno de los elementosdel arreglo y se cierra el archivo.

    Kill "agenda.dat"

    Esta lnea de cdigo elimina la base de datos general, pero esto no importa, porque ya tenemos una copia de labase de datos original.

    LECCION 3 Archivos con Base de datos Pgina 22

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    23/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    FileIO.FileSystem.RenameFile("TemporalArchivo.Dat", "agenda.dat")Esta lnea de cdigo cambia el nombre de la base de datos temporal y le pone el nombre de la base de datosoriginal. Esto se debe de entender claramente.

    MsgBox (Encontro & " registro eliminados.")txtBusqueda.Text = ""

    La primera muestra el total de registros eliminados y la segunda limpia la caja de texto donde se escribi elnombre o el telfono del contacto. Las dems lneas las hemos visto anteriormente.

    En el evento Click del botn Cancelarescriba:

    Close()

    En el evento Click del tercer botn del men Principal de nuestra aplicacin escriba:

    Form3.Show()

    Corra la aplicacin.

    Haga clic en el botn Eliminar contacto, introduzca el nombre del contacto que desea eliminar y a continuacin,haga clic en el botn Buscar. Si el contacto no existe agrguelo.

    Ahora daremos funcin a la cuarta opcin del men principal, al botn Reporte.

    Agregue un nuevo formulario.

    Antes de proseguir debemos agregar un nuevo control a la barra de controles. Este control se llama ListViewque estudiamos en el captulo anterior.

    Haga clic derecho sobre la barra de controles y seleccione la opcin Componentes (Components).

    En el cuadro de dilogo Componente, busque y active el componente Microsoft Windows Common Controls yhaga clic en el botnAceptar.

    Dibuje un control ListView en el formulario y dos botones de comando, tal y como se muestra en la siguienteimagen:

    LECCION 3 Archivos con Base de datos Pgina 23

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    24/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    Haga un solo clic sobre el control ListView y busque la propiedad View. Establezca el valor3 lvwReport. Estevalor permitir mostrar los registros como un reporte.

    El bloque de cdigo anterior permite agregar los encabezados al control ListView. Los encabezados sern loscampos de la base de datos.

    Dim dato AsListViewItem Dim iNumArchivo AsInteger OnErrorGoTo Noarchivo Dim Linea AsString Dim campo1, campo2, campo3, campo4 AsString Dim Posicion1, Posicion2, Posicion3 AsInteger

    Dim column1 AsNew System.Windows.Forms.ColumnHeader Dim column2 AsNew System.Windows.Forms.ColumnHeader

    Dim column3 AsNew System.Windows.Forms.ColumnHeader Dim column4 AsNew System.Windows.Forms.ColumnHeader

    column1.Text = "Nombre"column2.Text = "Apellido"column3.Text = "Domicilio"column4.Text = "Telfono"

    column1.Width = 80column2.Width = 80column3.Width = 80column4.Width = 140

    'siempre es importante asegurarse que no existan'columnas y para eso es mejor borrarlas antes de'agregar las nuevas columnasListView1.Columns.Clear()

    LECCION 3 Archivos con Base de datos Pgina 24

  • 7/30/2019 Leccion 3 - Archivos con Bases de Datos

    25/25

    [VISUAL BASIC.NET CON BASE DE DATOS] IDSYSTEMS 2012

    'Ahora agregamos las columnas nuevasListView1.Columns.Add(column1)ListView1.Columns.Add(column2)ListView1.Columns.Add(column3)ListView1.Columns.Add(column4)

    ListView1.View = View.Details

    Dim Encontro AsIntegerEncontro = 0iNumArchivo = FreeFile()FileOpen(iNumArchivo, "agenda.dat", OpenMode.Input)

    WhileNot EOF(iNumArchivo)Linea = LineInput(iNumArchivo)

    IfLen(Trim(Linea)) > 0ThenPosicion1 = InStr(1, Linea, ";", vbTextCompare)Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)campo1 = Mid(Linea, 1, Posicion1 - 1)campo2 = Mid(Linea, Posicion1 + 1, Posicion2 - 1 - Posicion1)campo3 = Mid(Linea, Posicion2 + 1, Posicion3 - 1 - Posicion2)campo4 = Mid(Linea, Posicion3 + 1, Len(Linea))dato = NewListViewItem(campo1)dato.SubItems.Add(campo2)dato.SubItems.Add(campo3)dato.SubItems.Add(campo4)ListView1.Items.Add(dato)Encontro = 1

    EndIf EndWhile 'Close #1

    FileClose(iNumArchivo)

    IfEncontro = 0ThenMsgBox("La base de datos esta vaca") EndIf

    Exit SubNoarchivo:

    MsgBox("La base de datos no se encuentra.")

    Nada nuevo en el bloque de cdigo anterior.

    En el evento Click del botn Cerrarescriba:

    Close()

    Corra la aplicacin.

    Haga clic en el botn Reporte. Si hay datos se mostrarn de forma organizada en el control ListView.

    Detenga la aplicacin y gurdela en la carpeta AGENDA.

    LECCION 3 A hi B d d t P i 25