Your SlideShare is downloading. ×
Imports system
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Imports system

1,147
views

Published on


0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,147
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
127
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Imports System.IOPublic Class Problemario Structure datos Dim numtra As Integer Dim nombre As String Dim dep As String Dim salario As Single End Structure Dim archivo As String = "" Dim vdatos(1000) As datos Dim registro As Integer = 0 total de registros Dim registronow As Integer = 0 registro actual Dim banmodificar As Integer = 0 Private Sub AbrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles AbrirToolStripMenuItem.Click Dim dlgopen As New OpenFileDialog dlgopen.Filter = "Word Documents|*.doc|Excel Worksheets|*.xls|PowerPointPresentations|*.ppt" & "|Office Files|*.doc;*.xls;*.ppt" & "|All Files|*.*" dlgopen.Title = "Select a Cursor File" If dlgopen.ShowDialog() = Windows.Forms.DialogResult.OK Then creamos flujo Dim flujoopen As New FileStream(dlgopen.FileName, FileMode.Open,FileAccess.Read) Dim leerfile As New BinaryReader(flujoopen) archivo = dlgopen.FileName leemos If leerfile.PeekChar <> -1 Then si si existe texto obtenemos total de registros registro = CType(Math.Ceiling(flujoopen.Length / 70), Integer) Dim a As Integer For a = 0 To registro - 1 leerfile.BaseStream.Seek(70 * a, SeekOrigin.Begin) 70 bytesde largo por cada registro vdatos(a).numtra = leerfile.ReadInt32.ToString vdatos(a).nombre = leerfile.ReadString.ToString vdatos(a).dep = leerfile.ReadString.ToString vdatos(a).salario = leerfile.ReadSingle.ToString Next Nuevo.Enabled = True verregistro(0) habilitamos menus de navegacion respecto a la posicion actual If registro > 1 Then si hay mas de un registro If registronow = registro - 1 Then si esta en la ultimaposicion Anterior.Enabled = True Primero.Enabled = True ElseIf registronow = 0 Then si esta en la primer posicion Ultimo.Enabled = True Siguiente.Enabled = True Else si cae aki es porke es un registro de en medio Anterior.Enabled = True Primero.Enabled = True Ultimo.Enabled = True Siguiente.Enabled = True
  • 2. End If End If Else Nuevo.Enabled = True sblabel.Text = "Sin registros" TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" registro = 0 inicializamos los registros End If GuardarToolStripMenuItem.Enabled = True leerfile.Close() flujoopen.Close() ponemos nombre de archivo Label1.Text = "Has abierto el archivo " +Path.GetFileName(dlgopen.FileName) TextBox1.Focus() End If Siguiente.Enabled = True Ultimo.Enabled = True Modificar.Enabled = True Eliminar.Enabled = True CrearToolStripMenuItem.Enabled = False End Sub Sub verregistro(ByVal numreg) esta funcion nos desplaza entre los registros enmemoria registronow = numreg TextBox1.Text = vdatos(registronow).numtra TextBox2.Text = vdatos(registronow).nombre TextBox3.Text = vdatos(registronow).dep TextBox4.Text = vdatos(registronow).salario sblabel.Text = "Registro " & registronow + 1 & "/" & registro TextBox1.Focus() End Sub Private Sub GuardarToolStripMenuItem_Click(ByVal sender As System.Object, ByVale As System.EventArgs) Handles GuardarToolStripMenuItem.Click If registro > 0 Then Dim flujosave As New FileStream(archivo, FileMode.Create,FileAccess.Write) Dim escribirfile As New BinaryWriter(flujosave) Dim a As Integer For a = 0 To registro - 1 escribirfile.BaseStream.Seek(70 * a, SeekOrigin.Begin) 70 bytesde largo por cada registro escribirfile.Write(CType(vdatos(a).numtra, Integer)) escribirfile.Write(CType(vdatos(a).nombre, String)) escribirfile.Write(CType(vdatos(a).dep, String)) escribirfile.Write(CType(vdatos(a).salario, Single)) Next escribirfile.Close() flujosave.Close() End If End Sub
  • 3. Private Sub SalirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles SalirToolStripMenuItem.Click Application.Exit() End Sub Private Sub Nuevo_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Nuevo.Click habilitamos los textboxt TextBox1.Enabled = True TextBox2.Enabled = True TextBox3.Enabled = True TextBox4.Enabled = True TextBox1.Focus() limpiamos los textboxt TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox1.Focus() habilitamos botones btnguardar.Visible = True btncancelar.Visible = True deshabilitamos menus Modificar.Enabled = False Eliminar.Enabled = False Nuevo.Enabled = False Primero.Enabled = False Siguiente.Enabled = False Anterior.Enabled = False Ultimo.Enabled = False End Sub Private Sub btnguardar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btnguardar.Click If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" OrTextBox4.Text = "" Then MessageBox.Show("No se han llenado todos los campos", "Cuidado",MessageBoxButtons.OK, MessageBoxIcon.Warning) Else If banmodificar = 1 Then si estaba modificando entonces guardamos en laposicion que estaba banmodificar = 0 guardamos en vector pero en la posicion actual vdatos(registronow).numtra = CType(TextBox1.Text, Integer) vdatos(registronow).nombre = TextBox2.Text vdatos(registronow).dep = TextBox3.Text vdatos(registronow).salario = CType(TextBox4.Text, Single) Else significa que esta guardando un nuevo registro guardamos en vector vdatos(registro).numtra = CType(TextBox1.Text, Integer) vdatos(registro).nombre = TextBox2.Text vdatos(registro).dep = TextBox3.Text vdatos(registro).salario = CType(TextBox4.Text, Single)
  • 4. registronow = registro el registro actual sera el recientementecreado registro += 1 End If btncancelar.Visible = False btnguardar.Visible = False TextBox1.Focus() sblabel.Text = "Registro " & registronow + 1 & "/" & registro habilitamos menus de navegacion respecto a la posicion actual If registro > 1 Then si hay mas de un registro If registronow = registro - 1 Then si esta en la ultima posicion Anterior.Enabled = True Primero.Enabled = True ElseIf registronow = 0 Then si esta en la primer posicion Ultimo.Enabled = True Siguiente.Enabled = True Else si cae aki es porke es un registro de en medio Anterior.Enabled = True Primero.Enabled = True Ultimo.Enabled = True Siguiente.Enabled = True End If End If habilitamos botones de edicion Modificar.Enabled = True Eliminar.Enabled = True Nuevo.Enabled = True bloqueamos los text hasta agregar uno nuevo TextBox1.Enabled = False TextBox2.Enabled = False TextBox3.Enabled = False TextBox4.Enabled = False End If End Sub Private Sub btncancelar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles btncancelar.Click btncancelar.Visible = False btnguardar.Visible = False Nuevo.Enabled = True If banmodificar = 1 Then si estaba modificando pero cancelo banmodificar = 0 verregistro(registronow) Else TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" End If If registro > 0 Then si minimo existe un registro Modificar.Enabled = True Eliminar.Enabled = True End If TextBox1.Enabled = False
  • 5. TextBox2.Enabled = False TextBox3.Enabled = False TextBox4.Enabled = False End Sub Private Sub Primero_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Primero.Click verregistro(0) si le dio primero, significa que a fuerzas minimo hay 2 registros Primero.Enabled = False Anterior.Enabled = False Siguiente.Enabled = True Ultimo.Enabled = True End Sub Private Sub Anterior_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Anterior.Click verregistro(registronow - 1) despues de mandar llamar este procedimiento,el valor de registronow cambia If registronow = 0 Then si ya llego al principio Primero.Enabled = False Anterior.Enabled = False Else Primero.Enabled = True Anterior.Enabled = True End If si presionó anterior, significa que minimo hay 2 registros, entonces comoya te cambio a uno anterior ps habilitamos sin preguntar, "siguiente" y "ultimo" Siguiente.Enabled = True Ultimo.Enabled = True End Sub Private Sub Siguiente_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Siguiente.Click verregistro(registronow + 1) despues de mandar llamar este procedimiento,el valor de registronow cambia If registronow = registro - 1 Then si ya llego al ultimo registro Ultimo.Enabled = False Siguiente.Enabled = False Else Ultimo.Enabled = True Siguiente.Enabled = True End If si presionno siguiente signifiica que mminimo hay 2 regsitros, entonceshabilitamos sin preguntar, "anterior" y "primero" Primero.Enabled = True Anterior.Enabled = True End Sub Private Sub Ultimo_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Ultimo.Click verregistro(registro - 1) si presiono el ultimo signifiica que mminimo hay 2 registros asi quehabilitamos "anterior" y "primero" sin preguntar Anterior.Enabled = True Primero.Enabled = True
  • 6. Ultimo.Enabled = False Siguiente.Enabled = False End Sub Private Sub Modificar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Modificar.Click btnguardar.Visible = True btncancelar.Visible = True banmodificar = 1 habilitamos bandera que nos dice que esta modificando unregistro TextBox1.Enabled = True TextBox2.Enabled = True TextBox3.Enabled = True TextBox4.Enabled = True TextBox1.Focus() deshabilitamos menus Modificar.Enabled = False Eliminar.Enabled = False Nuevo.Enabled = False Primero.Enabled = False Siguiente.Enabled = False Anterior.Enabled = False Ultimo.Enabled = False TextBox1.Focus() End Sub Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles Eliminar.Click If MessageBox.Show("¿Esta seguro que desea eliminar este registro?","Cuidado", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) =Windows.Forms.DialogResult.Yes Then vdatos(registronow).numtra = CType(0, Integer) vdatos(registronow).nombre = "" vdatos(registronow).dep = "" vdatos(registronow).salario = CType(0, Single) If registro = 1 Then si el registro eliminado era el uniko ke habia Eliminar.Enabled = False Modificar.Enabled = False Primero.Enabled = False Siguiente.Enabled = False Anterior.Enabled = False Ultimo.Enabled = False limpiamos cuadros de text TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" sblabel.Text = "Sin registros" registro = 0 registronow = 0 Else If registronow <> registro - 1 Then si cae aki es porke habia porlo menos dos registros y el eliminado no fue el ultimo recorremos vector
  • 7. Dim a As Integer For a = registronow To registro - 2 vdatos(a).numtra = vdatos(a + 1).numtra vdatos(a).nombre = vdatos(a + 1).nombre vdatos(a).dep = vdatos(a + 1).dep vdatos(a).salario = vdatos(a + 1).salario Next verregistro(registronow) Else registronow -= 1 verregistro(registronow) End If decrementamos contadores registro -= 1 sblabel.Text = "Registro " & registronow + 1 & "/" & registro End If habilitamos menus de navegacion respecto a la posicion actual If registro > 1 Then si hay mas de un registro If registronow = registro - 1 Then si esta en la ultima posicion Anterior.Enabled = True Primero.Enabled = True ElseIf registronow = 0 Then si esta en la primer posicion Ultimo.Enabled = True Siguiente.Enabled = True Else si cae aki es porke es un registro de en medio Anterior.Enabled = True Primero.Enabled = True Ultimo.Enabled = True Siguiente.Enabled = True End If End If End If End Sub Private Sub CrearToolStripMenuItem_Click(ByVal sender As System.Object, ByVal eAs System.EventArgs) Handles CrearToolStripMenuItem.Click Dim dlgopen As New SaveFileDialog dlgopen.Filter = "Word Documents|*.doc|Excel Worksheets|*.xls|PowerPointPresentations|*.ppt" & "|Office Files|*.doc;*.xls;*.ppt" & "|All Files|*.*" dlgopen.CheckFileExists = False If dlgopen.ShowDialog() = Windows.Forms.DialogResult.OK Then creamos flujo Dim flujoopen As New FileStream(dlgopen.FileName, FileMode.OpenOrCreate,FileAccess.ReadWrite) Dim leerfile As New BinaryReader(flujoopen) archivo = dlgopen.FileName Nuevo.Enabled = True sblabel.Text = "Sin registros" GuardarToolStripMenuItem.Enabled = True ponemos nombre de archivo Label1.Text = "Has creado el archivo " +Path.GetFileName(dlgopen.FileName) TextBox1.Focus() AbrirToolStripMenuItem.Enabled = False End If
  • 8. End Sub Private Sub EmpezarNuevamenteToolStripMenuItem_Click(ByVal sender AsSystem.Object, ByVal e As System.EventArgs) HandlesEmpezarNuevamenteToolStripMenuItem.Click//mensaje que se manda para saber si ya guardo los datos IfMessageBox.Show("Se reiniciara nuevamente el programa y se podran perder los datossi no se guardo. Aun quiere continuar", "Cuidado", MessageBoxButtons.YesNo,MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then Application.Restart()//reiniciamos el programa End If End Sub Private Sub Problemario_Load(ByVal sender As System.Object, ByVal e AsSystem.EventArgs) Handles MyBase.Load//se le pone el limite de caracteres que puede aceptar el textboxt TextBox1.MaxLength = 10 TextBox3.MaxLength = 10 TextBox4.MaxLength = 10 End SubEnd Class