Properità RecodsetClone

di il
9 risposte

Properità RecodsetClone

Buonasera, vorrei porre un quesito. Leggendo la guida, facendo ricorso alla proprietà RecodsetClone sono possibili soltanto operazioni in lettura e non in scrittura. Come mai, però, utilizzando la function di seguito indicata i campi del Recorset vengono aggiornati? Grazie.

Public Function aggiorna_stato_S(frm As Form)
Dim rst             As DAO.Recordset

Set rst = frm.RecordsetClone
With rst
.MoveFirst
    Do Until .EOF
        If ![Lavorazione] = 2 Then
            If len_report(![Path_Report] & "\" & ![file_report]) > 0 Then
                .Edit
                ![Lavorazione] = 3
                .Update
            End If
        End If
        .MoveNext
    Loop
End With
End Function

9 Risposte

  • Re: Properità RecodsetClone

    Dal help :

    Use the RecordsetClone property to refer to a form's Recordset object specified by the form's RecordSource property. Read-only.

    La proprietà è read-only NON il recordset che infatti è una copia (clone) del recordset su cui si basa il form.

  • Re: Properità RecodsetClone

    Si certo ma allora che significa che la proprietà è read-only. Quali operazioni non sono consentite?

  • Re: Properità RecodsetClone

    Aggiungo alla spiegazione di max.riservo quello che la guida intende con proprietà read-only, cioè che l'ultima riga di questo codice non funzionerà mai.

    Dim RecordsetObj As DAO.Recordset
    Set RecordsetObj = DbEngine(0)(0).OpenRecordset("SELECT * FROM TableName")
    Set FormName.RecordsetClone = RecordsetObject  '<==== Errore

    perché non puoi assegnare qualcosa ad una proprietà di sola lettura.

  • Re: Properità RecodsetClone

    A prescindere di quanto già detto mi chiedo perche devi ciclare i record per fare EDIT quando con una banale query ACTION di tipo UPDATE risolvi e poi fai il requery…

    P.S. e la proprietà ad essee READONLY non l'oggetto che invece è editabile.

  • Re: Properità RecodsetClone

    Certo hai ragione. Era solo un esempio per utilizzare la proprietà RecordsetClone.

  • Re: Properità RecodsetClone

    Ora mi è chiaro grazie.

  • Re: Properità RecodsetClone

    24/12/2022 - @Alex ha scritto:


    A prescindere di quanto già detto mi chiedo perche devi ciclare i record per fare EDIT quando con una banale query ACTION di tipo UPDATE risolvi e poi fai il requery…

    Però mi sorge un dubbio. Come faccio ad applicare una ACTION tipo UPDATE ai record di un oggetto di tipo formname.recordsetclone o formname.recordset?

  • Re: Properità RecodsetClone

    24/12/2022 - Antony73 ha scritto:


    Come faccio ad applicare una ACTION tipo UPDATE ai record di un oggetto di tipo formname.recordsetclone o formname.recordset?

    Cambiando totalmente modo di ragionare. Invece di aprire un recordset e passare un record alla volta in edit, facendo le modifiche se rispetta alcuni requisiti, crei una query di aggiornamento

    UPDATE nometabella SET ... WHERE condizionivarie

    e la esegui con il metodo Execute di un oggetto Database. Vedo che imposti a 3 il campo Lavorazione quando questo è uguale a 2 e quanto il risultato della funzione len_report a cui passi alcuni parametri è > 0, quindi potrebbe essere una cosa del genere

    Dim db As DAO.Database
    Dim strSQL As String
    'non so dove fare l'update, il nome della tabella o della query non c'è
    strSQL = "UPDATE nometabella SET [Lavorazione] = 3 WHERE [Lavorazione] = 2 AND len_report([Path_Report] + '\' + [file_report]) > 0"
    db.Execute strSQL, dbFailOnError

    meglio ancora se inserito in una Transaction dell'oggetto Workspace.

    La funzione len_report deve essere in un modulo standard per essere chiamata all'interno di una query.

  • Re: Properità RecodsetClone

    Ok. Grazie.

Devi accedere o registrarti per scrivere nel forum
9 risposte