Newsgroup: it.comp.appl.access
Titolo: Aggiornamento lstbox e ciclo Do

Salve a tutti del nsg.
Premetto che quello utilizzato sicuramente non è il metodo migliore, ma a
volte ci sono vincoli da rispettare!
Ho una tabella contenente le aste (tratti componenti) di un reticolo
idrografico (fiume) con i campi Indice, F_node_X, F_node_Y, T_node_X,
T_node_Y, Connect, Counter_loop + altri che per il momento non interessano.
Devo verificare la connessione delle aste fra loro.
Seleziono l' asta contenente la foce e riesco a verificare la connessione
delle prime aste afferenti a quella contenente la foce. Per queste ultime
imposto che il contenuto del campo connect sia 1 e il campo Counter_loop a
1.
Ora vorrei che ciclicamente il DB selezionasse le aste connesse (valore 1
del campo connect) e per ogni asta connessa ricercasse i punti delle aste
non connesse e per quelle che rientrano nel criterio imposti a 1 il campo
connect e a 2 il campo Counter_loop. A questo punto il ciclo deve
selezionare le aste connesse con Counter_loop = 2 e verificare la
connessione e impostare a 1 e 3 i rispettivi campi. Ho utilizzato due
lstbox, una contenente i nodi From e To delle aste (perchè possono essere
stati inseriti anche in ordine inverso) connesse e l' altra contenente i
nodi delle aste non connesse. Ho scritto il seguente codice:
Dim w As Integer
w = 1
'Elenco dei nodi delle aste connesse
Me.Elenco28.RowSource = "SELECT 1 As Prog, Indice, Export.F_node_X As X, " &
_
                       "Export.F_node_Y As Y " & _
                       "FROM Export WHERE (Export.Connect = 1 AND Export.Counter_loop = " & _
                       w & ") " & _
                       "UNION SELECT 2 As Prog, Indice, Export.T_node_X As X, " & _
                       "Export.T_node_Y As Y " & _
                       "FROM Export WHERE (Export.Connect = 1 AND Export.Counter_loop = " & _
                       w & ");"
'Elenco dei nodi delle aste non connesse
Me.Elenco38.RowSource = "SELECT 1 As Prog, Indice, Export.F_node_X As X, " &
_
                       "Export.F_node_Y As Y " & _
                       "FROM Export WHERE (Export.Connect Is Null) " & _
                       "UNION SELECT 2 As Prog, Indice, Export.T_node_X As X, " & _
                       "Export.T_node_Y As Y " & _
                       "FROM Export WHERE (Export.Connect Is Null);"
'Per ogni nodo appartenente ad un' asta connessa si scorre la lista dei nodi
'appartenenti alle aste non connesse. Se presente imposta l' asta come
connessa.
'Il loop continua finché non compaiono più nodi di aste connesse nella lista
dei
'nodi di aste non connesse.
Dim varItem2 As Variant
Dim n As Integer
Dim r As Integer
Do
r = 0
Seleziona_lstbox Me.Elenco28
For Each varItem2 In Me.Elenco28.ItemsSelected
    Seleziona_lstbox Me.Elenco38
    For n = 0 To Me.Elenco38.ListCount - 1
        If Me.Elenco28.Column(2, varItem2) = Me.Elenco38.Column(2, n) And _
           Me.Elenco28.Column(3, varItem2) = Me.Elenco38.Column(3, n) Then
           r = 1
           DoCmd.RunSQL ("UPDATE Export SET Connect = 1 WHERE (F_node_X = " & _
                        Me.Elenco28.Column(2, varItem2) & _
                        " AND F_node_Y = " & Me.Elenco28.Column(3, varItem2) & ");")
           DoCmd.RunSQL ("UPDATE Export SET Connect = 1 WHERE (T_node_X = " & _
                        Me.Elenco28.Column(2, varItem2) & _
                        " AND T_node_Y = " & Me.Elenco28.Column(3, varItem2) & ");")
           DoCmd.RunSQL ("UPDATE Export SET Counter_loop = " & _
                        w & " WHERE (F_node_X = " & _
                        Me.Elenco28.Column(2, varItem2) & _
                        " AND F_node_Y = " & Me.Elenco28.Column(3, varItem2) & ");")
           DoCmd.RunSQL ("UPDATE Export SET Counter_loop = " & _
                        w & " WHERE (T_node_X = " & _
                        Me.Elenco28.Column(2, varItem2) & _
                        " AND T_node_Y = " & Me.Elenco28.Column(3, varItem2) & ");")
Next n
Me.Elenco38.Requery
Next varItem2
w = w + 1
Me.Elenco28.Requery
Loop Until r = 0
ma non ottengo ciò che vorrei. Dove sbaglio? In particolare il Requery sulla
lstbox Elenco28 (aste connesse) mi restituisce sempre le aste con
Counter_loop = 1 e non aggiorna il RowSource con il contenuto di w.
Grazie per l' aiuto.
Paki
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Prova a togliere i requery nei cicli (se ciclano non č indispendabile vedere
il refresh dei dati) e inseriscilo alla fine di tutta la routine...
Ciao.
--
Sergio MAZZA

 ha
scritto:

Se eliminassi il requery di Elenco28 dal loop, questo si fermerebbe al
secondo "giro" mentre io vorrei che "loopasse" finché in Elenco38 sono
presenti dei record.



Probabilmente mi sono espresso male;
il requery sulle caselle combinate, se hanno come base dati delle tabelle,
(a parer mio) non serve; perché sai gią che il contenuto delle tabelle č
cambiato (sei tu che fai degli UPDATE) quindi ti regoli di conseguenza. Solo
alla fine fai un requery del controllo o al limite di tutta la form...
Ciao.
--
Sergio MAZZA