Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Problema azzeramento variabili, dopo refresh pagina web

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Problema azzeramento variabili, dopo refresh pagina web

Postdi templare77 » 28/08/16 00:33

Ciao Anthony,
torno a disturbare... :roll:
Ho questo tipo di problema....dopo aver trovato il mio incontro di calcio, alla pagina http://www.hot-odds.com/DroppingOdds, cliccando sopra il link dell'incontro stesso, si accede ad una pagina che mostra il conto alla rovescia inerente all'inizio della partita.
Qui, devo prendere i valori della cella "Average" di alcuni mercati (1x2, Under/over ecc..), il problema è che questa pagina si refresha ogni 30 secondi. Dopo tale refresh, in una ipotetica collezione
Codice: Seleziona tutto
Set mycoll_tab= ie.document.getelementsbytagname("table")
, si azzerano i valori....ossia prima del refresh magari avevo 20 elementi in mycoll, dopo il refresh ne ho zero....io credevo che una volta acquisiti, questi valori rimanessero fissi negli array, invece sembra permanere una sorta di filo diretto fra il document e la variabile della collezione.....c'è un modo per evitare la perdita di questi dati contenuti nella variabile mycoll dopo il refresh? Ti ringrazio! :aaah :aaah :aaah
templare77
Utente Junior
 
Post: 98
Iscritto il: 18/04/16 06:26

Sponsor
 

Re: Problema azzeramento variabili, dopo refresh pagina web

Postdi templare77 » 28/08/16 01:29

In più, sempre nella pagina col conto alla rovescia, cliccando su Under / Over, non riesco a cambiare il valore del menu a tendina da 0.5 ad una altro valore....ho provato con questo codice, ma non succede nulla

Codice: Seleziona tutto
Set sel = ie.document.getelementsbytagname("select")
For Each elem In sel
    If elem.classname = "custom" Then
        elem.Value = "1.5"
        elem.fireevent ("onchange")
        Exit For
    End If
Next elem
templare77
Utente Junior
 
Post: 98
Iscritto il: 18/04/16 06:26

Re: Problema azzeramento variabili, dopo refresh pagina web

Postdi templare77 » 29/08/16 23:25

Ciao Anthony, dopo giorni di prove ho risolto il problema di cambiare valore del menu a tendina dopo aver cliccato su Under/Over...

Ora rimarrebbe il problema del refresh che mi cancella i dati delle collezioni ottenute con getelementsbytagname....dovrei finire le mie elaborazioni entro i 30 secondi... Sarebbe un problema se le mie ricerche impiegassero più di questo tempo....dovrei tornare indietro nel codice e riprendere da dove si era interrotta l'elaborazione a causa del refresh....a meno che non ci sia l'opportunità in qualche modo, di evitare che la collezione venga resettata dal refresh....
templare77
Utente Junior
 
Post: 98
Iscritto il: 18/04/16 06:26

Re: Problema azzeramento variabili, dopo refresh pagina web

Postdi Anthony47 » 30/08/16 01:50

Vedo che sei andato avanti da solo, bene...
Comunque, la risposta al problema del Set la trovi nell'help on line del vba:
L'help-on-line del vba ha scritto: In genere, se viene utilizzata l'istruzione Set per assegnare a una variabile un riferimento a un oggetto, per tale variabile non verrà creata nessuna copia dell'oggetto. Verrà invece creato un riferimento all'oggetto. Più variabili oggetto possono fare riferimento allo stesso oggetto. Dato che queste variabili sono dei riferimenti e non copie dell'oggetto, qualsiasi modifica dell'oggetto verrà apportata anche alle variabili che si riferiscono all'oggetto
Quindi mycoll_tab non e' una variabile ma solo un pointer agli elementi dell' IE.document.
Se sai che il document puo' venire rinfrescato allora devi prelevare da ie.document quel che ti serve e memorizzarlo in vere variabili.

Quanto al secondo problema (quello che hai risolto), premesso che puoi indirizzare quell'elemento col suo ID= "SelectedLine", trattandosi di un Select con relativo menu ad opzioni non puoi lavorare sul "Value" ma devi impostare il valore da selezionare.
Questo alla fine io l'ho fatto tramite:
Codice: Seleziona tutto
myValIndex = 4                           '<<< La voce da selezionare, da 0 in avanti
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123  '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")

La parte "= 123" nella riga marcata *** non so a che serve, ma se mi limito a dare il comando allora l'editor mi segnala "Errore di compilazione / Previsto: =". Boh...

Rimane il problema che se avviene un refresh tra la riga in cui assegno un valore e la riga del FireEvent allora l'evento non modifca l'impostazione del select; a naso mi sembrerebbe che ripetendo i comandi dovrebbe funzionare:
Codice: Seleziona tutto
myValIndex = 4                           '<<< La voce da selezionare, da 0 in avanti
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123  '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")
'Repetita iuvant:
ie.document.getElementById("SelectedLine").getElementsByTagName("option")(myValIndex).setAttribute("selected", "selected") = 123  '***
ie.document.getElementById("SelectedLine").FireEvent ("onchange")
O la prima o la seconda volta dovrebbe funzionare...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Problema azzeramento variabili, dopo refresh pagina web

Postdi templare77 » 30/08/16 02:29

Sei eccezionale! Grazie!
templare77
Utente Junior
 
Post: 98
Iscritto il: 18/04/16 06:26


Torna a Applicazioni Office Windows


Topic correlati a "Problema azzeramento variabili, dopo refresh pagina web":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti