Listbox che non si aggiorna su nuovo record

di il
16 risposte

Listbox che non si aggiorna su nuovo record

Ciao a tutti ho creato una maschera con una listbox che mi permette di scegliere i record da poter modificare....
ho risolto il problema della scritta #eliminato aggiungendo un requery della listbox quando elimino il record...

se aggiungo un nuovo record invece non vi è modo di visualizzarlo in nessun modo se non uscendo e rientrando nella maschera...

16 Risposte

  • Re: Listbox che non si aggiorna su nuovo record

    Emadragon ha scritto:


    ...se aggiungo un nuovo record invece non vi è modo di visualizzarlo in nessun modo se non uscendo e rientrando nella maschera...
    Come aggiungi il record? Nella stessa maschera? Aprendo un'altra maschera? Qual è l'origine dati della listbox? Pubblica anche un po' di codice, magari quello in prossimità del requery che ha risolto di problema di "#eliminato"
  • Re: Listbox che non si aggiorna su nuovo record

    Allora ho creato il form con come base dati tbpagamento

    Poi ho inserito la listbox elencoscadenze come listbox ricerca record nella maschera (autocomposizione access)

    X risolvere il problema della cancellazione faccio un requery della listbox sulla evento afterconfirmdel ....
  • Re: Listbox che non si aggiorna su nuovo record

    Emadragon ha scritto:


    X risolvere il problema della cancellazione faccio un requery della listbox sulla evento afterconfirmdel ....
    Ma non sappiamo come aggiungi il record, cioè come fai l'operazione che ti costringe a chiudere e a riaprire la maschera per aggiornare la listbox.
  • Re: Listbox che non si aggiorna su nuovo record

    Col classico tasto aggiungi record
  • Re: Listbox che non si aggiorna su nuovo record

    Che c'è v8cino ai selettari di record
  • Re: Listbox che non si aggiorna su nuovo record

    Option Compare Database
    Private argomenti As Variant
    Private Chiudi As Boolean
    Private StrQuery As String
    
    Private Sub Form_AfterDelConfirm(Status As Integer)
        Me.ElencoScadenze.Requery
    End Sub
    
    Private Sub Form_Current()
        Me.ElencoScadenze.RowSource = StrQuery
        Me.ElencoScadenze.Requery
    End Sub
    
    Private Sub Form_Load()
        Dim x As Variant
        Dim strUNICO, xNome, xCognome, xRagione, xTipo, xnTipo As String
    
        Chiudi = False
        'Se i parametri esistono, li usano
        If Len(Me.OpenArgs) > 0 Then
            'Split crea una matrice in base zero dalla stringa di input
    
             x = Split(Me.OpenArgs, "|")
             argomenti = x
             Me.TotFatt = CCur(x(1))
             prova = CLng(x(0))
             Me.IDDocumento = prova
             'Me.ElencoScadenze.Requery
            
            StrQuery = "SELECT * FROM tbPagamento WHERE [IDocumento] = " + CStr(prova) + " ORDER BY [ScadPagamento], [Descrizione];"
    
            strUNICO = DLookup("[idUNICO]", "[tbDocumento]", "[ID] = " & Me.IDDocumento)
            xTipo = DLookup("[TipoDocumento]", "[tbDocumento]", "[ID] = " & Me.IDDocumento)
            xnTipo = DLookup("[TIPO]", "[tbTipoDoc]", "[IDTipoDoc] = '" & xTipo & "'")
            If Left(strUNICO, 3) = "SOC" Then
                xNome = DLookup("[Nome]", "[tbSoci]", "UNICO = '" & strUNICO & "'")
                xCognome = DLookup("[Cognome]", "[tbSoci]", "UNICO = '" & strUNICO & "'")
                xRagione = xNome + " " + xCognome
            Else
                xRagione = DLookup("[Ragione Sociale]", "[tbFornitori]", "UNICO = '" & strUNICO & "'")
            End If
            Me.ScadTitolo.Caption = xRagione
            Me.ScadTitolo2.Caption = xnTipo + " " + DLookup("[NumeroDoc]", "[tbDocumento]", "[ID] = " & Me.IDDocumento)
        End If
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        If (CCur(Me.ResScad.Value) = 0) Then
            Chiudi = True
        Else
            MsgBox "attenzione è necessario inserire tutte le scadenze prima di chiudere la maschera"
            Chiudi = False
        End If
        'MsgBox "finito"
            'Cancel = (Not Chiudi)
    End Sub
    
    Private Sub ScadPagamento_AfterUpdate()
        'MsgBox "ok"
        If Not (Me.IDDocumento > 0) Then
            identifica = CLng(argomenti(0))
            Me.IDDocumento = identifica
        End If
            
    End Sub
    

    questo è il codice...
    la listbox è elencoscadenze
  • Re: Listbox che non si aggiorna su nuovo record

    Hi capito quale EVENTO si scatena in seguito all'inserimento di un NUOVO RECORD...?
    Quello lo devi usare per il REQUERY della ListBox.
  • Re: Listbox che non si aggiorna su nuovo record

    Form_current non va bene?
  • Re: Listbox che non si aggiorna su nuovo record

    @Alex ha scritto:


    Hi capito quale EVENTO si scatena in seguito all'inserimento di un NUOVO RECORD...?
    Quello lo devi usare per il REQUERY della ListBox.

    Emadragon ha scritto:


    Form_current non va bene?
    Non va bene perché non è quello.
    Form_current è "solo" l'evento in cui tu hai scritto il codice che popola la listbox, basato su una variabile stringa, strQuery, che è stata valorizzata nell'evento Load della maschera.
  • Re: Listbox che non si aggiorna su nuovo record

    Emadragon ha scritto:


    Form_current non va bene?
    Se ti funziona si... altrimenti magari ci si deve riflettere...!
    Quando si verifica Current...? Perchè...?
    Quando INSERISCI un NUOVO Record(in fase di Insert) oppure quando lo hai appena Validato ed INSERITO...?
    A queste domande, la risposta INGANNEVOLE potrebbe essere SI ad entrambe... e quì lo sviluppatore deve sapere quello che fa, perchè se fai il Requery di Form... è evidente che si genera Current... ma sei in grado di discriminare l'avvenuto Inserimento...? (NO)

    Non so cosa ti costa mettere in essere un Messaggio negli Eventi di Maschera e verificare specificatamente quello che ti serve... ma se è proprio così complicato...
  • Re: Listbox che non si aggiorna su nuovo record

    In teoria current avviene anche quando cambio record della maschera proverò a inserire un pulsante per il Requery ma la vedo come una soluzione un po' obbligata nella maschera o dei campi che si calcola automaticamente e quelli non mi creano problemi
  • Re: Listbox che non si aggiorna su nuovo record

    Emadragon ha scritto:


    In teoria current avviene anche quando cambio record della maschera proverò a inserire un pulsante per il Requery ma la vedo come una soluzione un po' obbligata nella maschera o dei campi che si calcola automaticamente e quelli non mi creano problemi
    Posso dire la mia in maniera un po' "schietta"?
    A te interessa aggiornare il contenuto della listbox dopo aver inserito un record nella listbox: non si usa il pulsantino di modifica voci in elenco o simili. Si gestisce con un comando apposito, un pulsante, ad esempio, tramite il quale apri una maschera apposita in modalità sincrona, aggiorni la tabella da cui la listbox trae origine (visto il rowsource costruito in quel modo all'apertura non me la sento di chiamarla tabella associata alla listbox) e nella riga immediatamente successiva all'apertura della maschera metti un requery della listbox.
    Oppure non ho capito niente io perché dici che aggiungi un record con il classico pulsante vicino ai selettori di record e allora cosa c'entra la listbox?
    Propendo per la seconda. (me la suono e me la canto)
  • Re: Listbox che non si aggiorna su nuovo record

    Forse sono io che non mi spiego bene.....
    Ho creato una maschera simile allo stile "maschera divisa" ma siccome non mi piace la struttura stile gridbox ho creato una listbox che visualizza tutti i record presenti cliccando sulle righe della listbox posso modificare i record (è bastato creare una listbox "ricerca record nella maschera") se cambio valore nei campi la listbox si aggiorna ma se inserisco un nuovo record e lo salvo questo non viene visualizzato...
  • Re: Listbox che non si aggiorna su nuovo record

    Emadragon ha scritto:


    ...
    Ho creato una maschera simile allo stile "maschera divisa" ma siccome non mi piace la struttura stile gridbox ho creato una listbox che visualizza tutti i record presenti cliccando sulle righe della listbox posso modificare i record (è bastato creare una listbox "ricerca record nella maschera")...
    Abbandono perché non riesco a ricostruire "mentalmente" quella maschera (sono abituato a cose molto semplici da questo punto di vista). Ti affido al... resto del forum.
Devi accedere o registrarti per scrivere nel forum
16 risposte