Programación General > Visual Basic 6.0 e inferiores
Busqueda Exacta???
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
[#] Página Siguiente
Ir a la versión completa