Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Call o DoCMD su form non attivo

  1. #1
    UGoldrake non è in linea Scolaretto
    Post
    375
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao, in un database ho 2 form; vorrei poter cambiare record del form non attivo dove ho già questo codice che fa il lavoro che mi serve:

    Private sub btnNext_MouseMove ()
    DoCmd.GoToRecord acActiveDataObject, , acNext
    
    Però nessuna delle 2 righe qui sotto ovviamente lavora, perché nella Call non so come agganciare l'AltroForm al MouseMove e certamente non così; invece nella seconda non esiste usare AltroForm. con DoCmd.

    Call Form_AltroForm...btnNext_MouseMove
    oppure
    Form_AltroForm.DoCmd.GoToRecord acActiveDataObject, , acNext
    
    Ho provato anche:
    DoCmd.GoToRecord acDataForm = Form_AltroForm, , acNext
    
    ma mi dice "Tipo non corrispondente"

    Così non so come fare.
    C'è un sistema oppure non si può proprio?
    Grazie.
    Ugo

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    Prima devi usare il Docmd.SelectObject se vuoi usare quel metodo... altrimenti lo puoi fare anche usando il RecordsetClone.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Quote Originariamente inviato da UGoldrake Visualizza il messaggio
    ...
    Call Form_AltroForm...btnNext_MouseMove
    
    ...
    Forse è un refuso da tastiera comunque la sintassi è sbagliata: non ci vanno i tre punti tra Form_AltroForm e il nome dell'evento ma un punto solo e la sub associata all'evento deve essere public mentre di default è private.
    Oppure dovresti scrivere una Sub o una Function in AltroForm, ovviamente Public, che si limita ad eseguire btnNext_MouseMove, senza modificare da Private a Public la Sub associata a quell'evento. Poi nella maschera in cui ti trovi esegui quella nuova Public Sub (o Function)

  4. #4
    UGoldrake non è in linea Scolaretto
    Post
    375
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Forse è un refuso da tastiera comunque la sintassi è sbagliata: non ci vanno i tre punti tra Form_AltroForm e il nome dell'evento ma un punto solo e la sub associata all'evento deve essere public mentre di default è private.
    Oppure dovresti scrivere una Sub o una Function in AltroForm, ovviamente Public, che si limita ad eseguire btnNext_MouseMove, senza modificare da Private a Public la Sub associata a quell'evento. Poi nella maschera in cui ti trovi esegui quella nuova Public Sub (o Function)
    Non è un refuso è proprio per dire ... e qui in mezzo che ci metto? ... visto che le ho provate tutte?
    Quello che ho scritto dentro la sub son 3 righe, ma quello che succede dopo sono, come si dice, tutto un programma, così mi serve far girare queste 3 righe perché funzioni tutto il resto.

    Nel frattempo ti ringrazio e ringrazio anche Alex.

  5. #5
    Post
    1,833
    Like Inviati  
    0
    Like Ricevuti  
    6
    Quote Originariamente inviato da UGoldrake Visualizza il messaggio
    Non è un refuso è proprio per dire ... e qui in mezzo che ci metto? ...
    Ma riflettiamo un attimo, porta pazienza: non è che per caso il codice può / deve essere riscritto meglio per funzionare bene e chiamandolo nel modo giusto?
    Cioè sta tutto dentro la Sub btnNext_MouseMove() della maschera AltroForm? Forse ho capito male.

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    Quote Originariamente inviato da UGoldrake Visualizza il messaggio
    Ciao, in un database ho 2 form; vorrei poter cambiare record del form non attivo dove ho già questo codice che fa il lavoro che mi serve:

    Private sub btnNext_MouseMove ()
    DoCmd.GoToRecord acActiveDataObject, , acNext
    
    Però nessuna delle 2 righe qui sotto ovviamente lavora, perché nella Call non so come agganciare l'AltroForm al MouseMove e certamente non così; invece nella seconda non esiste usare AltroForm. con DoCmd.

    Call Form_AltroForm...btnNext_MouseMove
    oppure
    Form_AltroForm.DoCmd.GoToRecord acActiveDataObject, , acNext
    
    Ho provato anche:
    DoCmd.GoToRecord acDataForm = Form_AltroForm, , acNext
    
    ma mi dice "Tipo non corrispondente"

    Così non so come fare.
    C'è un sistema oppure non si può proprio?
    Grazie.
    Ugo
    Quella roba che hai scritto sopra... si traduce in modo funzionante in 2 righe:
    DoCmd.SelectObject acForm, "NomeForm"
    DoCmd.GoToRecord acActiveDataObject, , acNext
    
    Oppure
    Public Function frm2Next(mFrm as Access.Form)
        On Error Resume Next
        With mFrm.Recordsetclone
             .MoveNext
             mFrm.Bookmark=.Bookmark
        End With
    End Sub
    
    Da richiamare con:
    Call frm2Next(Forms("NomeForm"))
    
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Form sempre attivo, come?
    Da uelfox nel forum C#
    Risposte: 8
    Ultimo Post: 01-06-2016, 21:16
  2. Foglio attivo con form aperta
    Da Saint nel forum Microsoft Word
    Risposte: 5
    Ultimo Post: 23-07-2009, 14:01
  3. [VB 2005] Form attivo
    Da Robypuma nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 15-08-2008, 10:43
  4. Risposte: 4
    Ultimo Post: 24-08-2007, 20:49
  5. form sempre attivo
    Da Diabolik nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 28-08-2006, 20:28