Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ayuda tengo que rendir y no me anda mi programa =(

Estas en el tema de Ayuda tengo que rendir y no me anda mi programa =( en el foro de Visual Basic clásico en Foros del Web. Que raro ahora guarda bien ; pero el error me salta ahora en la busqueda para saber si ( EL ALUMNO YA EXISTE ) Esta ...
  #1 (permalink)  
Antiguo 11/11/2009, 09:26
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Ayuda tengo que rendir y no me anda mi programa =(

Que raro ahora guarda bien ; pero el error me salta ahora en la busqueda para saber si ( EL ALUMNO YA EXISTE )

Esta es mi busqueda:

Código:
Private Sub Form_busca()                                        'Busqueda
Dim c As Integer, b As Byte, x As Integer
     c = 1
While b = 0 And Not EOF(1)
    Get #1, c, regins
    If regins.Nro_ins = c Then
        If regins.doc = Val(txtdni) Then
            b = 1
            c = regesta
            x = MsgBox("Nro De Inscripción Existente", vbCritical, "Error D.N.I.")
            txtdni.SetFocus
            Else
          c = c + 1
        End If
    End If

Wend

End Sub
El error( nombre o número de archivo incorrecto) me sale en esta linea --> While b = 0 And Not EOF(1)

Última edición por gohanjaja; 11/11/2009 a las 14:52
  #2 (permalink)  
Antiguo 11/11/2009, 09:29
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

¿Cuál es la línea que te marca error? ¿De dónde sale el valor de la variable "regesta"?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/11/2009, 10:01
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Que raro ahora guarda bien ; pero el error me salta ahora en la busqueda para saber si ( EL ALUMNO YA EXISTE )

Esta es mi busqueda:

Código:
Private Sub Form_busca()                                        'Busqueda
Dim c As Integer, b As Byte, x As Integer
     c = 1
While b = 0 And Not EOF(1)
    Get #1, c, regins
    If regins.Nro_ins = c Then
        If regins.doc = Val(txtdni) Then
            b = 1
            c = regesta
            x = MsgBox("Nro De Inscripción Existente", vbCritical, "Error D.N.I.")
            txtdni.SetFocus
            Else
          c = c + 1
        End If
    End If

Wend

End Sub
El error( nombre o número de archivo incorrecto) me sale en esta linea --> While b = 0 And Not EOF(1)

Gracias david por la buena onda y por ayudarme...pero ahora el error me salta ahi :(

Última edición por gohanjaja; 11/11/2009 a las 10:10
  #4 (permalink)  
Antiguo 11/11/2009, 14:53
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

nadie?? =(
  #5 (permalink)  
Antiguo 11/11/2009, 15:01
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Imagino que el fichero 1 no está abierto o ha sido cerrado antes de llegar ahí la ejecución.
  #6 (permalink)  
Antiguo 11/11/2009, 15:07
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Cita:
Iniciado por pkj Ver Mensaje
Imagino que el fichero 1 no está abierto o ha sido cerrado antes de llegar ahí la ejecución.
Tengo un boton de GUARDAR Configurado de la siguiente manera:

Código:
Private Sub CmdGuardar_Click()

regins.doc = Val(txtdni)
regins.Año = Val(txtaño)
regins.Tipo = CBOEstado.Text
regins.Ape = Val(txtape)
regins.Nom = txtnom.Text
regins.Estci = CBOEstado.Text
regins.FNac = Val(txtfecnac)
regins.LNac = Val(txtlnac)
regins.Dom = Val(txtdom)
regins.Tel = Val(txttel)
regins.Tit = Val(txttit)
regins.Establ = Val(txtest)
regins.Hora = Val(txthora)
regadeu.Mat1 = Val(txtmat1)
regadeu.Mat2 = Val(txtmat2)
regadeu.Mat3 = Val(txtmat3)
regadeu.Mat4 = Val(txtmat4)
CmdNuevo.SetFocus
tot = FileLen("INSCRIP") / Len(regins)
Dim b As Byte, p As Integer
If b = 0 Then
p = tot
Else
p = regesta
End If

            regins.Nro_ins = tot + 1
            txtni.Text = regins.Nro_ins
            
            Put #1, tot + 1, regins
            txtni.Visible = True
            Put #2, tot + 1, regadeu
            Close #1
            Close #2
            
            
End Sub
Donde puse el Close #1 , y Close #2 , esta bien cerrarlo ahi?



Dejo mi trabajo asi me lo chekean porfa estoy desesperado , y no quiero desaprobar lenguaje 1

rapidshare.com/files/305658613/INSCRIPCION_DE_ALUMNOS.rar.html

Última edición por gohanjaja; 11/11/2009 a las 15:13
  #7 (permalink)  
Antiguo 11/11/2009, 15:12
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Después de guardar un registro en los ficheros los cierra, de modo que para la siguiente operación no puedes acceder a ellos si no los abres de nuevo.
  #8 (permalink)  
Antiguo 11/11/2009, 15:38
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Cita:
Iniciado por pkj Ver Mensaje
Después de guardar un registro en los ficheros los cierra, de modo que para la siguiente operación no puedes acceder a ellos si no los abres de nuevo.
Si era eso no debia cerrarlo, ahora anda bien , pero , cuando ingreso un documento que ya esta en el registro debería informarme que ya existe y mostrarme los datos del alumno tanto como " Nombre , Apellido , etc " Esta bien colocarlo de esta forma a un Sub llamado "Muestra"

Código:
Private Sub mostrar()

Get #1, c, regins

txtape.Text = regins.Ape
txtaño.Text = regins.Año
txtin.Text = regins.Nro_ins
txtnom.Text = regins.Nom
CBOEstado.Text = regins.Estci
txtfecnac.Text = regins.FNac
txtlnac.Text = regins.LNac
txtdom.Text = regins.Dom
txtmat1.Text = regins.Mat1
txtmat2.Text = regins.Mat2
txtmat3.Text = regins.Mat3
txtmat4.Text = regins.Mat4
txttel.Text = regins.Tel
txttit.Text = regins.Tit
txtest.Text = regins.Establ
txthora.Text = regins.Hora

End Sub
Deje el archivo para descargar en el anterior post, por si acaso alquien quiera chekearmelo , son solo 2 formularios..
Muchas gracias por la ayuda , esto es la ultima q les pido porfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  #9 (permalink)  
Antiguo 11/11/2009, 16:04
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

No uso nunca ese tipo de ficheros de datos, pero creo que solo te falta incluir el numero de registro en la declaración de la sub:

Private Sub mostrar(ByVal c as Long)

para llamarla con:

mostrar c
  #10 (permalink)  
Antiguo 11/11/2009, 16:24
 
Fecha de Ingreso: junio-2008
Mensajes: 58
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

Bien pongo el campo muestra de esta manera:

Código:
Private Sub mostrar(ByVal c As Long)

Get #1, c, regins

txtape.Text = regins.Ape
txtaño.Text = regins.Año
txtin.Text = regins.Nro_ins
txtnom.Text = regins.Nom
CBOEstado.Text = regins.Estci
txtfecnac.Text = regins.FNac
txtlnac.Text = regins.LNac
txtdom.Text = regins.Dom
txtmat1.Text = regins.Mat1
txtmat2.Text = regins.Mat2
txtmat3.Text = regins.Mat3
txtmat4.Text = regins.Mat4
txttel.Text = regins.Tel
txttit.Text = regins.Tit
txtest.Text = regins.Establ
txthora.Text = regins.Hora

End Sub
ahora quiero comprar si el DNI ya existe , haciendo una llamada al "mostrar"

Osea en el campo del DNI pongo esto :

Código:
Private Sub txtdni_LostFocus()
Dim b As Byte, c As Integer
b = 0
Call busca_lostfocus
If b = 1 Then
Call mostrar
End If
End Sub
Me salta error en call mostrar..


Dejo una captura de mi formulario asi masomenos se guian...


Última edición por gohanjaja; 11/11/2009 a las 16:30
  #11 (permalink)  
Antiguo 12/11/2009, 00:01
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Ayuda tengo que rendir y no me anda mi programa =(

No puedo enrrollarme que tengo que irme a trabajar, así que intentaré ir al grano.
La sub mostrar espera un parámetro, que es el numero de registro a mostrar, por eso lo de poner:

Call mostrar c

suponiendo que en c tengas el numero de registro que quieres mostrar.

Para tu uso creo que te sirve igual si quitas la sub mostrar y la integras en la sub buscar.

Código :
Ver original
  1. Private Sub Form_busca()                                        'Busqueda
  2. Dim c As Integer, b As Byte, x As Integer
  3.      c = 1
  4. While b = 0 And Not EOF(1)
  5.     Get #1, c, regins
  6.     If regins.Nro_ins = c Then
  7.         If regins.doc = Val(txtdni) Then
  8.             b = 1
  9.  
  10. txtape.Text = regins.Ape
  11. txtaño.Text = regins.Año
  12. txtin.Text = regins.Nro_ins
  13. txtnom.Text = regins.Nom
  14. CBOEstado.Text = regins.Estci
  15. txtfecnac.Text = regins.FNac
  16. txtlnac.Text = regins.LNac
  17. txtdom.Text = regins.Dom
  18. txtmat1.Text = regins.Mat1
  19. txtmat2.Text = regins.Mat2
  20. txtmat3.Text = regins.Mat3
  21. txtmat4.Text = regins.Mat4
  22. txttel.Text = regins.Tel
  23. txttit.Text = regins.Tit
  24. txtest.Text = regins.Establ
  25. txthora.Text = regins.Hora
  26.  
  27.             c = regesta
  28.             MsgBox "Nro De Inscripción Existente", vbCritical, "Error D.N.I."
  29.             txtdni.SetFocus
  30.         Else
  31.           c = c + 1
  32.         End If
  33.     End If
  34.  
  35. Wend
  36.  
  37. End Sub
De ese modo cuando encuentre una coincidencia la muestra directamente.

Que se dé bien
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:47.