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

Negrito Novato

Estas en el tema de Negrito Novato en el foro de Visual Basic clásico en Foros del Web. Hola buenas tardes, este novato esta dando sus primeros pasos aprendiendo VB leyendo apuntes de aqui y de alla. Y tratando de aplicar lo que ...
  #1 (permalink)  
Antiguo 20/04/2005, 11:41
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
Negrito Novato

Hola buenas tardes, este novato esta dando sus primeros pasos aprendiendo VB leyendo apuntes de aqui y de alla. Y tratando de aplicar lo que voy aprendiendo, estoy haciendo una simple agenda para utilizarla en mi trabajo. El tema es que quiero hacer una busqueda solo de personas que vivan en "cordoba" y que lo muestre uno debajo de otro en un textbox, y no hay caso no me sale, lo maximo que legue a que muestre son 2 nombres, y despues no muestra mas nada, el codigo que puse en el button es:
Open "C:\medios.dat" For Input As 1
Do While Not EOF(1)
Input #1, medio
Input #1, capint
Input #1, prov 'campo a mostrar
Input #1, tmedio
Input #1, repre
Input #1, dire
Input #1, ejec
Input #1, teldto
Input #1, celu
Input #1, email
ProgressBar1.Value = 0
Timer1.Enabled = True
If prov = Text12.Text Then
Text11.Text = medio + Chr(10) + Chr(13)
End If
Loop
Close #1
Cualquier ayuda que puedan darme sera bienvenida.
  #2 (permalink)  
Antiguo 20/04/2005, 12:46
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Un consejo: No copies el código erróneo, sino en el que te basas.

Por ejemplo, en tu caso abres un archivo. ¿De qué depende el archivo? De cómo le hayas guardado. Copia la función que usas para guardar.

Otro consejo: No uses Timers y una ProgressBar en una cosa tan simple (no se ni a ver y sólo ralentiza el programa). Es mera decoración.
  #3 (permalink)  
Antiguo 20/04/2005, 13:08
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
De acuerdo ayuda a Novato

Gracias Amigo , a decir verdad la decoracion de la progressbar y el timer la agregue despues. La funcion para guardar es la siguiente:

Open "C:\medios.dat" For Append As 1
Write #1, Text1.Text
Write #1, Text2.Text
Write #1, Text3.Text
Write #1, Text4.Text
Write #1, Text5.Text
Write #1, Text6.Text
Write #1, Text7.Text
Write #1, Text8.Text
Write #1, Text9.Text
Write #1, Text10.Text
ProgressBar1.Value = 0
Timer1.Enabled = True
Close #1
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
Text10.Text = ""

y luego la busqueda por provincias y que lo muestre en un textbox uno debajo de otro que no funciona es:

Open "C:\medios.dat" For Input As 1
Do While Not EOF(1)
Input #1, medio
Input #1, capint
Input #1, prov 'campo a mostrar
Input #1, tmedio
Input #1, repre
Input #1, dire
Input #1, ejec
Input #1, teldto
Input #1, celu
Input #1, email
ProgressBar1.Value = 0
Timer1.Enabled = True
If prov = Text12.Text Then
Text11.Text = medio + Chr(10) + Chr(13)
End If
Loop
Close #1

Desde ya agradezco tu amable atencion y celeridad.
El negrito
  #4 (permalink)  
Antiguo 20/04/2005, 15:32
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Pues no le veo el problema... Este código funciona:

Código:
Option Explicit

Private Sub Command1_Click()
Open "C:\prueba.txt" For Append As 1
Write #1, Text1.Text
Write #1, Text2.Text
Close #1
End Sub

Private Sub Command2_Click()
Dim Uno As String
Dim Dos As String

Open "C:\prueba.txt" For Input As 1
Do While Not EOF(1)
Input #1, Uno
Input #1, Dos

If Dos = Text3.Text Then
    MsgBox "Encontrado " & Dos
End If

Loop
Close #1


End Sub
  #5 (permalink)  
Antiguo 21/04/2005, 07:37
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
ayuda, con busqueda de un campo en archivo!!

Cita:
Iniciado por MaxExtreme
Pues no le veo el problema... Este código funciona:

Código:
Option Explicit

Private Sub Command1_Click()
Open "C:\prueba.txt" For Append As 1
Write #1, Text1.Text
Write #1, Text2.Text
Close #1
End Sub

Private Sub Command2_Click()
Dim Uno As String
Dim Dos As String

Open "C:\prueba.txt" For Input As 1
Do While Not EOF(1)
Input #1, Uno
Input #1, Dos

If Dos = Text3.Text Then
    MsgBox "Encontrado " & Dos
End If

Loop
Close #1


End Sub
Disculpame amigo, pero por ahi no me expresé bien, el tema con la carga de datos no tengo problemas, despues de la carga agregué un boton de busqueda para que me muestre en un textbox uno debajo deotro solo las personas cargadas en el archivo que sean de una determinada provincia (tengo un campo de provincia) te puse el codigo de carga de datos porque vos me pedistes, a continuacion pongo de nuevo el codigo de busqueda, a lo mejor no puede mostrarme como yo quiero uno debajo de otro en un textbox y tengo que usar un label no?

Open "C:\medios.dat" For Input As 1
Do While Not EOF(1)
Input #1, medio
Input #1, capint
Input #1, prov
Input #1, tmedio
Input #1, repre
Input #1, dire
Input #1, ejec
Input #1, teldto
Input #1, celu
Input #1, email
ProgressBar1.Value = 0
Timer1.Enabled = True
If prov = Text12.Text Then
Text11.Text = medio + Chr(10) + Chr(13)
Else
MsgBox "No hay medios de esta provincia"
End If
Loop
Close #1

