AYUDA URGENTE CON VB

16/07/2008 - 20:08 por Bruja | Informe spam
Hola Todos,

Desde ya gracias por su ayuda, ahora les platico.
Hice un programa de busqueda en una base de datos. Me corría super bien, si
no le ingresaba la palabra exacta tal como estaba en la basde datos decía que
no existía eso estaba perfecto. Ahora no sé que le moví que con que le
ingrese una letra me dice que si se encontró y obvio me saca el primer
articulo que encuentre que tiene esa letra. Les pongo mi código para ver si
me pueden decir cual es mi error, espero me puedan ayudar por que ya ese me
quemó el cerebro GRAX. Besos
La bruja - May

Private Sub CommandButton1_Click()
'Definición de variables, fila se usa para guardar en que fila se encuentra
y varbus es la variable a buscar
Dim fila As Long, varbus As String
'Manda llamar al procedimiento BuscaRegistro con la variable fila
BuscaRegistro fila, varbus
'Cancela la búsqueda definitivamente, se acaba el programa
If varbus = "" Then Exit Sub
'Si no encontró la variable le avisa al usuario
If fila = 0 Then
MsgBox "La búsqueda no arrojó ningún resultado", vbInformation,
"BÚSQUEDA SIN RESULTADOS"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea intentarlo de nuevo?", vbRetryCancel +
vbQuestion, "BUSQUEDA") = vbRetry
BuscaRegistro fila, varbus
MsgBox "La búsqueda no arrojó ningún resultado", vbCritical,
"ERROR"
Loop
MsgBox "Término de la búsqueda", vbExclamation, "FIN"
'Si lo encuentra le avisa al usuarion que la búsqueda fue exitosa y le da
los resultados
Else
MsgBox "Tu búsqueda fue exitosa", vbExclamation, "BÚSQUEDA EXITOSA"
MsgBox "El Equipo secador " & Worksheets("GRAL").Cells(fila, 3) & vbCr & _
"seca el material " & Worksheets("GRAL").Cells(fila, 1) & vbCr & _
" con código " & Worksheets("GRAL").Cells(fila, 2) & vbCr, vbOKOnly,
"RESULTADOS"""
Worksheets("BÚSQUEDA").Cells(10, 2) = "Materia Prima"
Worksheets("BÚSQUEDA").Cells(10, 3) = "Código"
Worksheets("BÚSQUEDA").Cells(10, 4) = "Secador"
Worksheets("BÚSQUEDA").Cells(11, 2) = Worksheets("GRAL").Cells(fila, 1)
Worksheets("BÚSQUEDA").Cells(11, 3) = Worksheets("GRAL").Cells(fila, 2)
Worksheets("BÚSQUEDA").Cells(11, 4) = Worksheets("GRAL").Cells(fila, 3)
End If
End Sub
'Procedimiento de búsuqeda
Sub BuscaRegistro(fila As Long, varbus As String)
On Error Resume Next
'Le solicita al usuario la variable a buscar
varbus = UCase(InputBox("Introduce el nombre de material o código que deseas
buscar", "BUSCAR"))
'Si el usuario cancela o deja en blanco en vez de introducir algo, le aviso
lo que sucedió
If varbus = "" Then
MsgBox "Se canceló o no se introdujo ningún parámetro a buscar",
vbCritical, "ERROR"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea iniciar la búsqueda o cancelarla
definitivamente?", vbQuestion + vbOKCancel, "BÚSQUEDA") = vbOK
BuscaRegistro fila, varbus
Loop
Exit Sub
'Busca la variable
Else
'busca en columna A.
fila = Worksheets("GRAL").Range("A2:B1000").Find(varbus).Row
End If
End Sub
 

Leer las respuestas

#1 Héctor Miguel
16/07/2008 - 23:22 | Informe spam
hola, May !

Desde ya gracias por su ayuda, ahora les platico.
Hice un programa de busqueda en una base de datos. Me corria super bien
si no le ingresaba la palabra exacta tal como estaba en la basde datos decia que no existia eso estaba perfecto.
Ahora no se que le movi que con que le ingrese una letra me dice que si se encontro y obvio
me saca el primer articulo que encuentre que tiene esa letra.
Les pongo mi codigo para ver si me pueden decir cual es mi error
espero me puedan ayudar por que ya ese me quemo el cerebro ...



en tu mensaje anterior con asunto de "MEGA URGENTE" ya habias dejado un codigo que te funciono muy bien ;)
(aparentemente) dentro de las modificaciones que expones en este nuevo codigo, hay dos o tres cambios que pudieran ser la causa:

1) en tu codigo anterior, el procedimiento Sub BuscaRegistro(...
a) SOLO requeria de la variable fila
b) (ahora) le agregas el requerimiento de la variable varbus
c) ambos argumentos son ByRef (por omision) lo que significa que NO se pueden modificar dentro del procedimiento "llamado"
d) si de todas formas vuelves a "preguntar" por la variable varbus (en el InputBox)... para que lo solicitas ByRef ???
e) igual para el argumento fila (es lo que vas a devolver en caso de encontrar la variable de busqueda) -???-

