Programación General > Visual Basic 6.0 e inferiores
Leer De Un Txt!!!
Gandalf_malaga7:
Que pasa!!!!!!! :hola: ,
no me deis la enhorabuena todavía que el programa aún no está terminado,queda una pequeña parte.Primero muchas gracias Brroz porque el algoritmo del otro día me vino de #### madre :kicking: .A ver si me podeis echar una mano con una cosilla,es lo que me falta pa acabar:
Vamos a ver,mi OCR me generaba un .txt no?,este .txt contiene una mátriula(entera o a lo mejor 5 caracteres de 8) y mucha mierda,con el algoritmo que me pasó Brroz al final me queda por ejemplo lo siguiente: "FVM8432DZEZ",donde mi mátricula es M8432DZ y el resto no me sirve.El resultado podría ser por ejemplo también 8432C y que me faltara la primera y la última letra.Dicho esto ,yo tengo una base de datos done uno de los campos es matricula,y tendré unas 40 mátriculas.Necesito ver si la matricula que tengo en mi .txt(ya sabeis camuflada con otros caracteres inutiles) se encuentra en mi base de datos o no.No tengo ni idea de como hacer esto, :( ,si alguno puede aportarme alguna ó incluso el código de algún algoritmo, :comp: ,estaré eternamente agradecido, y por supuesto no hace falta decir que si alguien quiere conocer más acerca de lo que estoy desarrollando o que le pase código o lo que sea no tiene más que decirlo!!!!!!!!!,
Grracias y espero Que me hagais ver la luz :lightsabre: !!!!!!!!!!
Brroz:
Hola Gandalf_malaga7.
Tal vez ya hayas resuelto tu problema, pero por si acaso, te cuento:
Con la cadena resultante de la función, yo establecería otro filtro, obteniendo una cadena formada sólo por números, luego con el resultado ejecutaría una selección de registros en tu bd con un SQL de este estilo:
--- Código: Text --- Dim strSQL as stringstrSQL = "SELECT * FROM TablaMatriculas WHERE CampoMatricula LIKE '%"& LlamadaAFuncionSoloNumeros(ResultadoFnAnterior) & "%'".
Recorrería el recordset resultante, buscando la mejor coincidencia...
Podrías sofisticar más la última función para que por ejemplo buscase una cadena de números con una letra a izquierda y otra a derecha, o con tres letras a la izquierda de los cuatro números...
No sé si me habré explicado muy bien, pero tú pregunta, pregunta.
Abur.
Gandalf_malaga7:
Que tal Brroz,me mola tu idea,lo único malo es que la mierda que se me genera en el .txt no son solo letras,también tengo casos en los que se me generan numeros erroneos 4FVM8432DZEZ6,por ejemplo,sería valido tambien para esto?,la función 'LlamadaAFunciónSoloNumeros' te refieres a la que me pasaste la pasada semana ¿no? pero solo dejando los números. No se la verdad es que estoy bastante saturado y no se me ocurre como hacer esto ahora mismo,
Un saludo.
Brroz:
Hola.
Con 'LlamadaAFunciónSoloNumeros' me refiero a una nueva función que realice un nuevo filtro sobre la anterior que te envié.
En este ejemplo, el método recibirá como entrada el resultado de la función ProcesarTxt("C:\ruta\archivo.txt") y una matriz por referencia que será modificada para que devuelva los elementos de grupos de 4 dígitos encontrados en la cadena. Fíjate:
--- Código: Text --- Private Sub Command1_Click() 'Este es el código que usabamos hasta ahora Dim str1 As String str1 = ProcesarTxt("C:\Prueba3.txt") 'Aquí empieza el 2º filtro Dim int4Numeros() As Integer ExtraerGrupos4Numeros str1, int4Numeros 'Aquí muestro los valores que deberías buscar'en la db usando like On Error Resume Next Dim int1 As Integer For int1 = 1 To UBound(int4Numeros) MsgBox int4Numeros(int1) Next int1 End Sub Private Sub ExtraerGrupos4Numeros( _ByVal Txt As String, ByRef Numeros() As Integer) Dim intIdx As Integer Dim int1 As Integer, str1 As String For int1 = 1 To Len(Txt) - 4 str1 = Mid(Txt, int1, 4) If IsNumeric(str1) Then intIdx = intIdx + 1 If intIdx > 1 Then ReDim Preserve Numeros(intIdx) Else ReDim Numeros(1) End If Numeros(intIdx) = str1 End If Next int1 End Sub
Recorre los elementos de la matriz que contiene los números, busca en la tabla de la bd las posibles correspondencias, recorre la selección intentando indentificar el valor del campo con la matricula completa en la cadena resultado de la función 'ProcesarTxt' (en el ejemplo str1). Es decir, algo así:
--- Código: Text --- If Instr(1,str1,recordsetMatriculas.Fields("Matricula").value) > 0 Then _MsgBox "Has encontrado la matrícula, enhorabuena tronco..."
Espero que me haya explicado bien...
Suerte.
Brroz:
Hola.
Con 'LlamadaAFunciónSoloNumeros' me refiero a una nueva función que realice un nuevo filtro sobre la anterior que te envié.
En este ejemplo, el método recibirá como entrada el resultado de la función ProcesarTxt("C:\ruta\archivo.txt") y una matriz por referencia que será modificada para que devuelva los elementos de grupos de 4 dígitos encontrados en la cadena. Fíjate:
--- Código: Text --- Private Sub Command1_Click() 'Este es el código que usabamos hasta ahora Dim str1 As String str1 = ProcesarTxt("C:\Prueba3.txt") 'Aquí empieza el 2º filtro Dim int4Numeros() As Integer ExtraerGrupos4Numeros str1, int4Numeros 'Aquí muestro los valores que deberías buscar'en la db usando like On Error Resume Next Dim int1 As Integer For int1 = 1 To UBound(int4Numeros) MsgBox int4Numeros(int1) Next int1 End Sub Private Sub ExtraerGrupos4Numeros( _ByVal Txt As String, ByRef Numeros() As Integer) Dim intIdx As Integer Dim int1 As Integer, str1 As String For int1 = 1 To Len(Txt) - 4 str1 = Mid(Txt, int1, 4) If IsNumeric(str1) Then intIdx = intIdx + 1 If intIdx > 1 Then ReDim Preserve Numeros(intIdx) Else ReDim Numeros(1) End If Numeros(intIdx) = str1 End If Next int1 End Sub
Recorre los elementos de la matriz que contiene los números, busca en la tabla de la bd las posibles correspondencias, recorre la selección intentando indentificar el valor del campo con la matricula completa en la cadena resultado de la función 'ProcesarTxt' (en el ejemplo str1). Es decir, algo así:
--- Código: Text --- If Instr(1,str1,recordsetMatriculas.Fields("Matricula").value) > 0 Then _MsgBox "Has encontrado la matrícula, enhorabuena tronco..."
Espero que me haya explicado bien...
Suerte.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa