Buscar en varios archivos de texto vb 6.0

Iniciado por Bazzana, 30 Mayo 2010, 17:36 PM

0 Miembros y 1 Visitante están viendo este tema.

Bazzana

Hola!!

Veran tengo un problema, yo tengo un programa, que se maneja con archivos de texto no?
Y bueno yo quiero que busque X palabra en todos los archivos de texto que haya en una carpeta.

Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.
Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?

Desde ya gracias!

Saludos

Dessa

Hola, con Dir seriá así



Option Explicit

Private Sub Form_Load()

Me.AutoRedraw = True

Dim TeEquisTes As String
TeEquisTes = Dir("C:\Windows\")

While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then Me.Print TeEquisTes
  TeEquisTes = Dir
Wend

End Sub




Adrian Desanti

Psyke1

Ok Dessa, pero lo que quiere tambien es buscar una palabra en un archivo de texto...
Seria asi:

Código (vb) [Seleccionar]

Function Buscar_Palabra(sArchivo As String, sPalabra As String)
   Dim Archivo           As Integer
   Dim Linea             As String
   Archivo = FreeFile
   Open sArchivo For Input As Archivo
       Do While Not EOF(Archivo)
           Line Input #Archivo, Linea
           If InStr(Linea, Word) <> 0 Then
               MsgBox "Encontre la palabra""" & sPalabra & """ en el archivo " _
               & sArchivo, vbInformation
           End If
       Loop
   Close #Archivo
End Function
   
Private Sub Command2_Click()
   Call Buscar_Palabra("c:\windows\1.txt", "hola")
End Sub


Salu2! ;)

Dessa

#3
Cita de: Bazzana en 30 Mayo 2010, 17:36 PM
Hola!!

Y el problema es que no se como hacerlo porque yo se hacer que busque en 1 archivo de texto con la funcion getvar.


Pero cuando hay que buscar en todos los archivos de texto de una carpeta se me complica, alguna ayudita?

Desde ya gracias!

Saludos


Hola PsYkE1, como ya sabe buscar en un archivo ... le estoy explicando  lo que le falta , o sea enumerar todos los archivos txt de una carpeta. para que los verifique con la funcion getvar (a la que el se refiere) dentro del while

Saludos ;)








Adrian Desanti

Psyke1


Bazzana

muchas gracias a ambos, pero la verdad no entendi como utilizarlo dessa, me podrias explicar un poco mas?

Yo utilizo la funcion getvar para obtener datos de x archivo de texto

de la siguiente manera:

Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
    Dim sSpaces As String, szReturn As String
    szReturn = ""
    sSpaces = Space$(EmptySpaces)
    GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
    GetVar = RTrim$(sSpaces)
    GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function

Private Sub Form_Load()

Archivo = "\Cuentas\" & FrmMain.File1.FileName
txtCuenta.Text = GetVar(App.Path & Archivo, "Numero de Cliente", "Cliente")
txtNombre.Text = GetVar(App.Path & Archivo, "Nombre Y Apellido", "Nombre")

End Sub


Es decir en el archivo busca asi:
[numero de cliente]
cliente="dato que toma"

Como podría adaptar eso a que lo haga en todos los archivos que se encuentran dentro del File1, osea dentro de una carpeta.

Ahora creo que me explique mejor

Desde ya muchas gracias!

Dessa

Haber si sirve;



Sub BuscarClienteNumero(nCliente As Variant)

txtCuenta.Text = ""
txtNombre.Text = ""

Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")


Do While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
    If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
       txtCuenta.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
       txtNombre.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
       Exit Do
    End If
  End If
  TeEquisTes = Dir
Loop

If txtCuenta.Text = "" Then txtCuenta.Text = "Sin Datos"
If txtNombre.Text = "" Then txtNombre.Text = "Sin Datos"


End Sub




Adrian Desanti

Bazzana

#7
La verdad que sigo intentando y no puedo, no me darias una ayuda por msn?

XXXXXXXXXXXXXXXX (msn)

desde ya muchas gracias

Moderador: no se pueden dejar direccciones de mail.

Dessa

Creá un proyecto nuevo, con Text1, Text2, Text3, Command1 (los archivos de textp se van a crear en el Load) e ingresa en Text1 un numero de cliente (1, 2 o 3 para que te de los datos) (4 o mas para que te de error) 



Option Explicit
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Sub Command1_Click()

  Call BuscarClienteNumero(Text1)

End Sub

Sub Form_Load()

If Dir(App.Path & "\Cuentas\", vbDirectory) = "" Then MkDir App.Path & "\Cuentas\"

If Dir(App.Path & "\Cuentas\1.txt") = "" Then
  Open (App.Path & "\Cuentas\1.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 1": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Eduardo"
  Close #1
End If
If Dir(App.Path & "\Cuentas\2.txt") = "" Then
  Open (App.Path & "\Cuentas\2.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 2": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Guille"
  Close #1
End If
If Dir(App.Path & "\Cuentas\3.txt") = "" Then
  Open (App.Path & "\Cuentas\3.txt") For Output As #1
    Print #1, "[Numero de Cliente]": Print #1, "Cliente = 3": Print #1, "[Nombre Y Apellido]": Print #1, "Nombre = Paco"
  Close #1
End If

Text1 = "Ingresá nCliente"
Text2 = ""
Text3 = ""

Command1.Caption = "Buscar"

End Sub
Function GetVar(ByVal file As String, ByVal Main As String, ByVal Var As String, Optional EmptySpaces As Long = 1024) As String
    Dim sSpaces As String, szReturn As String
    szReturn = ""
    sSpaces = Space$(EmptySpaces)
    GetPrivateProfileString Main, Var, szReturn, sSpaces, EmptySpaces, file
    GetVar = RTrim$(sSpaces)
    GetVar = Left$(GetVar, Len(GetVar) - 1)
End Function

Sub BuscarClienteNumero(nCliente As Variant)

Text2.Text = ""
Text3.Text = ""

Dim TeEquisTes As String
TeEquisTes = Dir(App.Path & "\Cuentas\")


Do While TeEquisTes <> ""
  If InStr(1, LCase$(TeEquisTes), ".txt") > 0 Then
    If GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente") = nCliente Then
       Text2.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Numero de Cliente", "Cliente")
       Text3.Text = GetVar(App.Path & "\Cuentas\" & TeEquisTes, "Nombre Y Apellido", "Nombre")
       Exit Do
    End If
  End If
  TeEquisTes = Dir
Loop

If Text2.Text = "" Then Text2.Text = "Sin Datos"
If Text3.Text = "" Then Text3.Text = "Sin Datos"

End Sub







Adrian Desanti

Bazzana

mmm pasa que yo antes no me exprese bien

Lo que estoy tratando de hacer es un programa, de cuentas corrientes, donde lleva diferentes datos,

ejeplo:
1.dat

[Numero de Cliente]
Cliente=1

[Nombre Y Apellido]
Nombre=Ejemplo

[Teléfono]
Teléfono=Ejemplo

[Domicilio]
Domicilio=Ejemplo

[Documento]
Documento=Ejemplo

[Saldo]
Debe=370

[Proximas Visitas]
Proximo Pago=02/06/2010
Proxima Visita=28/05/2010

Y el que me requirio el programa, me pido que agrege una funcion, con la cual, a el le muestre la gente que tiene que ir a cobrar el dia de hoy y la gente que tiene que visitar, junto con su direccion y telefono, e ingresarsela en un textbox asi luego le manda imprimir desde otro boton y obtiene la gente que tiene que visitar ese dia.