Hola, estoy intentando hacer un script que me permita filtrar informacion de una base de datos que copio de una aplicacion en Java atraves de un escritorio remoto.
Mi proposito es que con el codigo mediante una serie de variables que yo eligo entre toda la info de dicha web, me cree un panel con solo la informacion que necesitio visualizar y digamos desheche toda la que no me es relevante.
Esto que quiero hacer ya lo he conseguido anteriormente con otra aplicacion, pero dicha aplicacion digamos que la info de cada variable estaba en la misma linea de codigo de dicha pagina
Me explico, una opcion que copiaba era por ejemplo el apellido o nombre de una persona, pero dicha info estaba a continuacion de la variable y no "debajo" como sale ahora
El caso es que ahora no me recopila la info pq en esta aplicacion como adjunto en los ejemplos la info la gran mayoria no sale a continuacion sino debajo.
Una vez que tengo la info en las variables la vuelco en un panel como este para asi en una vision mas reducida tener todos los datos que tengo que visualizar sin tener que buscarlos por toda la web.
No se si me he explicado bien.
PD: No puedo poner mas info por politica de proteccion de datos.
Ayuda con macro
Moderator: Flipeador
Ayuda con macro
Last edited by ringmaker on 07 May 2017, 04:27, edited 1 time in total.
Re: Ayuda con macro
Hola, no te entiendo.
Intenta explicarte lo mejor que puedas, pon imágenes y algún script que tengas echo de momento, comentando las partes que no funcionan.
Intenta explicarte lo mejor que puedas, pon imágenes y algún script que tengas echo de momento, comentando las partes que no funcionan.
Re: Ayuda con macro
Hola, aquí te pongo ejemplo de las variables y de parte del panel de la macro.
CopiaOrder:
;;;;;;;;;;*******************
Order := copia()
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR = %SubPat1%
RegExMatch(Order, "Tarea en Error (.+)", SubPat)
TERROR = %SubPat1%
RegExMatch(Order, "SFID (.+)", SubPat)
SFID = %SubPat1%
RegExMatch(Order, "Nombre de cliente (.+)", SubPat)
NOMBRECLIENTE = %SubPat1%
InfoPanel:
Gui 2: Destroy
Gui 2: +AlwaysOnTop
Gui 2: font, s08+, Verdana
Gui 2: Add, Text, , Orderid:
Gui 2: Add, Text, , Error:
Gui 2: Add, Text, , Terror:
Gui 2: Add, Edit, vOrderid ym, %ORDERID%
Gui 2: Add, Edit, vError, %ERROR%
Gui 2: Add, Edit, vTerror, %TERROR%
La info se extrae de una aplicación dentro de un centro remoto y el problema es que la info de las variables en vez de estar en la misma línea está en la línea siguiente.
CopiaOrder:
;;;;;;;;;;*******************
Order := copia()
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR = %SubPat1%
RegExMatch(Order, "Tarea en Error (.+)", SubPat)
TERROR = %SubPat1%
RegExMatch(Order, "SFID (.+)", SubPat)
SFID = %SubPat1%
RegExMatch(Order, "Nombre de cliente (.+)", SubPat)
NOMBRECLIENTE = %SubPat1%
InfoPanel:
Gui 2: Destroy
Gui 2: +AlwaysOnTop
Gui 2: font, s08+, Verdana
Gui 2: Add, Text, , Orderid:
Gui 2: Add, Text, , Error:
Gui 2: Add, Text, , Terror:
Gui 2: Add, Edit, vOrderid ym, %ORDERID%
Gui 2: Add, Edit, vError, %ERROR%
Gui 2: Add, Edit, vTerror, %TERROR%
La info se extrae de una aplicación dentro de un centro remoto y el problema es que la info de las variables en vez de estar en la misma línea está en la línea siguiente.
Re: Ayuda con macro
a ver si nos entendemos...
Quieres extraer ciertos datos de un texto. Este texto (información) lo obtienes de una aplicación WEB. Hasta ahí entiendo, ahora:
En tu último comentario no me has explicado nada... ese script que has puesto no me dice nada y no le veo ninguna relación con lo que me estás contando.
Cuando te dije que me pongas un script de ejemplo, la idea era que pongas una parte de la información original donde esté a su vez la parte que quiere recuperar, lo que ocurre cuando intentas copiar la información, lo que esperas que ocurra cuando copias la información, y finalmente que parte de toda la información quieres recuperar; por lo menos en pseudocódigo comentado...
Te recomiendo que vuelvas a escribir tu pregunta (edita tu primer mensaje) comentando paso por paso lo que quieres hacer y como.
Tal vez sea únicamente yo el que no te entienda, tal vez no, asi que para no hacerte perder tiempo a ti ni a mí intentando adivinar durante 1h que quieres hacer, formula bien tu pregunta y nos ahorras trabajo y tiempo a todos.
Quieres extraer ciertos datos de un texto. Este texto (información) lo obtienes de una aplicación WEB. Hasta ahí entiendo, ahora:
¿Como es eso de que no está en la misma línea?, ¿que línea?, ¿que variable?...El problema es que la info de la variable no está en la misma línea porque la aplicación está en Java y la info la pone dentro de un recuadro.
En tu último comentario no me has explicado nada... ese script que has puesto no me dice nada y no le veo ninguna relación con lo que me estás contando.
Cuando hago control+a para copiar toda la página y que pille las variables para pegarlas en la macro no las pilla porque salen como en la fila siguiente y no en la de la variable.
Cuando te dije que me pongas un script de ejemplo, la idea era que pongas una parte de la información original donde esté a su vez la parte que quiere recuperar, lo que ocurre cuando intentas copiar la información, lo que esperas que ocurra cuando copias la información, y finalmente que parte de toda la información quieres recuperar; por lo menos en pseudocódigo comentado...
Te recomiendo que vuelvas a escribir tu pregunta (edita tu primer mensaje) comentando paso por paso lo que quieres hacer y como.
Tal vez sea únicamente yo el que no te entienda, tal vez no, asi que para no hacerte perder tiempo a ti ni a mí intentando adivinar durante 1h que quieres hacer, formula bien tu pregunta y nos ahorras trabajo y tiempo a todos.
Re: Ayuda con macro
Ya he vuelto a editar el primer post a ver si asi me explico mejor, disculpa.
Re: Ayuda con macro
No es necesario que me pongas la información correcta, ya que es solo un ejemplo, podrías haber inventado la información, la idea era saber como estaba organizada y que partes querías recuperar...PD: No puedo poner mas info por politica de proteccion de datos.
Ese 'panel' es un poco confuso, solo veo que acepte números, vamos, que ahí mucha información no entra.Una vez que tengo la info en las variables la vuelco en un panel como este
Ahora si te he entendido mejor.
Tu antes tenías algo como:
Code: Select all
Variable Valor
Code: Select all
Variable
Valor
Code: Select all
Gui, New, -DPIScale -Resize, AutoHotkey Window
Gui, Add, Edit, x8 y24 w761 h161 HWNDhEdit1, ######`n239483`nFabricante`nN/A`n$$$$$$`n99992898
Gui, Add, Edit, x8 y216 w761 h161 HWNDhEdit2
Gui, Add, Text, x8 y0 w761 h20, Información sin procesar:
Gui, Add, Text, x8 y192 w761 h20, Información procesada:
Gui, Add, Button, x441 y384 w208 h23 gDo, Procesar información
Gui, Add, Button, x670 y383 w101 h23 gGuiClose, Cerrar
Gui, Show, w781 h415
Return
GuiClose:
ExitApp
return
Do:
ControlGetText, Text,, ahk_id %hEdit1%
; ##########################################################################################
Text2 := StrSplit(Text, "`n", "`r")
Loop, Parse, % Text, `n, `r
{
Tmp := Trim(A_LoopField)
; Fabricante -- para 'filtrar' más información, solo copia este if {...} y pegalo abajo cambiando 'Fabricante' por la otra 'Variable'.
if (Tmp = "Fabricante")
{
NewText .= "`n" . Tmp . ": " . Text2[A_Index + 1]
}
}
; ##########################################################################################
ControlSetText,, % Trim(NewText), ahk_id %hEdit2%
NewText := Text := Text2 := ""
return
Re: Ayuda con macro
No es eso exactamente lo que busco(al menos el panel que me has expuesto aqui), necesito que directamente al abrir el panel ya me salgan cada variable con su valor de manera inmediata como lo hacia con el otro panel. Es por tema de rapidez pq necesito filtrar dicha info al instante y son unas 40 variables con su informacion correspondiente.
Con esta opcion que indico debajo de codigo no se puede añadir algo para que la busqueda la haga en la linea siguiente en vez de acontinuacion?
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR = %SubPat1%
"Order" digamos que es como tiene el inicio del nombre la app para que busque en el copiado dicha parte que indico...
Con esta opcion que indico debajo de codigo no se puede añadir algo para que la busqueda la haga en la linea siguiente en vez de acontinuacion?
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR = %SubPat1%
"Order" digamos que es como tiene el inicio del nombre la app para que busque en el copiado dicha parte que indico...
Re: Ayuda con macro
Code: Select all
Order := "Línea 1`nLínea 2`nTaskErrorDescription`n0x10 0x20`nNombre de cliente`n0x40 0x50`nEnd."
RegExMatch(Order, "i)TaskErrorDescription(\n.+)", SubPat)
MsgBox % "_" . Trim(SubPat1, "`n") . "_"
RegExMatch(Order, "i)Nombre de cliente(\n.+) *", SubPat)
MsgBox % "_" . Trim(SubPat1, "`n") . "_"
Code: Select all
Order := "Línea 1`nLínea 2`nTaskErrorDescription`n0x10 0x20`nNombre de cliente`n0x40 0x50`nEnd."
RegExMatch(Order, "ims)TaskErrorDescription(.+?\n)", SubPat)
MsgBox % "_" . Trim(SubPat1, "`n") . "_"
RegExMatch(Order, "ims)Nombre de cliente(.+?\n)", SubPat)
MsgBox % "_" . Trim(SubPat1, "`n") . "_"
Edito*
He encontrado esta herramienta online, parece muy útil, aquí esta el el manual.
Re: Ayuda con macro
Te has liado lol
TaskError es una variable diferente del programa y nombre de cliente otra.
No entiendo para que esto Order := "TaskErrorDescription`n0x10 0x20`nNombre de cliente`n0x40 0x50"
TaskError es una variable diferente del programa y nombre de cliente otra.
No entiendo para que esto Order := "TaskErrorDescription`n0x10 0x20`nNombre de cliente`n0x40 0x50"
Re: Ayuda con macro
Este seria el código:
Code: Select all
ResetVar:
Order = 0
RECORTES = 0
ERROR = 0
TERROR = 0
SFID = 0
NOMBRECLIENTE = 0
CIF = 0
CIUDAD = 0
PROVINCIA = 0
CODIGOPOSTAL = 0
CALLE = 0
NUMERO = 0
PISO = 0
LETRA = 0
NOTASDIRECCION = 0
GESCAL = 0
TCALLE = 0
TBLOQUE = 0
NBLOQUE = 0
BIS = 0
ESCALERA = 0
MANO = 0
MANO2 = 0
GESCAL37 = 0
NPORTAL = 0
PORTAL = 0
VFH = 0
MODALIDAD = 0
ONT = 0
CAPACIDAD= 0
IUA = 0
FIJO = 0
CONTACTO = 0
CONTACTO2 = 0
return
CopiaOrder:
;;;;;;;;;;*******************
Order := copia()
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Tarea en Error (.+)", SubPat)
TERROR := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "SFID (.+)", SubPat)
SFID := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Nombre de cliente (.+)", SubPat)
NOMBRECLIENTE := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "CIF (.+)", SubPat)
CIF := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Ciudad (.+)", SubPat)
CIUDAD := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Provincia (.+)", SubPat)
PROVINCIA := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Código Postal (.+)", SubPat)
CODIGOPOSTAL := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Calle (.+)", SubPat)
CALLE := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Número/Portal (.+)", SubPat)
NUMERO := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Piso (.+)", SubPat)
PISO := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Letra (.+)", SubPat)
LETRA := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Notas de Dirección (.+)", SubPat)
NOTASDIRECCION := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Código GESCAL (.+)", SubPat)
GESCAL := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Tipo de la vía (.+)", SubPat)
TCALLE := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Tipo de Bloque (.+)", SubPat)
TBLOQUE := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Numero de Bloque (.+)", SubPat)
NBLOQUE := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Bis Duplicado (.+)", SubPat)
BIS := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Escalera (.+)", SubPat)
ESCALERA := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Mano (.+)", SubPat)
MANO := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Mano2 (.+)", SubPat)
MANO2 := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "GESCAL37 (.+)", SubPat)
GESCAL37 := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Numero Portal Puerta (.+)", SubPat)
NPORTAL := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Portal Puerta(.+)", SubPat)
PORTAL := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Login de datos (.+)", SubPat)
VFH := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Modalidad (.+)", SubPat)
MODALIDAD := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Password de ONT (.+)", SubPat)
ONT := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Codigo IUA (.+)", SubPat)
IUA := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Capacidad (.+)", SubPat)
CAPACIDAD := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "TelephoneNumber (.+)", SubPat)
FIJO := StrSplit(SubPat1, "`n")[2]
RegExMatch(Order, "Teléfono (.+)", SubPat)
CONTACTO = %SubPat1%
RegExMatch(Order, "Teléfono secundario (.+)", SubPat)
CONTACTO2 := StrSplit(SubPat1, "`n")[2]
return
InfoPanel:
Gui 2: Destroy
Gui 2: +AlwaysOnTop
Gui 2: font, s08+, Verdana
Gui 2: Add, Text, , Orderid:
Gui 2: Add, Text, , Error:
Gui 2: Add, Text, , Terror:
Gui 2: Add, Text, , Sfid:
Gui 2: Add, Text, , Nombrecliente:
Gui 2: Add, Text, , Cif:
Gui 2: Add, Text, , Ciudad:
Gui 2: Add, Text, , Provincia:
Gui 2: Add, Text, , Codigopostal:
Gui 2: Add, Text, , Calle:
Gui 2: Add, Text, , Numero:
Gui 2: Add, Text, , Piso:
Gui 2: Add, Text, , Letra:
Gui 2: Add, Text, , Notasdireccion:
Gui 2: Add, Text, , Gescal:
Gui 2: Add, Text, , Tcalle:
Gui 2: Add, Text, , Tbloque:
Gui 2: Add, Text, , Nbloque:
Gui 2: Add, Text, , Bis:
Gui 2: Add, Text, , Escalera:
Gui 2: Add, Text, , Mano:
Gui 2: Add, Text, , Mano2:
Gui 2: Add, Text, , Gescal37:
Gui 2: Add, Text, , Portal:
Gui 2: Add, Text, , Vf:
Gui 2: Add, Text, , Modalidad:
Gui 2: Add, Text, , Ont:
Gui 2: Add, Text, , Capacidad:
Gui 2: Add, Text, , Iua:
Gui 2: Add, Text, , Fijo:
Gui 2: Add, Text, , Contacto:
Gui 2: Add, Text, , Contacto2:
Gui 2: Add, Edit, vOrderid ym, %ORDERID%
Gui 2: Add, Edit, vError, %ERROR%
Gui 2: Add, Edit, vTerror, %TERROR%
Gui 2: Add, Edit, vSfid, %SFID%
Gui 2: Add, Edit, vNombrecliente, %NOMBRECLIENTE%
Gui 2: Add, Edit, vCif, %CIF%
Gui 2: Add, Edit, vPCiudad, %CIUDAD%
Gui 2: Add, Edit, vPProvincia, %PROVINCIA%
Gui 2: Add, Edit, vPCodigopostal, %CODIGOPOSTAL%
Gui 2: Add, Edit, vPCalle, %CALLE%
Gui 2: Add, Edit, vPNumero, %NUMERO%
Gui 2: Add, Edit, vPPiso, %PISO%
Gui 2: Add, Edit, vPLetra, %LETRA%
Gui 2: Add, Edit, vPNotasdireccion, %NOTASDIRECCION%
Gui 2: Add, Edit, vPGescal, %GESCAL%
Gui 2: Add, Edit, vPTcalle, %TCALLE%
Gui 2: Add, Edit, vPTbloque, %TBLOQUE%
Gui 2: Add, Edit, vPNbloque, %NBLOQUE%
Gui 2: Add, Edit, vPBis, %BIS%
Gui 2: Add, Edit, vPEscalera, %ESCALERA%
Gui 2: Add, Edit, vPMano, %MANO%
Gui 2: Add, Edit, vPMano2, %MANO2%
Gui 2: Add, Edit, vPGescal37, %GESCAL37%
Gui 2: Add, Edit, vPPORTAL, %PORTAL%
Gui 2: Add, Edit, vPVf, %VFH%
Gui 2: Add, Edit, vPModalidad, %MODALIDAD%
Gui 2: Add, Edit, vPOnt, %ONT%
Gui 2: Add, Edit, vPCapacidad, %CAPACIDAD%
Gui 2: Add, Edit, vPIua, %IUA%
Gui 2: Add, Edit, vPFijo, %FIJO%
Gui 2: Add, Edit, vPContacto, %CONTACTO%
Gui 2: Add, Edit, vPContacto2, %CONTACTO2%
Gui 2: Show, , InfoPanel
return
Re: Ayuda con macro
Fue solo un ejemplo de la expresión regular. Deberías definir 'Variable', siento que estamos aplicando conceptos diferentes.TaskError es una variable diferente del programa y nombre de cliente otra.
Se supone que la Variable 'Order' contiene la información de la que deseas filtrar ciertos datos, ¿no?.No entiendo para que esto Order := "TaskErrorDescription`n0x10 0x20`nNombre de cliente`n0x40 0x50"
Es lo que utilizas en Order := copia(), te lo puse como ejemplo, si no, como quieres que pruebe si funciona o no...
En el código que me has pasado, estas utilizando esto:
Code: Select all
RegExMatch(Order, "TaskErrorDescription(.+)", SubPat)
ERROR := StrSplit(SubPat1, "`n")[2]
Code: Select all
RegExMatch(Order, "ims)TaskErrorDescription(.+?\n)", SubPat)
ERROR := Trim(SubPat1, "`n")
Por cierto, tu código y GUI se vería mucho mejor si utilizaras objetos y un control ListView.
Re: Ayuda con macro
Eso será el siguiente paso que se autoajuste en tamaño o separarlos en dos columnas
Re: Ayuda con macro
Algo así:
Code: Select all
Items := {Order: 0, RECORTES: 0, ERROR: 0, TERROR: 0, SFID: 0, NOMBRECLIENTE: 0, CIF: 0, CIUDAD: 0, PROVINCIA: 0, CODIGOPOSTAL: 0, CALLE: 0, NUMERO: 0, PISO: 0, LETRA: 0, NOTASDIRECCION: 0, GESCAL: 0, TCALLE: 0, TBLOQUE: 0, NBLOQUE: 0, BIS: 0, ESCALERA: 0, MANO: 0, MANO2: 0, GESCAL37: 0, NPORTAL: 0, PORTAL: 0, VFH: 0, MODALIDAD: 0, ONT: 0, CAPACIDAD: 0, IUA: 0, FIJO: 0, CONTACTO: 0, CONTACTO2: 0}
Gui, New, HWNDhMain -DPIScale, AutoHotkey Window
Gui, Add, ListView, x2 y2 w500 h300 HWNDhLV, Item|Valor
try DllCall("UxTheme.dll\SetWindowTheme", "Ptr", hLV, "Str", "Explorer", "Ptr", 0)
Gui, Add, Button, x2 y304 w100 h25 gCargar, Cargar
Gui, Show, w504 h332
Mostrar:
LV_Delete()
for Item, Value in Items
LV_Add(, Item, Value)
LV_ModifyCol(1, "AutoHdr")
return
Cargar:
Order := copia()
RegExMatch(Order, "ims)Nombre de cliente\s+(.+?\n)", SubPat)
Items.ERROR := Trim(SubPat1, "`n")
Gosub Mostrar
return
copia() {
return "************** `n ************** `n Nombre de cliente `n X-XXX-XXX `n *************** `n *************"
}
Who is online
Users browsing this forum: No registered users and 25 guests