Programación General > Visual Basic 6.0 e inferiores
Leer De Un Txt!!!
Gandalf_malaga7:
Gracias Brroz :D ,
me parece buena idea,es que no estaba seguro si tu algoritmo iba a probar todas las posibles cadenas de 4 números pero parece ser que sí,lo único es que si tuviera 2 coches con los mismos números en mi parking ( ya seria mala suerte pero ya sabemos que las leyes de Murphy tambien se aplican a la programación) tendria que buscar otra coincidencia y mostrar las 2 por pantalla para permitir el acceso o no de forma manual.Si lo hay una coincidencia no hay problema,se deja pasar el coche y punto.
Voy a intentar integrarlo y ya te cuento :comp: ,tambien estaría bien tener un algoritmo que paralelamente solo deje las letras del .txt,y que busque de la misma manera en la base de datos las coincidencias,y si las letras coinciden en la misma mátricula en la que coinciden los números ya es seguro nuestro coche,
sería posible hacer esto? :blink: ,
bueno un millón de gracias!!!!!!!!!!!! ;)
Brroz:
Hola Gandalf_malaga7.
Lo que dices es posible, pero no necesario. Creo que no me expliqué suficientemente bien:
Si la búsqueda en la bd, selecciona dos registros, estás de enhorabuena, busca la matrícula completa que tendrás en cada registro en la cadena con las letras y los números, con toda probabilidad, sólo una coincidirá...
Siguiendo con los ejemplos, supon que str1 contiene la cadena de letras y números, rsMatriculas es el recordset con los registros que has seleccionado y el campo "Matricula" es el campo del recordset que contiene las matriculas en tu bd.
--- Código: Text --- ...rs.Matriculas.MoveFirstDo until rsMatriculas.EOF If Instr(1,str1,rsMatriculas.Fields("Matricula").value)) > 0 Then Exit Do rsMatriculas.MoveNextLoop If not rsMatriculas.EOF Then MsgBox "La matrícula es " & rsMatriculas.Fields("Matricula").valueElse MsgBox "La matrícula no se ha encontrado en la db"End If
Espero que ahora haya quedado más claro.
Abur.
Gandalf_malaga7:
Creo que ya esta claro,perdona por la tardanza pero soy novato por algo,
vamos a ver,tu idea es,coger todas las combinaciones de 4 números que haya en el .txt y meterlas en una matriz.Se busca en la base de datos si coincide alguna de estas combinaciones con los números de las mátriculas que yo tengo guardadas,y una vez encontrada alguna coincidencia,se toma esta mátricula entera (con letras y todo) y con la función que teníamos BuscarCadenaEnArchivo buscamos la mátricula completa en el .txt y si este nos devuelve una posición,es que la ha encontrado y todo perfecto,y si nos devuelve un 0 es uqe no ha encontrado la mátricula perfecta,creo que es esto lo que me estas diciendo :o ,
un último favor,tengo las siguientes funciones:
1)Function BuscarCadenaEnArchivo(ByVal FilePathFileName As String, ByVal Cadena As String, Optional ByVal Desde As Long, Optional ByVal CaseSens As Boolean) As Long
2)Function ProcesarTxt(ByVal InputFile As String) As String
(modificada ya para que solo me devuelva la cadena con los números,sin letras)
si no es mucho pedir me podrias escribir en un mensaje como quedaría el programa completo :whistling: ,es que tengo claro lo que hace pero no se bien como integrarlo y estoy deseando provarlo porque me parece muy buena idea.Las dos funciones de arriba no hace falta que las escribas,solo cuando las llamas.
Si estas muy liado :blink: no te preocupes ya lo intentaré probar yo mas adelante,de todas formas muchas gracias Brroz me estas solucionando una buena papeleta,
un saludo :hola:
Brroz:
Hola Gandalf_malaga7.
De la primera función 'BuscarCadenaEnArchivo' olvídate, ya que al final quedamos en que no la íbamos a utilizar para nada.
Resumiendo, las funciones/métodos que harán falta serán:
1- ProcesarTxt
Tomando como parámetro de entrada un archivo de texto, devuelve un valor string que contiene números y letras mayúsculas hayados en ese archivo de texto.
2- ExtraerGrupos4Numeros
Toma como entrada el string devuelto de la función anterior, y establece una matriz cuyos elementos son los posibles grupos de cuatro números que se encontraron en el string de entrada.
Aparte de estos dos métodos, es necesario un cuerpo principal del programa que los llame, efectúe la consulta a la base de datos, etc. En los ejemplos el código para este método considerabamos que se encontraba alojado en el evento Click de un CommandButton. Podría quedar algo así:
--- Código: Text --- Private Sub Command1_Click() On Error Resume Next Dim strOCR As String strOCR = ProcesarTxt("C:\Prueba3.txt") Dim int4Numeros() As Integer ExtraerGrupos4Numeros strOCR, int4Numeros 'Aquí presupongo que tienes definidas la correspondiente'conexión y comandos a la base de datos. Considero para'el ejemplo que cmd1 es un objeto Command válido... dim rsMatriculas As Recordset, strSQL As String strSQL = "SELECT * FROM TablaMatriculas WHERE Matricula LIKE " dim lng1 as long For lng1 = 1 to ubound(int4Numeros) cmd1.CommandText = strSQL & "'%" & int4Numeros(lng1) & "%'" set rsMatriculas=cmd1.Execute() If rs.RecordCount > 0 Then rs.Matriculas.MoveFirst Do until rsMatriculas.EOF If Instr(1,strOCR,rsMatriculas.Fields("Matricula").value)) > 0 Then Exit Do rsMatriculas.MoveNext Loop If not rsMatriculas.EOF Then MsgBox "La matrícula es " & rsMatriculas.Fields("Matricula").value Exit For End If Next lng1 If not rsMatriculas is Nothing Then If rsMatriculas.EOF Then _ MsgBox "La matrícula no se ha encontrado en la db" Else MsgBox "La matrícula no se ha encontrado en la db" End If...End Sub
Bueno, creo que esto es todo, el resto (¡si es que queda resto!) intenta ponerlo tú de tu parte. Si tienes problemas con la conexión y consulta a la bd, en este mismo foro hay multitud de ejemplos que te pueden servir: utiliza la herramienta de búsqueda.
Chao.
Gandalf_malaga7:
Que tal Brroz,estoy aqui integrando el código que me has pasao y todo va bien exepto que creo que el objeto command (cmd1) es sólo utilizable en base de datos ADO y yo estoy usando una DAO :huh: ,quiere decir esto que no puedo usar el código que me has pasado?,me recomiendas que cambie mi base de datos y la haga en ADO?
Ya lo tengo casi...
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa