Condividi tramite

Visualizzazione dati sottomaschera

Anonimo
2015-09-21T10:10:49+00:00

Buongiorno, ho aperto questo thread anche se realmente è la prosecuzione di "Problema con date".

Mi rivolgo a tutta la community ma in particolare a Sandro.

Nella maschera "msPolizze" ho la sottomaschera "smsPagamenti". In msPolizze, inserisco la DataScadenza,

il Premio e successivamente seleziono il Frazionamento dalla cbo. A questo punto, tramite codice vba,

viene calcolata la ScadenzaProssima (12 mesi dalla DataScadenza) e nella sottomaschera smsPagamenti

vengono creati tante record quanti sono le rate dovute al frazionamento.

Funziona tutto alla perfezione, l'unico problema è che nella sottomaschera non si vedono i dati. Se vado nella

tabella, collegata alla sottomaschera, i dati sono presenti e corretti. Ma nella sottomaschera non si vedono.

Credo di aver controllato tutte le impostazioni della maschera Master e della child ma non sono riuscito a trovare

niente. Per completezza posto il codice che mi ha gentilmente suggerito Sandro.

Private Sub popolaDettagli()

On Error GoTo errorHandler

Dim i As Integer

Dim strSQL

Me.Dirty = False

Me.DataProssimaScadenza = DateAdd("m", 12, Me.DataScadenza)

DBEngine.BeginTrans

    For i = 1 To Me.cboIDFrazionamento.Column(3)

       strSQL = "insert into tblPagamenti (IDPolizza,DataPagamento,Importo) " & _

                 "select IDPolizza" & ",#" & Format(DateAdd("m", Me.cboIDFrazionamento.Column(2) * i, Me.DataScadenza), "yyyy-mm-dd") & "#, " & _

                 Me.Premio / Me.cboIDFrazionamento.Column(3) & _

                 " from tblPolizze where IDPolizza=" & Me.IDPolizza

                 'Debug.Print strSql

                 DBEngine(0)(0).Execute strSQL, dbFailOnError

    Next

DBEngine.CommitTrans dbForceOSFlush

Me.Dirty = False

ext_errorLoadAccountHandler:

    Exit Sub

errorHandler:

    DBEngine.Rollback

    With Err

        MsgBox "ERR#" & .Number _

            & vbNewLine & .Description _

            , vbOKOnly Or vbCritical

    End With

    Resume ext_errorLoadAccountHandler

End Sub

Rimango in attesa e ringrazio anticipatamente.

Fausto.

Microsoft 365 e Office | Accesso | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2015-09-21T17:47:30+00:00

    ciao Fausto,

    ho svincolato l'origine dati della maschera principale dalla combo cboCercaPolizza, quando apri la maschera è sempre null in quanto non associata...e non gestita puntualmente...inoltre essendo null, la maschera non mostra record, ovviamente non ne trova.

    allo stesso tempo, sicronizzo maschera principale con polizza selezionata dalla combo di cui sopra in questo modo :

    With Me.RecordsetClone

        .FindFirst "idpolizza=" & Me.cboCercaPolizza

        If Not .NoMatch Then

            Me.Bookmark = .Bookmark

        End If

    End With

    così' ottieni lo stesso risultato scatenando l'evento dopo aggiornamento della combo di cui sopra.

    poi.

    dopo l'esecuzione della transazione, invocando un Me.smsPagamenti.Form.Requery, la subForm mostra i nuovi records.

    anche se l'esempio che mostri non è proprio fedelissimo al mio, sono dubbioso che il requery serva....ma visto che dopo numerosi tentativi e tribolazioni non ho ottenuto il risultato voluto ho desistito al requery.

    portafoglioPolizze3.accdb  http://1drv.ms/1V66DdO.

    Facci sapere.

    Ciao, Sandro.

    ps. mi scuso per avere fraintesto...ma dopo mezz'ora....capisco subito......! :-)

    La risposta è stata utile?

    0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-09-21T11:44:42+00:00

    Ciao Sandro, ringrazio anche te per l'intervento. Il ragionamento utilizzato funziona alla perfezione, l'ordine di inserimento viene controllato e rispettato così per come tu hai previsto nel tuo esempio.

    Forse,  non ho spiegato bene il problema. Riprovo. 

    Dopo aver inserito le informazioni nell'ordine corretto (DataScadenza, Premio, scelta del Frazionamento), nel tuo esempio la sottomaschera si popola con le cadenze relative al frazionamento scelto, il numero della polizza e l'importo suddiviso in base al frazionamento; nel mio db non si popolano gli oggetti della sottomaschera ma i dati vengono correttamente scritti nella tabella. E' solo un problema di visualizzazione dei dati che vengono scritti. 

    Poi, l'eventualità di mettere un Msgbox qualora si tenti di effettuare una seconda scelta del frazionamento è una giusta (come al solito) osservazione.

    In quanto alla variabile Dim strSQL, nel tuo esempio non era definita. Io sono stato costretto a definirla altrimenti mi dava errore.

    Tra un po provo ad inviare il db...

    Grazie sempre.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-09-21T11:21:43+00:00

    ciao Fausto,

    con la logica con cui abbiamo ragionato, la sottomaschera visualizza i dati non appena hai inserito la cadenze ( selezionandole dalla combo id_frazionamento) e a patto di avere popolato prima i controlli relativi alla scadenza polizza e all'importo del premio, solo un prima istanza in fase elaborazione della polizza diciamo così.

    Da qui il suggerimento del post precedente di inserire una procedure di controllo per la validazione della form.

    Ma andiamo avanti su questo topic.

    Se necessiti apportare variazioni perché la cadenza deve essere modificata in quanto per errore l'hai inserita in modo errato il me.requery da solo non va bene, e non è sufficiente.

    Perché?

    Perché l'evento dopo aggiornamento della comboBox id_frazionamento  si scatena tutte le volte che modifichi la combo id_frazionamento (se selezioni in seconda, in terza, quarta e via dicendo battuta una cadenza diversa da quella selezionata la prima volta) e si accodando alla stessa polizza oltre che le scadenze ( stavolta con la S) create in automatico la prima volta, anche quelle generate le altre volte.

    Quindi se necessiti rivedere la cadenza  ( senza S) in quanto errata e/o comunque modificarle devi eliminare quelle create in prima istanza, altrimenti come detto, lo scatenarsi dell'evento dopo aggiornamento ti accoda altre scadenze ( senza S) a quelle già esistenti.

    vedrei bene una msgbox che avvisa, -  se clicchi una seconda volta la combo id_frazionamento - che ci sono delle scadenza già assegnate con la richiesta di eliminarle con richiesta di procedere si o no. 

    Se si elimini e riassegni le nuove se no, lasci tutto come è.

    Spero di essermi spiegato... :-) e di avere colto appieno il senso del tuo post.

    Ciao, Sandro.

    ps. modifica questa riga da cosi : Dim strSQL a Dim strSQL as string.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-09-21T10:56:48+00:00

    Ciao Mimmo, grazie per l'intervento. Il tuo suggerimento è giusto ma anche inserendo il requery (lo avevo fatto precedentemente ma poi lo avevo tolto in quanto nel codice di Sandro non c'era e la sua Sottomaschera si aggiornava correttamente mostrando tutti i dati) i dati non spuntano. Nella tabella vengono scritti correttamente ma nella sottomaschera non vengono visualizzati. Ho controllato il collegamento della child alla master ma è corretto...

    Dopo prando posto il db senza dati sensibili per agevolarvi.

    Intanto ti ringrazio Mimmo!!.

    Fausto.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-09-21T10:30:50+00:00

    Ciao Fausto,

    da quello che dici sembra solo che è necessaria una requery della sotto-maschera dopo l'inserimento.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento