Newsgroup: it.comp.appl.access
Titolo: Doppio recordset

Per un errore riposto il messaggio
invio il codice implementato
'Aste non connesse X e Y dei nodi iniziale e finale
DoCmd.RunSQL ("SELECT * INTO Export1 FROM (SELECT F_node_X AS X, F_node_Y AS
Y, T_node_X AS X1, T_node_Y AS Y1 FROM Export " & _
            " WHERE Connect Is Null UNION SELECT T_node_X AS X, T_node_Y AS Y, F_node_X
AS X1, F_node_Y AS Y1 " & _
            " FROM Export WHERE Connect Is Null);")
 
'Crea la tabella dei nodi delle aste connesse
DoCmd.RunSQL ("SELECT * INTO Export2 FROM (SELECT F_node_X AS X, F_node_Y AS
Y FROM Export " & _
            " WHERE Connect =1 UNION SELECT T_node_X AS X, T_node_Y AS Y " & _
            " FROM Export WHERE Connect = 1);")
'Creo il recordset che carica i dati dalla tabella dei nodi delle aste non
connesse
Dim cmd3 As Command
Dim rs3 As Recordset
Set cmd3 = New ADODB.Command
With cmd3
    .ActiveConnection = CurrentProject.Connection
    .CommandText = "SELECT X, Y, X1, Y1 FROM Export1;"
    .CommandType = adCmdText
End With
cmd3.Execute
Set rs3 = New ADODB.Recordset
rs3.Open cmd3
'Creo il recordset che carica i dati dalla tabella dei nodi delle aste
connesse
Dim cmd4 As Command
Dim rs4 As Recordset
Set cmd4 = New ADODB.Command
With cmd4
    .ActiveConnection = CurrentProject.Connection
    .CommandText = "SELECT X, Y FROM Export2;"
    .CommandType = adCmdText
End With
cmd4.Execute
Set rs4 = New ADODB.Recordset
rs4.Open cmd4
Do Until rs4.EOF
rs3.MoveFirst
Do Until rs3.EOF
    If rs3.Fields(0) = rs4.Fields(0) And rs3.Fields(1) = rs4.Fields(1) Then
        DoCmd.RunSQL "UPDATE Export SET Connect = 1 WHERE ((F_node_X = " &
rs4.Fields(0) & _
                " AND F_node_Y = " & rs4.Fields(1) & ") OR (T_node_X = " & rs4.Fields(0) & _
                " AND T_node_Y = " & rs4.Fields(1) & "));"
        rs4.AddNew
            rs4.Fields(0) = rs3.Fields(2)
            rs4.Fields(1) = rs3.Fields(3)
        rs3.Delete
    End If
    rs3.MoveNext
Loop
rs3.Requery
rs4.MoveNext
Loop
Vorrei che il recordset rs3 ciclasse e se un record di rs3 verificasse la
condizione di essere presente nel recordset rs4, deve essere eliminato da
rs3 e aggiunto a rs4 (in realtą gli altri due campi di rs4). il tutto fino
allo svuotamento di rs3 e al completo riempimento di rs4. In realtą verifica
solo la presenza di record di rs3 in rs4. dove sbaglio? come correggerlo?
Grazie e Buona Pasqua a tutti.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio 
news:192Z107Z81Z30Y1...@usenet.libero.it...

Scusa ma non capisco; se un record č presente in rs3 e rs4 devi eliminarlo 
da rs3 e aggiungerlo in rs4? Praticamente una duplicazione di record in rs4, 
o non ho capito?
Ciao.
-- 
Sergio MAZZA 


Se un record in rs3 (i primi due campi sono presenti in rs4) verifica la
condizione di essere presente in rs4, ad rs4 aggiunge i campi 2 e 3 (terzo e
quarto campo) di rs3
If rs3.Fields(0) = rs4.Fields(0) And rs3.Fields(1) = rs4.Fields(1) Then
    rs4.AddNew
    rs4.Fields(0) = rs3.Fields(2)
    rs4.Fields(1) = rs3.Fields(3)
    rs3.Delete
End If
e successivamente ciclare fino ad esaurimento dei record in rs3.
Ho provato ad essere più chiaro, ci sono riuscito?
Ciao, Paki
