Me ayudarian a mejorar este codigo¿?

Iniciado por Murd3r3r 0f daT4, 5 Octubre 2009, 06:06 AM

0 Miembros y 2 Visitantes están viendo este tema.

Murd3r3r 0f daT4

Bueno ando trabajando en un proyecto para mi escuela, la idea es que hay un centro de computo con 50 PCs, la primera parte del proyecto esta enfocada a la comodidad de los alumnos.

Actualmente llegan, tienen que preguntar a la encargada si hay PCs disponibles y se anotan en un cuaderno, la idea es que haya una PC donde llegen y se muestren las PCs disponibles, hagan doble click en la que se quieren registrar, llenen un formulario. Al hacer click en Registar! se comprobará que sus apellidos y nombre coincidan con el de su N° de cuenta de ser así registra el N° de cuenta, N° de PC y hora en que se registro.

Bueno aqui pongo los codigos:

UPDATE 1: Ya empece a manejar matrices, pero aun no funciona como debería =S

principal.frm(Form1):
Código (vb) [Seleccionar]
Public statuspc As Integer
Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "Error"
End
End If
End Sub
Private Sub pc_Click(Index As Integer)
statuspc = i
i = statuspc
If Label(i).Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, está ya esta ocupada.", vbCritical, "Error"
End If
End Sub


registro.frm(Form2):
Código (vb) [Seleccionar]
Private Sub Form_Load()
Command1.Enabled = False
End Sub
Private Sub datos_Change(Index As Integer)
If datos(Index).Text <> "" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End Sub
Private Sub Command1_Click()
MsgBox "Registrado. Disfruta tu estancia", vbInformation, "Registro exitoso"

Call Ocuparpc

'Registro BD

Call Limpiardatos

Unload registro
principal.Show
End Sub
Private Sub Command2_Click()
Call Limpiardatos

Unload registro
principal.Show
End Sub


funciones.bas(module1):
Código (vb) [Seleccionar]
Public Sub Limpiardatos()
registro.datos(Index).Text = ""
End Sub
Function Bloquearpc()

End Function
Function Ocuparpc()
For i = 0 To principal.Label(Index)
principal.Label(i).Caption = "NO DISPONIBLE"
Next i
End Function



Como se podran cuenta soy muy nuevo en visual basic :(, aparte aquí les dejo el source:
http://rapidshare.com/files/291290861/Centro_de_computo.rar ----> Actualizado al Update 1 ;)

De ante mano, mil gracias por su ayuda y consejos!!
"Nothing last forever...."

BlackZeroX


Para yo los pics del principal.frm(Form1)  usaria una matriz de controles.
Yo en tu lugar en el    registro.frm(Form2)    usaria una clase para subclasificar todo esos eventos  _Change o mas facil aun una matriz de controles.
Quitaria los Sleep()  que de nada sirven solo estan de màs hasta donde puedo ver.

Solo te digo lo que veo a simple vista de lo que posteaste.

un saludo

Dulces Lunas!¡.
The Dark Shadow is my passion.

Murd3r3r 0f daT4

Cita de: ░▒▓BlackZeroҖ▓▒░ en  5 Octubre 2009, 13:50 PM

Para yo los pics del principal.frm(Form1)  usaria una matriz de controles.
Yo en tu lugar en el    registro.frm(Form2)    usaria una clase para subclasificar todo esos eventos  _Change o mas facil aun una matriz de controles.
Quitaria los Sleep()  que de nada sirven solo estan de màs hasta donde puedo ver.

Solo te digo lo que veo a simple vista de lo que posteaste.

un saludo

Dulces Lunas!¡.

Yo tomaré en cuenta cada idea, solo que las tengo que investigar porque soy muy newbie en, programación y no entendí que quisiste decir!
"Nothing last forever...."

agus0

Cita de: Murd3r3r 0f daT4 en  5 Octubre 2009, 06:06 AM
Bueno ando trabajando en un proyecto para mi escuela, la idea es que hay un centro de computo con 50 PCs, la primera parte del proyecto esta enfocada a la comodidad de los alumnos.

Actualmente llegan, tienen que preguntar a la encargada si hay PCs disponibles y se anotan en un cuaderno, la idea es que haya una PC donde llegen y se muestren las PCs disponibles, hagan doble click en la que se quieren registrar, llenen un formulario. Al hacer click en Registar! se comprobará que sus apellidos y nombre coincidan con el de su N° de cuenta de ser así registra el N° de cuenta, N° de PC y hora en que se registro.

Bueno aqui pongo los codigos:

principal.frm(Form1):
Código (vb) [Seleccionar]
Public statuspc As Integer

Private Sub Form_Load()
Dim running As Integer
running = App.PrevInstance
If running <> 0 Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "News"
End
End If
End Sub
Private Sub pc1_Click()
statuspc = 1
If Label1.Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, esta ya esta ocupada =(", vbCritical, "Error"
End If
End Sub
Private Sub pc2_Click()
statuspc = 2
If Label2.Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, esta ya esta ocupada =(", vbCritical, "Error"
End If
End Sub
Private Sub pc3_Click()
statuspc = 3
If Label3.Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, esta ya esta ocupada =(", vbCritical, "Error"
End If
End Sub
Private Sub pc4_Click()
statuspc = 4
If Label4.Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, esta ya esta ocupada =(", vbCritical, "Error"
End If
End Sub
Private Sub pc5_Click()
statuspc = 5
If Label5.Caption = "DISPONIBLE" Then
Unload principal
registro.Show
Else
MsgBox "Elige otra computadora, esta ya esta ocupada =(", vbCritical, "Error"
End If
End Sub


registro.frm(Form2):
Código (vb) [Seleccionar]
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
Command1.Enabled = False
End Sub
Private Sub apellidop_Change()
If apellidop.Text <> "" And apellidom.Text <> "" And nombre.Text <> "" And cuenta.Text <> "" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End Sub
Private Sub apellidom_Change()
If apellidop.Text <> "" And apellidom.Text <> "" And nombre.Text <> "" And cuenta.Text <> "" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End Sub
Private Sub nombre_Change()
If apellidop.Text <> "" And apellidom.Text <> "" And nombre.Text <> "" And cuenta.Text <> "" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End Sub
Private Sub cuenta_Change()
If apellidop.Text <> "" And apellidom.Text <> "" And nombre.Text <> "" And cuenta.Text <> "" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End Sub
Private Sub Command1_Click()
MsgBox "Registrado. Disfruta tu estancia", vbInformation, "Registro exitoso"
Sleep 250
Call Ocuparpc
Sleep 250
'Registro BD
Sleep 250
apellidop.Text = ""
apellidom.Text = ""
nombre.Text = ""
cuenta.Text = ""
Sleep 250
Unload registro
principal.Show
End Sub
Private Sub Command2_Click()
apellidop.Text = ""
apellidom.Text = ""
nombre.Text = ""
cuenta.Text = ""
Sleep 250
Unload registro
principal.Show
End Sub


funciones.bas(module1):
Código (vb) [Seleccionar]
Function Limpiaregistro()

End Function
Function Bloquearpc()

End Function
Function Ocuparpc()
Select Case principal.statuspc
Case 1
principal.Label1.Caption = "NO DISPONIBLE"
Case 2
principal.Label2.Caption = "NO DISPONIBLE"
Case 3
principal.Label3.Caption = "NO DISPONIBLE"
Case 4
principal.Label4.Caption = "NO DISPONIBLE"
Case 5
principal.Label5.Caption = "NO DISPONIBLE"
End Select
End Function


Como se podran cuenta soy muy nuevo en visual basic :(, aparte aquí les dejo el source:
http://rapidshare.com/files/288825115/Centro_de_computo.rar

De ante mano, mil gracias por su ayuda y consejos!!


Yo le cambiaria alguinas cosas. pero me quedo una duda

vos sos el que publico de como cambiar a "NO DISPONIBLE" en www.forosdelweb.com por que ese cdigo es muy similar (Una parte) a la que le aonsegue a un usuario de FDW jaja

agus0

La verdad mire solo las primeras lineas por que ahora me tengo que ir a estudiar a simple vista yo reemplazaria

esto

Private Sub Form_Load()
Dim running As Integer
running = App.PrevInstance
If running <> 0 Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "News"
End
End If
End Sub


por esto que es lo mismo pero mas corto;


Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "News"
End
End If
End Sub


Ba solo ahorras 2 lineas pero me parece innecesari crear esa variable...

seba123neo

Hola, ese codigo se puede achicar un 80 %, creando matrices de controles y funciones, si no sabes lo que es eso, entonces ya no es parte nuestra enseñar eso que seria lo basico, te vas a tener que leer inevitablemente un manual de visual basic.

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Murd3r3r 0f daT4

Cita de: agus0 en  5 Octubre 2009, 21:05 PM
La verdad mire solo las primeras lineas por que ahora me tengo que ir a estudiar a simple vista yo reemplazaria

esto

Private Sub Form_Load()
Dim running As Integer
running = App.PrevInstance
If running <> 0 Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "News"
End
End If
End Sub


por esto que es lo mismo pero mas corto;


Private Sub Form_Load()
If App.PrevInstance = True Then
MsgBox "El Programa ya se esta ejecutando", 0 + 48, "News"
End
End If
End Sub


Ba solo ahorras 2 lineas pero me parece innecesari crear esa variable...

Ok, tienes toda la razón!

@agus0

Si ese era yo!!

Cita de: seba123neo en  6 Octubre 2009, 02:00 AM
Hola, ese codigo se puede achicar un 80 %, creando matrices de controles y funciones, si no sabes lo que es eso, entonces ya no es parte nuestra enseñar eso que seria lo basico, te vas a tener que leer inevitablemente un manual de visual basic.

saludos.
Hoy empece a leer sobre matrices!! Vere que más hago!
"Nothing last forever...."

Murd3r3r 0f daT4

#7
Ya estudiando y aplicando matrices ya mejoró, pero tengo una duda como quedaría esta parte sobre todo: principal.Label(1 To 48).Caption = "NO DISPONIBLE"

El codigo ya me quedo así:

Código (vb) [Seleccionar]

Function Ocuparpc()
   For i = 0 To statuspc(48)
       If i = statuspc(48) Then
           principal.Label(1 To 48).Caption = "NO DISPONIBLE"
       End If
   Next i
End Function


Esa aprte que comente arriba no funciona ni idea de como hacerla =S
"Nothing last forever...."

BlackZeroX

#8
Antes que nada debes considerar 49 Estados ya que de 0-48 hay 49

Una recomendacion statuspc() ponlo en estado boleano o tipo boolean

Código (vb) [Seleccionar]

dim statuspc(48) as boolean
public sub Ocuparpc()
   For i = 0 To ubound(statuspc)
       If statuspc(i)  Then
           principal.Label(i).Caption = "DISPONIBLE"
       else
           principal.Label(i).Caption = "NO DISPONIBLE"
       End If
   Next i
End sub


Otra forma de IF(), es lo mismo que arriba

Código (vb) [Seleccionar]

dim statuspc(48) as boolean
public sub Ocuparpc()
   For i = 0 To ubound(statuspc)
       principal.Label(i).Caption = iif(statuspc(i),"DISPONIBLE","NO DISPONIBLE")
   Next i
End sub


P.D.: Usa function para procesar informacion y devolver un valor y Sub para realizar procesos sin devolver ningun valor por medio del mismo.
Usa private, public, friend segùn se requiera, pero declaralos, estos definen el accceso a dichos procesos/funciones desde exterior, se comprende que si no son declarados seria private por default pero por prioridad seria mejor derarlos.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Murd3r3r 0f daT4

Cita de: ░▒▓BlackZeroҖ▓▒░ en  6 Octubre 2009, 05:58 AM
Antes que nada debes considerar 49 Estados ya que de 0-48 hay 49

Una recomendacion statuspc() ponlo en estado boleano o tipo boolean

Código (vb) [Seleccionar]

dim statuspc(48) as boolean
public sub Ocuparpc()
    For i = 0 To ubound(statuspc)
        If statuspc(48)  Then
            principal.Label(i).Caption = "DISPONIBLE"
        else
            principal.Label(i).Caption = "NO DISPONIBLE"
        End If
    Next i
End sub


Otra forma de IF(), es lo mismo que arriba

Código (vb) [Seleccionar]

dim statuspc(48) as boolean
public sub Ocuparpc()
    For i = 0 To ubound(statuspc)
        principal.Label(i).Caption = iif(statuspc(48),"DISPONIBLE","NO DISPONIBLE")
    Next i
End sub


P.D.: Usa function para procesar informacion y devolver un valor y Sub para realizar procesos sin devolver ningun valor por medio del mismo.
Usa private, public, friend segùn se requiera, pero declaralos, estos definen el accceso a dichos procesos/funciones desde exterior, se comprende que si no son declarados seria private por default pero por prioridad seria mejor derarlos.

Dulces Lunas!¡.

Pues mira que use varios codigos así pero siempre me da el mismo error =S "Method or data member not found" y me marca esta zona: .Label
"Nothing last forever...."