Aggiornare dati in una maschera

di il
12 risposte

Aggiornare dati in una maschera

Ciao a Tutti .. eccomi ancora a rompere ..
ho un altro problema :
ho una maschera dove all'interno ho un campo calcolato come segue

Private Sub Form_Current()
Dim IDPacchettivar As Integer
IDPacchettivar = Me.IDPacchetti.Value
AnteprimaConta = DCount("*", "[Ingressi]", "IDPacchetti=" & IDPacchettivar)
Me.Testo43 = AnteprimaConta
end sub

poi con un pulsante apro un altra maschera "Ingressi" e su questa ho messo
Private Sub Form_Close()
DoCmd.SelectObject acForm, "IscrizionePacchetti", False
DoCmd.RepaintObject acForm, "IscrizionePacchetti"
End Sub
così dopo che ho inserito un'altro ingresso vorrei che alla chiusura aggiornassi il dato nell'altra maschera
ma non si aggiorna il dato
dove sbaglio ?
Grazie Gian

12 Risposte

  • Re: Aggiornare dati in una maschera

    Commetti diversi errori prettamente concettuali...!

    1) Se invece di usare l'Evento Current per il campo Calcolato, tu usassi la proprietà ControlSource della TExtBox(rendendola NON EDITABILE come del resto devi fare anche nel tuo caso)... l'aggiornamento sarebbe AUTOMATICO e non scriveresti nemmeno 1 riga di codice.

    2) Se per aprire la 2° Form, tu usassi il parametro finale del Metodo Openform, vale a dire valorizzare [acDialog] non dovresti scrivere codice su CLOSE, perchè il ripristino del Focus sulla Form chiamante sarebbe automatico, e dovresti semplicemente aggiungere 1 RIGA dopo la chiamata OPENFORM per il REQUERY, ovvero la richiesta della riesecuzione della query(intesa come rileggere l'origine Record della Maschera).
    
    DoCmd.OpenForm "Ingressi", , , , , acDialog
    Me.Requery
    3) Utilizzi il Metodo [RepaintObject] ma forse non hai correttamente inteso la guida che riporto:
    
    È possibile utilizzare il metodo RepaintObject per completare eventuali aggiornamenti dello schermo in sospeso per un oggetto di database....
    Tali aggiornamenti includono eventuali ricalcoli in sospeso dei controlli
    Come si evince l'aggiornamento è GRAFICO o su RICALCOLI, ma l'azione che hai fatto aprendo la maschera di INSERIMENTO, non rappresenta nè una variazione Grafica nè di calcoli... il nuovo dato inserito/cancellato di fatto nella Maschera NON C'E' ancora per il semplice fatto che non è stata ricaricata o aggironata l'origine Record.
    In sostanza il metodo [RepaintObject] potrebbe essere assimilabile al metodo Repaint di maschera
    
    Me.Repaint

    Se apri la guida invece cercando REFRESH e REQUERY vedrai che, pur con le loro ovvie differenze, realizzano un'azione diversa...
    Nel tuo caso, trattandosi di AGGIUNTA, l'unico metodo da usare è il REQUERY.
  • Re: Aggiornare dati in una maschera

    Grandee !! Questa sera studio e cerco di capire purtroppo tutte queste nozioni non sono facili ds trovare ho il libro di mike davis ma non spiega tutto ..
  • Re: Aggiornare dati in una maschera

    Un passo alla volta ti rompo (Alex)

    1) Dove imposto (In che modulo ? ho provato nel modulo della maschera ma non funziona) per esempio:

    Dim conta As Integer
    conta = DCount("*", "Ingressi")
    Me.Testo8.ControlSource = "conta"

    Se sono troppo ingorante dove posso leggere queste cose
    Grazie Gian
  • Re: Aggiornare dati in una maschera

    Sono bloccato al primo passaggio .. non riesco a impostare

    Dim conta As Integer
    conta = DCount("*", "Ingressi")
    Me.Testo8.ControlSource = "conta"


    sorry
  • Re: Aggiornare dati in una maschera

    Scusate se sono pesante .. ma ho provato anche a inserire nelle Proprietà "Origine Dati" della casella di testo il seguente codice ma non funge
    =DCount("*";[Maschere]![Ingressi];[Maschere]![IscrizionePacchetti]![IDPacchetti])
  • Re: Aggiornare dati in una maschera

    Ciao, credo che ti sia poco chiaro l'uso delle funzioni di aggregazione sui domini.
    hai letto e capito bene la guida in linea?
    campo, tabella o dominio/ ,criteri....stai facendo riferimento alla maschera invece.

    in ogni caso le performance delle funzioni di aggregazione non è ottimale...

    Expr Obbligatorio Stringa Un'espressione che identifica il campo contenente i record che si desidera contare. È possibile che si tratti di un'espressione stringa (espressione stringa: Qualsiasi espressione che restituisca una sequenza di caratteri adiacenti. Gli elementi dell'espressione possono essere funzioni che restituiscono una stringa o una stringa di tipo Variant (VarType , una variabile letterale, una costante, una variabile o un valore Variant.) che identifica un campo in una tabella o in una query oppure un'espressione che esegue un calcolo dei campi. In espr è possibile includere il nome di un campo in una tabella, un controllo in una maschera, una costante o una funzione. Se espr include una funzione, è possibile che sia incorporata o definita dall'utente, ma non è possibile che si tratti di un'altra funzione di aggregazione sui domini o di aggregazione SQL.
    Domain Obbligatorio Stringa Un'espressione stringa che identifica il set di record che costituisce il dominio. Può essere il nome di una tabella o di una query per una query che non richiede parametri.
    Criteria Facoltativo Variant Stringa facoltativa utilizzata per limitare l'intervallo di dati sui cui viene eseguita la funzione DCount. Ad esempio, l'argomento Criteri equivale spesso alla clausola WHERE priva della parola WHERE in un'espressione SQL. Se si omette l'argomento Criteri, la funzione DCount valuta l'argomento Espressione confrontandolo con l'intero dominio. È necessario che qualsiasi campo incluso nell'argomento Criteri appartenga anche all'argomento Dominio. In caso contrario, la funzione DCount restituisce un valore Null.

    un saluto.
  • Re: Aggiornare dati in una maschera

    Scusa Alex come devo fare per:
    1) Se invece di usare l'Evento Current per il campo Calcolato, tu usassi la proprietà ControlSource della TExtBox(rendendola NON EDITABILE come del resto devi fare anche nel tuo caso)... l'aggiornamento sarebbe AUTOMATICO e non scriveresti nemmeno 1 riga di codice.
    Son tre giorni che provo ma non capisco come fare
    Se puoi ..
    Grazie Gian
  • Re: Aggiornare dati in una maschera

    Che prove hai fatto...?
    Se ci dai un'indizio vediamo di correggere eventuali errori.
  • Re: Aggiornare dati in una maschera

    Ciao, ho inserito nelle proprietà Origine Controllo di una casella di testo
    uno dei seguenti codici .. ma non funziona
    =DCount("*";[Table]![Ingressi];[Table]![Ingressi]![IDPacchetti]=[Maschere]![IscrizionePacchetti]![IDPacchetti])
    Mah

    mi perdo perche nella funzione che avevo scritto all'inizio funzionava
    Dim IDPacchettivar As Integer
    IDPacchettivar = Me.IDPacchetti.Value
    AnteprimaConta = DCount("*", "[Ingressi]", "IDPacchetti=" & IDPacchettivar)
    Me.Testo43 = AnteprimaConta

    ma poi qui non riesco a fargli capire la funzione DCount()
    Grazie Gian
  • Re: Aggiornare dati in una maschera

    Beh... scusa ma la funzione DCOUNT la puoi definire con il GENERATORE di ESPRESSIONI, e la compone quasi completamente in modo AUTOMATICO...
    
    DCount("*"; "[Ingressi]"; "IDPacchetti=" & [IDPacchettivar])
  • Re: Aggiornare dati in una maschera

    Funziona .. quasi
    ho scritto come mi hai suggerito tu

    DCount("*"; "[Ingressi]"; "IDPacchetti=" & [IDPacchettivar])

    ma non legge la variabile IDPacchettivar
    Dove la devo impostare ? Nel codice vba della Maschera ? sotto quale evento ?

    Dim IDPacchettivar As Integer
    IDPacchettivar = Me.IDPacchetti.Value

    Grazie Gian
  • Re: Aggiornare dati in una maschera

    Ho risolto così

    =DCount("*";"[Ingressi]";"IDPAcchetti=" & [IDPacchetti])
    però mi piacerebbe avere una delucidazione in merito al post che ho scritto prima
    se possibile
    grazie gian
Devi accedere o registrarti per scrivere nel forum
12 risposte