Newsgroup: it.comp.appl.access
Titolo: Unire due record in uno

Buongiorno.
Ho una tabella dove devo unire il testo dei record pari ai record precedenti dispari, e successivamente eliminare i record pari copiati.
Come posso impostare il ciclo in vba?
Ho iniziato con 
Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT Cap FROM Cap_originale WHERE (Id > 753 and Id <= 1132)")
    Do While Not rs.EOF
 
adesso non so come andare avanti.
 
Grazie 
Giuseppe

Intanto il RECORD da usare a riferimento è il DISPARI e non il Pari secondo me, quindi punti al DISPARI e leggi il SUCCESSIVO pari, detto così sembra la stessa cosa ma non lo è.
Non sapendo cosa per te fosse il concetto di UNIRE... vado per CONCATENARE
 
Quindi se se i certo che ad ogni Record DISPARI il successivo Pari sia il suo POINTER... allora una cosa simile, ancorchè migliorabile può funzionare:
 
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim fld1 As DAO.Field
 
Set rs1 = DBEngine(0)(0).OpenRecordset("Select.....")
 
Do Until rs.EOF
    ' Cerco il Dispari 
    If rs1.Fields("CampoNumerico") Mod 2 > 0 Then
        ' Ora cerco il primo Record successivo a questo ma PARI
        Set rs2 = DBEngine(0)(0).OpenRecordset("Select..... WHERE [CampoNumerico] MOD 2)=0 AND [CampoNumerico]>" & rs1!CampoNumerico, dbOpenSnapshot, dbReadOnly)
        If Not rs2.BOF And rs2.EOF Then
            rs.Edit
            For Each fld1 In rs.Fields
                   If fld.Name<>"Campo PK che forse è il nome del CampoNumerico" Then
                        fld1.Value = fld1.Value & " - " & rs.fieds(fld1.Name).Value
                   End If
            Next
            rs.Update
            ' Sposto il Bookmark del Primo sul Record PARI, che sicuramente se siamo quì esiste
            rs.FindFirst "CampoNumerico=" & rs2!CampoNumerico
            rs1.Delete
        End If
    End If
    rs1.MoveNext
Loop
 
Non l'ho testato... ma il ragionamento dovrebbe andare.
 
@Alex

Qualche errore... di riferimenti vari...
 
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim fld1 As DAO.Field
 
Set rs1 = DBEngine(0)(0).OpenRecordset("Select.....")
 
Do Until rs.EOF
' Cerco il Dispari
   If rs1.Fields("CampoNumerico") Mod 2 > 0 Then
      ' Ora cerco il primo Record successivo a questo ma PARI
      Set rs2 = DBEngine(0)(0).OpenRecordset("Select..... WHERE [CampoNumerico] MOD 2)=0 AND [CampoNumerico]>" & rs1!CampoNumerico, dbOpenSnapshot, dbReadOnly)
      If Not rs2.BOF And rs2.EOF Then
         rs1.Edit
         For Each fld1 In rs1.Fields
            If fld.Name <> "Campo PK che forse è il nome del CampoNumerico" Then
               fld1.Value = fld1.Value & " - " & rs2.fieds(fld1.Name).Value
            End If
         Next
         rs1.Update
         ' Sposto il Bookmark del Primo sul Record PARI, che sicuramente se siamo quì esiste
         rs1.FindFirst "CampoNumerico=" & rs2!CampoNumerico
         rs1.Delete
        End If
        rs2.Close
   End If
   rs1.MoveNext
Loop
 
Invece di aprire e chiudere il 2° RS potresti aprirlo in ReadOnly ed usare il FindFirst "[CampoNumerico] MOD 2)=0 AND [CampoNumerico]>" & rs1!CampoNumerico... magari è più rapido... 
 
 
@Alex

 fld1.Value = fld1.Value & " - " & rs2.fields(fld1.Name).Value 
ed ho tolto la parentesi dopo MOD 2 perchè c'era una parentesi tonda in più.
Adesso il codice scorre ma quando arriva a 
If Not rs2.BOF And rs2.EOF Then
scende direttamente  a 
End If
rs2.Close
End If
rs1.MoveNext
Loop
e poi riparte senza mai entrare in Edit.

 e poi riparte senza mai entrare in Edit.
 
Li manca la parentesi che era in più sopra... ;-)
If Not (rs2.BOF And rs2.EOF) Then
 
Porta pazienza... ma dal telefono a braccio è fatica...
 
@Alex