2) agregaste un bucle Do While MsgBox(...) = vbOK y tienes una instruccion "Exit Sub"
revisa cual es el proposito de ambas (y como es que estan "afectando" a tus instrucciones) y si son (realmente) "necesarias" -???-

3) si requieres que tus variables fila y varbus puedan ser "administradas" por ambos procedimientos...
a) retiralas de la declaracion al inicio del procedimiento
b) ponlas en el area de declaraciones -> a nivel de modulo
c) retiralas como argumentos en el procedimiento Sub BuscaRegistro(...

4) en el peor de los casos... prueba "regresando" al codigo que SI te funciono (el del mensaje "MEGA URGENTE")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el resto del mensaje con el codigo (nuevo) __
Private Sub CommandButton1_Click()
'Definición de variables, fila se usa para guardar en que fila se encuentra y varbus es la variable a buscar
Dim fila As Long, varbus As String
'Manda llamar al procedimiento BuscaRegistro con la variable fila
BuscaRegistro fila, varbus
'Cancela la bàºsqueda definitivamente, se acaba el programa
If varbus = "" Then Exit Sub
'Si no encontró la variable le avisa al usuario
If fila = 0 Then
MsgBox "La bàºsqueda no arrojó ningàºn resultado", vbInformation, "BàšSQUEDA SIN RESULTADOS"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea intentarlo de nuevo?", vbRetryCancel + vbQuestion, "BUSQUEDA") = vbRetry
BuscaRegistro fila, varbus
MsgBox "La bàºsqueda no arrojó ningàºn resultado", vbCritical, "ERROR"
Loop
MsgBox "Término de la bàºsqueda", vbExclamation, "FIN"
'Si lo encuentra le avisa al usuarion que la bàºsqueda fue exitosa y le da los resultados
Else
MsgBox "Tu bàºsqueda fue exitosa", vbExclamation, "BàšSQUEDA EXITOSA"
MsgBox "El Equipo secador " & Worksheets("GRAL").Cells(fila, 3) & vbCr & _
"seca el material " & Worksheets("GRAL").Cells(fila, 1) & vbCr & _
" con código " & Worksheets("GRAL").Cells(fila, 2) & vbCr, vbOKOnly, "RESULTADOS"""
Worksheets("BàšSQUEDA").Cells(10, 2) = "Materia Prima"
Worksheets("BàšSQUEDA").Cells(10, 3) = "Código"
Worksheets("BàšSQUEDA").Cells(10, 4) = "Secador"
Worksheets("BàšSQUEDA").Cells(11, 2) = Worksheets("GRAL").Cells(fila, 1)
Worksheets("BàšSQUEDA").Cells(11, 3) = Worksheets("GRAL").Cells(fila, 2)
Worksheets("BàšSQUEDA").Cells(11, 4) = Worksheets("GRAL").Cells(fila, 3)
End If
End Sub
'Procedimiento de bàºsuqeda
Sub BuscaRegistro(fila As Long, varbus As String)
On Error Resume Next
'Le solicita al usuario la variable a buscar
varbus = UCase(InputBox("Introduce el nombre de material o código que deseas buscar", "BUSCAR"))
'Si el usuario cancela o deja en blanco en vez de introducir algo, le aviso lo que sucedió
If varbus = "" Then
MsgBox "Se canceló o no se introdujo ningàºn parà¡metro a buscar", vbCritical, "ERROR"
'Si desea buscar de nuevo, reinicia sólo el program si no se acaba
Do While MsgBox("¿Desea iniciar la bàºsqueda o cancelarla definitivamente?", vbQuestion + vbOKCancel, "BàšSQUEDA") = vbOK
BuscaRegistro fila, varbus
Loop
Exit Sub
'Busca la variable
Else
'busca en columna A.
fila = Worksheets("GRAL").Range("A2:B1000").Find(varbus).Row
End If
End Sub

Preguntas similares