+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Form/SubForm di Navigazione e Managment

  1. #1
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ho realizzato una form usabile come Form o SubForm in modo equivalente, per la gestione dei Records...
    Sostanzialmente replica la Barra di Navigazione Standard con qualche aggiunta(UNDO).

    Salvo BUGS, di cui è gradita tracciabilità... sembra funzionare sia con Form Singole che Continue.

    Controllo_Records_XP.zip
    ℹ️ Leggi di più su @Alex ...

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Certosino
    Ciao
    Ottimo lavoro, complimenti
    ho trovato un piccolo bugs

    si verifica solo in alcuni casi particolare

    L'ho riscontrato sulla maschera esterna

    se mi sposto di record (tramita la tua form) e poi clicco sul pulsante esci (sempre della tua barra) genera un bugs
    solo in questa condizione
    se invece
    mi sposto di record (tramita la tua form)
    Rendo attiva la maschera di prova
    e in seguito clicco sul pulsante esci (sempre della tua barra) il bugs non si presenta

    i comandi interessati sono tutti (avanti indietro, primo ultimo, nuovo, filtro)
    Appare l'errore 2467:
    L'oggetto che appare nell'epressione è stato chiuso o eliminato

    e il debug evidenza questa riga (in rosso la riga incriminata)

    Private Sub frmMain_Deactivate()
        ' =====================================================
        ' Questo Evento è attivato solo se la Form non è SubForm
        ' Sana il BUGS di mancanto BEFORE_UPDATE della [frmmain]
        ' se la FORM_NAVIGATION non è SUBFORM forzando il SAVE
        ' =====================================================
        If Not Me.cmdUndo.Enabled Then Exit Sub
        DoCmd.SelectObject acForm, frmMain.Name
        DoCmd.RunCommand acCmdSaveRecord
    End Sub
    
    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ciao Fausto,
    si me ne ero accorto oggi, l'ho risolto è dovuto alla sincronizzazione degli Eventi durante la chiusura...
    La cosa sembra confermata in quanto se inserisco i Break ed eseguo passo passo il problema non si genera.
    In sostanza quando premi il Button(Close) senza prima aver attivato la FORM, non si genera l'evento DEACTIVATE... che invece si genera subito dopo su comando di CLOSE ma a quel punto la Form sembra essere già chiusa e l'oggetto frmmain non è distrutto ma siccome non esiste più...

    Per ora l'ho risolto con una semplice gestione errori proprio del 2467, con il quale faccio un exit... ma probabilmente durante l'evento UNLOAD potrei provare a distruggere
    l'oggetto....
    Ci guardo un pò meglio ma credo possa andare bene anche lo Skip...
    Private Sub frmMain_Deactivate()
        On Error GoTo Err_Deact
        ' =====================================================
        ' Questo Evento è attivato solo se la Form non è SubForm
        ' Sana il BUGS di mancanto BEFORE_UPDATE della [frmmain]
        ' se la FORM_NAVIGATION non è SUBFORM forzando il SAVE
        ' =====================================================
        If Not Me.cmdUndo.Enabled Then Exit Sub
        DoCmd.SelectObject acForm, frmMain.Name
        DoCmd.RunCommand acCmdSaveRecord
    Exit_Here:
        Exit Sub
    Err_Deact:
        Select Case Err.Number
            Case Is = 2467
                Resume Exit_Here
            
            Case Else
                MsgBox Err.Number & " - " & Err.Description
        End Select
        Resume Exit_Here
    End Sub
    
    Mi sembra un discreto esempio, ho cercato di renderlo CODE_FREE... ci sono alcune cosette che tecnicamente non mi piacciono ma non ho trovato un metodo migliore
    per risolverle... l'esempio più lampante è l'UNDO del NEWRECORD... che in realtà non è un UNDO, ma un SALVA-CANCELLA.
    Formalmente non cambia, ma tecnicamente molto... ad esempio le PK(Counter) vengono incrementate e creati i buchi... è pur solo una pignoleria... ma per ora è quello che mi scoccia.
    La difficoltà sta nel fatto che essendo una SUBFORM quando sposto il focus dalla Form(in ADDNEW) e la SubForm per fare l'UNDO, questo genera automaticamente il SALVA, puoi verificarlo con una semplice Form/SubForm, ed una volta salvato l'undo non è fattibile... forse solo inserendo in transazione l'azione di NEWRECORD... ma ci devo lavorare un pò...
    Ultima modifica di @Alex; 24-08-2012 23:03 
    ℹ️ Leggi di più su @Alex ...

  4. #4
    petroso47 non è in linea Novello
    Salve.
    Sono un neofita di ACCESS2007 e cerco di imparare dagli esempi.
    Trovo quello proposto molto valido e istruttivo.
    Segnalo però una anomalia.
    Utilizzando Es_FormSingola, con disabilitati i pulsanti spostamento, forniti direttamente da ACCESS non ho più in txtPos il valore corretto ( "1 di n" dove n è il numero dei record della tabella, ma solo "1 di 1"), quando inserisco un nuovo record e prima di salvarlo premo il pulsante di UNDO.
    Questo non succede se i pulsanti di spostamento sono visibili, in questo caso sia nella casella dei pulsanti che da il record corrente rispetto a numero totale di record sia nella casella txtPos ho il valore esatto di "1 di 3".
    Ho notato inoltre che utilizzando Es_FormContinua il fatto non si presenta, sia che ci siano sia che non ci siano i pulsanti di spostamento.
    Ma se setto in questa ultima maschera la Visualizzazione a maschera singola e faccio vedere un solo record per volta, il problema è lo stesso che per la Es_FormSingola.
    Si può ovviare a tutto questo?
    L'unico tentativo che sono stato in grado di fare è stato quello di variare la rutine dell'UNDO, aggiungendo un ricalcolo del valore di txtPos

    Private Sub cmdUndo_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If ClickValidator(Screen.ActiveControl, Button, Shift, X, Y) Then UndoAction
        Me.txtPos.Value = frmMain.CurrentRecord & " di " & frmMain.RecordsetClone.RecordCount
    End Sub
    
    ma il risultato è stato nullo.

    Grazie se vuole rispondere.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Access, problemi con il form Navigazione-Spostamento
    Da nudibrank nel forum Microsoft Access
    Risposte: 14
    Ultimo Post: 01-07-2016, 16:26
  2. Problemi di Navigazione tra due form
    Da misonsan nel forum Microsoft Excel
    Risposte: 0
    Ultimo Post: 16-09-2015, 15:22
  3. Risposte: 0
    Ultimo Post: 16-06-2015, 15:34
  4. Form e subform
    Da baggino nel forum Microsoft Access
    Risposte: 15
    Ultimo Post: 04-02-2014, 09:06
  5. Access: Form + SubForm
    Da Elimar nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 12-03-2007, 17:55