Desde ya muchas gracias por tu amabilidad
El negrito
  #6 (permalink)  
Antiguo 21/04/2005, 07:54
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Te estoy repitiendo que el código que puse está bien. Fíjate un poquito. La primera parte guarda 2 cadenas de texto:

Código:
Private Sub Command1_Click()
Open "C:\prueba.txt" For Append As 1
Write #1, Text1.Text
Write #1, Text2.Text
Close #1
End Sub



Y ésta es la de búsqueda

Código:
Private Sub Command2_Click()
Dim Uno As String
Dim Dos As String

Open "C:\prueba.txt" For Input As 1
Do While Not EOF(1)
Input #1, Uno
Input #1, Dos

If Dos = Text3.Text Then
    MsgBox "Encontrado " & Dos
End If

Loop
Close #1

End Sub
Te repito: El código que te he escrito ahí funciona. Amplíalo con los demás campos que uses si quieres.

Para mostrar una lista de cosas, o usas un TextBox con MultiLine en ON, o un ListBox mejor.
  #7 (permalink)  
Antiguo 21/04/2005, 08:00
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
Gracias, lo voy a probar, sos muy amable amigo
  #8 (permalink)  
Antiguo 21/04/2005, 08:46
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
Va De Nuevo!!!

Cita:
Iniciado por MaxExtreme
Te estoy repitiendo que el código que puse está bien. Fíjate un poquito. La primera parte guarda 2 cadenas de texto:

Código:
Private Sub Command1_Click()
Open "C:\prueba.txt" For Append As 1
Write #1, Text1.Text
Write #1, Text2.Text
Close #1
End Sub



Y ésta es la de búsqueda

Código:
Private Sub Command2_Click()
Dim Uno As String
Dim Dos As String

Open "C:\prueba.txt" For Input As 1
Do While Not EOF(1)
Input #1, Uno
Input #1, Dos

If Dos = Text3.Text Then
    MsgBox "Encontrado " & Dos
End If

Loop
Close #1

End Sub
Te repito: El código que te he escrito ahí funciona. Amplíalo con los demás campos que uses si quieres.

Para mostrar una lista de cosas, o usas un TextBox con MultiLine en ON, o un ListBox mejor.
Disculpame, amigo, en tu codigo vos pusistes que el resultado de la busqueda lo muestre en un msgbox, yo reemplacé eso por un textbox con el multiline en True, con el siguiente codigo

If repre = Text12.Text Then
Text11.Text = Text11.Text + medio + Chr(10) + Chr(13)
Exit Sub
End If

y me lo muestra uno a continuacion del otro medio, y no uno debajo del otro como quisiera, yo agregue el comando chr(13) porque encontre que eso haria bajar el siguiente dato, estoy errado en algo? gracias de nuevo y disculpa que sea tan pesado.
El negrito
  #9 (permalink)  
Antiguo 21/04/2005, 09:22
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por El negrito
Disculpame, amigo, en tu codigo vos pusistes que el resultado de la busqueda lo muestre en un msgbox, yo reemplacé eso por un textbox con el multiline en True, con el siguiente codigo

If repre = Text12.Text Then
Text11.Text = Text11.Text + medio + Chr(10) + Chr(13)
Exit Sub
End If

y me lo muestra uno a continuacion del otro medio, y no uno debajo del otro como quisiera, yo agregue el comando chr(13) porque encontre que eso haria bajar el siguiente dato, estoy errado en algo? gracias de nuevo y disculpa que sea tan pesado.
El negrito

Usa la consante VbCrLf, que es una encadenación del ascii 13 y 10.

En cualquier caso un ListBox va mejor.
  #10 (permalink)  
Antiguo 21/04/2005, 09:52
 
Fecha de Ingreso: abril-2005
Mensajes: 7
Antigüedad: 19 años
Puntos: 0
Muy Agradecido

GRACIAS AMIGO.
Dos mas:
1) como hago para mostrar la hora en forma constante en un form y la fecha? yo hice asi, pero me muestra solo cuando lanza el form y no se actualiza:

Private Sub Form_Load()
Label15 = Format(Now)
End Sub

2) La expresion If then etc etc, puedo poner una dentro de otra? ej.

If text1.text = valor then
if text2.text = meses then
text3.text = edad
else
text4.text = sexo
end if
end if

Es un ejemplo cualquiera, tenes laguna idea de como usar una expresion de esta forma? gracias de nuevo
El negrito


Agradezco tu ayuda, El negrito
  #11 (permalink)  
Antiguo 21/04/2005, 12:06
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
La primera pregunta es de novato. Es fácil. No funciona porque el evento "Load" sólo se llama al cargar el formulario. Para hacer que la hora se actualice constantemente, puedes usar un Timer que se active cada segundo... (O algo menos, porque no es exacto). Simplemente pon la línea en el evento Timer de ese control.

La segunda pregunta ya me deja por los suelos. ¿De verdad has leido bien un buen manual de programación? Claro que puedes meter cosas dentro de cosas.

Código:
If x = 0 Then
	MsgBox "X es 0, que ilusion, comprobemos Y"
	If y = 0 Then
		MsgBox "Y es 0 tambien!!!!"
	Else
		MsgBox "Oh no, Y no es 0"
	End If
Else
	MsgBox "Como X no es 0, ni siquiera compruebo Y :'("
End If
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 17:55.