Scrip Leer 2 Archivos para comparar si existe un Valor

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.
computers_ver
Posts: 2
Joined: 09 Jul 2019, 20:20
Google: [email protected]

Scrip Leer 2 Archivos para comparar si existe un Valor

09 Jul 2019, 20:33

Buen dia...

estoy intentando realizar una lectura de 2 archivos CVS separados por Comas,,, los cuales cada uno podria contener unas 35000 lineas y en cada linea unos 10 campos separados por Coma(,)...

La idea es a travez de alguna rutina ingresar un texto el cual sera buscado en los dos archivos


SI lo encuentra en el primer archivo mandar un mensaje que diga se encontro el dato en el primer archivo
si lo encuentra en el segundo archivo mandar un mensaje que se encuentro en el segundo archivo
Si no lo encuentra, pues indicar que no existe en ninguno de los anteriores archivos

tengo pensado que en un textbox ingresar el valor a buscar y en un boton mandar a llamar el procedimiento donde busque..

Encontre este fracmento de codigo pero no lo he logrado adapar, pues solo lee un archivo, faltaria el segundo y los mensajes si se ecnuentra o no


Loop, read, C:\Intel\CuentasContables.csv
{
Loop, parse, A_LoopReadLine, %A_Tab%
{
Haystack := A_Loopfield
Needle := txtVar
IfInString, Haystack, %Needle%
{
MsgBox, Cuenta ya Existete en el Rubro para Contabilidad Electronica
Gosub, lopNL
}
else
Sleep, 1
}

}

Saludos
Nelson
User avatar
Flipeador
Posts: 1112
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Scrip Leer 2 Archivos para comparar si existe un Valor

09 Jul 2019, 22:52

Hola!
Prueba este codigo, esta muy feo (porque no uso AHKv1), pero tal vez te funcione:

Code: Select all

#NoEnv
SetBatchLines -1
#SingleInstance Force

Gui Add, Edit, w450 hwnde1, C:\Intel\CuentasContables.csv
Gui Add, Edit, w450 hwnde2, C:\Intel\CuentasContables2.csv
Gui Add, Edit, w450 hwnde3, Texto a buscar

Gui Add, Button, gComprobar, Comprobar
Gui Add, Text, w450, Resultado: No existe en ninguno de los archivos.

Gui Show
return

GuiClose:
ExitApp
return

Comprobar:
ControlGetText f1, Edit1, A
ControlGetText f2, Edit2, A
ControlGetText txt, Edit3, A
FileRead f1txt, %f1%
found := 0
loop parse, f1txt, CSV
{
    if (txt = A_LoopField)
    {
        ControlSetText Static1, Resultado: Se encontro el dato en el primer archivo., A
        found := 1
        break
    }
}
FileRead f2txt, %f2%
loop parse, f2txt, CSV
{
    if (txt = A_LoopField)
    {
        ControlSetText Static1, Resultado: Se encontro el dato en el segundo archivo., A
        found := 1
        break
    }
}
if (!found)
    ControlSetText Static1, Resultado: No existe en ninguno de los archivos., A
f1txt := f2txt := ""
return
computers_ver
Posts: 2
Joined: 09 Jul 2019, 20:20
Google: [email protected]

Re: Scrip Leer 2 Archivos para comparar si existe un Valor

10 Jul 2019, 21:41

hice los cambios pero no logro hacer que funcione
la informacion que llevan los cvs es la siguiente


A&G9902243N5 ALANIS & GUERRA Y ASOCIADOS SC M NO LOCALIZADOS 01/01/2014
A&T0307096Q3 ADUANEROS & TRAMITADORES DE MANZANILLO SC M NO LOCALIZADOS 01/01/2014
AAA010528159 ACYRSA AIRE ACONDICIONADO Y REFRIGERACION SA DE CV M NO LOCALIZADOS 01/01/2014
AAA0803076I4 ACUICOLA EL ABULON AZUL S.P.R. DE R.L. M NO LOCALIZADOS 01/01/2014
AAA080827FP9 AZCARRAGA Y AGUILAR ASOCIADOS SC M NO LOCALIZADOS 01/01/2014



A&G9902243N5 ALANIS & GUERRA Y ASOCIADOS SC M NO LOCALIZADOS 01/01/2014
A&T0307096Q3 ADUANEROS & TRAMITADORES DE MANZANILLO SC M NO LOCALIZADOS 01/01/2014
AAA010528159 ACYRSA AIRE ACONDICIONADO Y REFRIGERACION SA DE CV M NO LOCALIZADOS 01/01/2014
AAA0803076I4 ACUICOLA EL ABULON AZUL S.P.R. DE R.L. M NO LOCALIZADOS 01/01/2014
AAA080827FP9 AZCARRAGA Y AGUILAR ASOCIADOS SC M NO LOCALIZADOS 01/01/2014


(Primer bloque de datos son primer archivo y el segundo bloque seria el segundo archivo)
Ejmplo seria buscar este Dato: AAA0803076I4

enteoria en ambos archivos deberia estar...

Saludos
User avatar
Flipeador
Posts: 1112
Joined: 15 Nov 2014, 21:31
GitHub: Flipeador
Location: Argentina
Contact:

Re: Scrip Leer 2 Archivos para comparar si existe un Valor

11 Jul 2019, 01:16

El código queda cada vez mas feo :lolno:

Code: Select all

#NoEnv
SetBatchLines -1
#SingleInstance Force

Gui Add, Edit, w450 hwnde1, C:\Intel\CuentasContables.csv
Gui Add, Edit, w450 hwnde2, C:\Intel\CuentasContables2.csv
Gui Add, Edit, w450 hwnde3, Texto a buscar

Gui Add, Button, gComprobar, Comprobar
Gui Add, Text, w450, Resultado: No existe en ninguno de los archivos.

Gui Show
return

GuiClose:
ExitApp
return

Comprobar:
ControlGetText f1, Edit1, A
ControlGetText f2, Edit2, A
ControlGetText txt, Edit3, A
FileRead f1txt, %f1%
found := 0
loop parse, f1txt, `r, `n
{
    if (InStr(A_Space . A_LoopField . A_Space, A_Space . txt . A_Space))
    {
        found := 1
        break
    }
}
FileRead f2txt, %f2%
loop parse, f2txt, `r, `n
{
    if (InStr(A_Space . A_LoopField . A_Space, A_Space . txt . A_Space))
    {
        found += 2
        break
    }
}
found := !found ? "No existe en ninguno de los archivos"
       : found == 1 ? "Se encontro el dato en el primer archivo"
       : found == 2 ? "Se encontro el dato en el segundo archivo"
       : "Se encontro el dato en ambos archivos"
ControlSetText Static1, Resultado: %found%., A
f1txt := f2txt := ""
return
¿El primer dato es el que importa?.

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 3 guests