Condividi tramite

Utilizzo di Recordsetclone

Anonimo
2012-05-30T08:47:36+00:00

If (Me.TabCtl16.Value = 8) Then

Dim Miorecordset As Recordset

Set Miorecordset = Me![sottomaschera PD7].Form.RecordsetClone

Do Until Miorecordset.EOF

MsgBox Miorecordset.Fields("Codice Prodotto")

Miorecordset.MoveNext

Loop

Miorecordset.Close

Set Miorecordset = Nothing

End If

Questo e' un evento in relazione ad un controllo struttura a schede.

Quando pigio sulla pagina 8 esegue il codice.

PREMETTO..... non so se e' giusto ma vorrei utilizzare i dati di una sottomaschera usando, non so se e' giusto RECORDSETCLONE.

Quando seleziono la pagina la prima volta tutto funziona.

Alla seconda sembra che il recordset sia vuoto.

La sottomaschera [sottomaschera PD7] e' invece popolata.

Cosa sbaglio????

GRAZIE come sempre a tutti.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2012-05-30T09:48:15+00:00

Ciao,

per mia personale curiosità potresti provare a impostare

Set Miorecordset = Me![sottomaschera PD7].Form.RecordsetClone

Miorecordset.movefirst

Mimmo

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-05-30T10:29:45+00:00

    Si, è vero che distruggi il riferimento a Miorecordset pero' è anche vero che durante lo svoltimento del primo ciclo (la prima volta che clicchi sulla scheda 8) ciclando in Miorecordset in realtà stai ciclando anche su Recordsetclone della sottomaschera (a cui Miorecordset è puntato con l'istruzione SET).

    Te ne puoi accorgere in maniera evidente se prima di uscire dalla routine scrivi


    MsgBox Me![sottomaschera PD7].Form.RecordsetClone.EOF


    Vedrai che ti verrà restituito TRUE

    In sostanza: o fai come dice Mimmo e imponi un movefirst dopo la dichiarazione

    Set Miorecordset = Me![sottomaschera PD7].Form.RecordsetClone

    oppure lo fai direttamente sul recordsetclone della sottomaschera

    Me![sottomaschera PD7].Form.RecordsetClone.MoveFirst.

    Il risultato è equivalente.

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-05-30T10:09:44+00:00

    Proverò ma mi sembra di ricordare che alla seconda definizione del  Miorecordset,  il risultato fosse vuoto.

    Ciao Mimmo57 e grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-05-30T09:32:36+00:00

    Molto gentile per la risposta.

    Avevo provato anche senza l'istruzione  "Set Miorecordset = Nothing" ma stesso risultato.

    Credo che sia sbagliato il mio approccio nell'utilizzo del recordsetclone ma, ESSENDO PROFONDAMENTE IGNORANTE, mi sfugge.

    Ho cercato di documentarmi ma non ho trovato riferimenti.

    Nel frattempo ho risolto così:

    ____________________________________________________________________________________

    If (Me.TabCtl16.Value = 8) Then

    Dim DBCorrente As dao.Database

    Dim Tabella As dao.Recordset

    Dim Miaquery As String

    Set DBCorrente = CurrentDb

    Miaquery = Me![sottomaschera PD7].Form.RecordSource

    Set Tabella = DBCorrente.OpenRecordset(Miaquery, dbOpenDynaset)

    Do Until Tabella.EOF

    MsgBox Tabella.Fields("Codice Prodotto")

    Tabella.MoveNext

    Loop

    Tabella.Close

    DBCorrente.Close

    Set Tabella = Nothing

    Set DBCorrente = Nothing

    End If

    ____________________________________________________________________________________

    Io pensavo di utilizzare recordsetclone, siccome gia' definito, proprio per evitare il codice sopra riportato.

    EVIDENTEMENTE non è così.

    Grazie per le risposte

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-05-30T09:17:17+00:00

    Ciao M.Z.

    toglierei l'istruzione

     Set Miorecordset = Nothing

    La risposta è stata utile?

    0 commenti Nessun commento