Programación General > Visual Basic 6.0 e inferiores

 Busqueda Exacta???

(1/2) > >>

neorent:
Hola a todos:
ojala me puedan ayuar, trabajo con access97 y vb6.0 y quiero hacer lo siguiente, en una tabla tengo un campo cargosistema y resulta que quiero contar todos los registro de este campo solo buscando la palabra sistema, ej Administrativo,+1pc,sistema bueno solo quiero que me diga si este registro tiene sistema si no pase al otro registro, otro ejemplo seria asi "algo,sistema,algo" eso si todos estos estan separados por coma osea puede aparacer asi tambien en la base ",sistema,otro" no se si entiende la idea solo buscar esta palabra en cualquier parte del registro y si esta lo cuente si no esta no lo cuente solo quiero saber como puedo hacer la busqueda lo demas lo hago yo si pueden ayudarme seria genial adios y muchas gracias.

cpmario:
Te escribí una subrutina que supongo te ayudará en lo que deseas. No la probé, ya que no una base de datos en que basarme, pero espero que funcione cuando la adecues a tu programa.


--- Código: Text --- 'strPalabraBuscada = "sistema" o cualquier palabra que desees buscarSub test(strPalabraBuscada As String)    Dim DBPrincipal As Database    Dim rstID As Recordset    Dim strSQL As String        Set DBPrincipal = DBEngine.OpenDatabase("MiDataBase.mdb")    strSQL = "SELECT * FROM MiTabla"    Set rstID = DBPrincipal.OpenRecordset(strSQL, dbOpenDynaset)    rstID.MoveFirst    While Not rstID.EOF        'el signo (*) es un comodín, la palabra puede estar en cualquier _        parte del texto del campo a buscar        rstID.FindFirst "Micampo='*" & strPalabraBuscada & "*'"        If Not rstID.NoMatch Then            MsgBox "No encontré " & strPalabraBuscada        Else            MsgBox "Encontré " & strPalabraBuscada        End If        rstID.MoveNext    Wend    rstID.Close    DBPrincipal.CloseEnd Sub  :comp:

neorent:

--- Cita de: "cpmario" --- Te escribí una subrutina que supongo te ayudará en lo que deseas. No la probé, ya que no una base de datos en que basarme, pero espero que funcione cuando la adecues a tu programa.


--- Código: Text --- 'strPalabraBuscada = "sistema" o cualquier palabra que desees buscarSub test(strPalabraBuscada As String)    Dim DBPrincipal As Database    Dim rstID As Recordset    Dim strSQL As String        Set DBPrincipal = DBEngine.OpenDatabase("MiDataBase.mdb")    strSQL = "SELECT * FROM MiTabla"    Set rstID = DBPrincipal.OpenRecordset(strSQL, dbOpenDynaset)    rstID.MoveFirst    While Not rstID.EOF        'el signo (*) es un comodín, la palabra puede estar en cualquier _        parte del texto del campo a buscar        rstID.FindFirst "Micampo='*" & strPalabraBuscada & "*'"        If Not rstID.NoMatch Then            MsgBox "No encontré " & strPalabraBuscada        Else            MsgBox "Encontré " & strPalabraBuscada        End If        rstID.MoveNext    Wend    rstID.Close    DBPrincipal.CloseEnd Sub  :comp:
--- Fin de la cita ---
bueno muchas gracias por tu ayuda sabes trate de adaptar el code a lo que yo queria, pero no me resulta cuando empiezo el conteo en la base por ejemplo tengo 200 registros y me cuenta que ya paso como 3000 veces osea no me funciona lo que yo hice quizas algo esta mal te puedo dejar el code para que lo veas y me puedas indicar cual puede ser mi error, te lo agradeceria muchisimo ya que haci podria entregar la aplicacion que me estan pidiendo y esto es lo unico que me retrasa un poco bueno es mi primera vez que realizo una busqueda con sql jejeje bueno te dejo el code y espero me cuentes ok adios y gracias

Dim prueba As Database
Dim tabla As Recordset
Dim strSQL As String
Dim strpalabrabuscada As String
Dim cuentasistema As Integer

strpalabrabuscada = "SISTEMA"
Set prueba = DBEngine.OpenDatabase("\\obiwan\soporte\inventario06.mdb")
strSQL = "SELECT * FROM maestra"
Set tabla = prueba.OpenRecordset(strSQL, dbOpenDynaset)
tabla.MoveFirst
While Not tabla.EOF
     tabla.FindFirst "perfilusuario='*" & strpalabrabuscada & "*'"
     If Not tabla.NoMatch Then
           MsgBox "No encontré " & strpalabrabuscada
     Else
           MsgBox "Encontré " & strpalabrabuscada
           cuentasistema = cuentasistema + 1
           Label31.Caption = cuentasistema
     End If
     tabla.MoveNext
Wend
tabla.Close
prueba.Close

Juanolo:
Hola Neorent!

Creo que tu código puede mejorar con un par de cosillas:

En primer lugar, creo que el error del código está en:


--- Código: Text ---If Not tabla.NoMatch ThenMsgBox "No encontré " & strpalabrabuscadaElse 
Pues, si encuentra la palabra te dirá que no la encontró. Me explico. Si no encuentra la palabra, tabla.nomatch es Verdadero. U sea, Si tabla.nomatch, entonces "No encontré la palabra" (El Not está de más)

Pero yendo al código (Puede que me equivoque en algo, no tengo Visual cerca; pero si algo falla sin duda te dará las pistas para corregirlo:


--- Código: Text ---Dim prueba As DatabaseDim tabla As RecordsetDim strSQL As StringDim strpalabrabuscada As String strpalabrabuscada = "SISTEMA"Set prueba = DBEngine.OpenDatabase("\\obiwan\soporte\inventario06.mdb")strSQL = "SELECT * FROM maestra WHERE perfilusuario='*" & strpalabrabuscada & "*'"Set tabla = prueba.OpenRecordset(strSQL, dbOpenDynaset) With Tabla  If .EOF and .BOF   'Si está al comienzo y al final del Recordset al mismo tiempo.     MsgBox "La Palabra no existe"     Goto SAlida  Else     .MoveLast     .MoveFirst   'Voy al primer y al último registros     msgbox "La palabra se encuentra " & .Recordcount & " veces"  endif  .closeend WithSalida:prueba.close 

neorent:
hola juanolo bueno gracias por la ayuda pero igual me da errores, osea no que me de un error de ejecucion o algo asi solo que cuando sigo contando igual me sobre pasa lo que deberia tener no se si me entiendes igual dejo la inquietante para ver quien me echa la manito y se agradece mucho el aporte adios

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa