Variabile pubblica che si azzera

di il
12 risposte

Variabile pubblica che si azzera

Ho una variabile pubblica pubdocumento che perde il valore....

Option Compare Database
public pubDOCUMENTO As Long
Private Sub Form_Load()
    Dim x As Variant
    Dim strControl As String
    Dim strID As Long
    Dim StrQuery, strquery1 As String
    'Se i parametri esistono, li usano
    If Len(Me.OpenArgs) > 0 Then
         x = Split(Me.OpenArgs, "|")
        pubDOCUMENTO = CLng(x(0))
        StrQuery = "SELECT * from [tbPagamento] WHERE [IDDocumento] = " + CStr(pubDOCUMENTO) + " ORDER BY ScadPagamento DESC , DataPagamento DESC;"
        Me.RecordSource = StrQuery
        Me.Requery
        If Me.Recordset.RecordCount = 0 Then MsgBox ("attenzione non impostate scadenze attualmente")
        Me.TotFatt = CCur(x(1))
    Else
        MsgBox "argomenti non trovati"
    End If

    MsgBox pubDOCUMENTO

End Sub

Private Sub ScadPagamento_AfterUpdate()
    If Me.IDDocumento = 0 Then
        MsgBox pubDOCUMENTO
        Me.IDDocumento = pubDOCUMENTO
    End If
End Sub

12 Risposte

  • Re: Variabile pubblica che si azzera

    Piuttosto laconico ...

    Che vuoi dire ? Qualche dettaglio in più non guasterebbe ...
  • Re: Variabile pubblica che si azzera

    Ho creato la variabile pubDOCUMENTO che mi serve per contenere l'ID del documento che devo passare in caso di nuovo record per mantenere l'integrità referenziale...
    la dichiaro all'inizio del modulo della form
    la recupero da openargs al caricamento della pagina....(e li la vede)

    la uso in Sub ScadPagamento_AfterUpdate() e li continua ha darmi come valore 0....
  • Re: Variabile pubblica che si azzera

    Ma parliamo di codice che sta nello stesso Form ?
  • Re: Variabile pubblica che si azzera

    Si
  • Re: Variabile pubblica che si azzera

    Se il codice è solo quello allora non è possibile ...
  • Re: Variabile pubblica che si azzera

    Emadragon ha scritto:


    Ho una variabile pubblica pubdocumento che perde il valore....
    
    Option Compare Database
    public pubDOCUMENTO As Long
    Private Sub Form_Load()
    ...
            pubDOCUMENTO = CLng(x(0))
    ...
    End Sub
    
    Private Sub ScadPagamento_AfterUpdate()
        If Me.IDDocumento = 0 Then
            MsgBox pubDOCUMENTO
            Me.IDDocumento = pubDOCUMENTO
        End If
    End Sub
    
    Come ha detto oregon non è possibile che la variabile pubblica perda il valore, in assenza di altro codice oltre a quello pubblicato.
    Per dimostrare che la variabile pudDOCUMENTO non perde il valore basta aggiungere, prima della If un debug.Print
    Private Sub ScadPagamento_AfterUpdate()
        Debug.Print pubDOCUMENTO
        If Me.IDDocumento = 0 Then
        ...
    oppure fare debug mettendo un punto di interruzione del codice proprio sulla riga con If e guardare nella finestra delle variabili locali.

    E' corretto dire che tu intendi come perdita del valore il fatto che non si entri nella IF di ScadPagamento_AfterUpdate? Se ho interpretato bene, la domanda "va cambiata" e di conseguenza la soluzione al tuo problema.
  • Re: Variabile pubblica che si azzera

    Emadragon ha scritto:


    Ho creato la variabile pubDOCUMENTO che mi serve per contenere l'ID del documento che devo passare in caso di nuovo record per mantenere l'integrità referenziale...
    la dichiaro all'inizio del modulo della form
    la recupero da openargs al caricamento della pagina....(e li la vede)

    la uso in Sub ScadPagamento_AfterUpdate() e li continua ha darmi come valore 0....
    Significa che il tuo codice l'hai sovrascritta (azzerata) da qualche altra parte.
    Fai una ricerca nel codice...
  • Re: Variabile pubblica che si azzera

    Option Compare Database
    Private pubDOCUMENTO As Long
    Private Sub Form_Load()
        Dim x As Variant
        Dim strControl As String
        Dim strID As Long
        Dim StrQuery, strquery1 As String
        'Se i parametri esistono, li usano
        If Len(Me.OpenArgs) > 0 Then
            'Split crea una matrice in base zero dalla stringa di input
            'x(0) = ID
            'x(1) = Totale
             x = Split(Me.OpenArgs, "|")
            pubDOCUMENTO = CLng(x(0))
            MsgBox pubDOCUMENTO
            questo = pubDOCUMENTO
            StrQuery = "SELECT * from [tbPagamento] WHERE [IDDocumento] = " + CStr(questo) + " ORDER BY ScadPagamento DESC , DataPagamento DESC;"
            Me.RecordSource = StrQuery
            Me.Requery
            If Me.Recordset.RecordCount = 0 Then MsgBox ("attenzione non impostate scadenze attualmente")
            Me.TotFatt = CCur(x(1))
        Else
            MsgBox "argomenti non trovati"
        End If
    
        MsgBox pubDOCUMENTO
    End Sub
    
    Private Sub ScadPagamento_AfterUpdate()
        MsgBox pubDOCUMENTO
        If Me.IDDocumento = 0 Then
            MsgBox pubDOCUMENTO
            Me.IDDocumento = pubDOCUMENTO
        End If
    End Sub
    non so cosa dirvi questo è il codice completo della maschera...
    non richiamo variabili esterne ed ho provato pure a rinominare la variabile in modo da non correre il rischio sia richiamata da altre parti di codice fuori da questo modulo...
  • Re: Variabile pubblica che si azzera

    Emadragon ha scritto:


    Option Compare Database
    ...
    non so cosa dirvi questo è il codice completo della maschera...
    non richiamo variabili esterne ed ho provato pure a rinominare la variabile in modo da non correre il rischio sia richiamata da altre parti di codice fuori da questo modulo...
    Aggiungi sotto Option Compare Database
    Option Explicit
    Sistema eventuali errori di variabili non dichiarate.
    Ottieni l'evento AfterUpdate di ScadPagamento?
    Modifica le prima riga dell'evento così
    Private Sub ScadPagamento_AfterUpdate()
        MsgBox "ScadPagamento_AfterUpdate; pubDOCUMENTO = " & pubDOCUMENTO
        ...
    
    Compare la relativa finestra di messaggio?
    Se dopo tutto questo (anche sopra, il discorso Option Explicit) il problema persiste, se è possibile pubblica un file dimostrativo.
  • Re: Variabile pubblica che si azzera

    Fatto ancora niente...
    come posso postarvi il file ???
    grazie mille intanto
  • Re: Variabile pubblica che si azzera

    Emadragon ha scritto:


    Fatto ancora niente...
    come posso postarvi il file ???
    Se non hai a disposizione la voce "Allegati" (vicino ad Opzioni, dopo i pulsanti Salva Bozza, Anteprima, Invia) devi appoggarti ad un sito di file sharing. C'è anche chi usa Google Drive, OneDrive, DropBox. Aggiungo sempre (ma vale per me, non vincola gli altri utenti) che purché non ci sia da autenticarsi con una sorta di registrazione va bene tutto. Ricorda di privarlo di informazioni sensibili. Se vuoi lasciare qualche dato rendilo non collegabile a niente/nessuno di reale.
  • Re: Variabile pubblica che si azzera

    
    Private pubDOCUMENTO As Long
    
    Dal codice che hai mostrato, non può accadere quello che dici quindi, tanto per cambiare : rinomina la variabile (i.e. prvDocumento)
    Utilizza 'Option Explicit' come già suggerito da Phil e correggi le eventuali dichiarazioni di variabili mancanti.
Devi accedere o registrarti per scrivere nel forum
12 risposte