Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Aggiornamento listview in altro form (Inspiegabile!!)

    Ho un form con una listview e un CommandButton. Cliccando sul CommandButton mi si apre un altro form da cui, tramiti textbox, inserisco un nuovo elemento nel database e aggiorno la listview dell'altro form..

    Il problema è che non mi aggiorna la listview, facendo il debug, invece, quindi eseguendo istruzione per istruzione con F8, mi aggiorna correttamente la listview, con l'esecuzione normale no...

    Come può succedere tutto ciò?!?!

    Grazie mille...

    zoodany...
    zoodany..

    www.zoodany.it

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mah ... magari vedendo il codice? Che dici?

  3. #3
    Hai ragione.. Non l'ho postato perchè un po' lungo...

    Comunque eccolo, questa è la routine dell'evento Click sul Button che vonferma l'inserimento nel DB del nuovo record:

    codice:
    Private Sub pulsok_Click()
        Dim ok As Boolean
        ok = False
        If Option1.Value = True And Len(txtval1.Text) > 0 And Len(txtarea.Text) > 0 Then
            ok = True
        End If
        If Option1.Value = False And Len(txtval1.Text) > 0 And Len(txtval2.Text) > 0 And Len(txtarea.Text) > 0 Then
            ok = True
        End If
        If ok Then
            sql = "ambindicatori"
            rs.Open sql, cn, 3, 3
            rs.AddNew
            rs("area") = txtarea.Text
            If Option1.Value Then rs("tipo") = "Fisso"
            If Option2.Value Then rs("tipo") = "Rapporto"
            If Option3.Value Then rs("tipo") = "Prodotto"
            If Option4.Value Then rs("tipo") = "Somma"
            If Option5.Value Then rs("tipo") = "Sottrazione"
            If Option6.Value Then rs("tipo") = "Variazione %"
            rs("nome1") = txtval1.Text
            rs("nome2") = txtval2.Text
            rs("tobi") = cmbobi.Text
            rs("obi") = txtobi.Text
            rs("cad") = cmbcad.Text
            If Len(txtgg.Text) > 0 Then
                rs("cadgg") = txtgg.Text
            End If
            rs.Update
            rs.Close
            aggiorna
            Unload ambinsind
        Else
            MsgBox "I campi ""Descrizione Area"" e ""Descrizione Primo Valore"" sono obbligatori, per gli indicatori di tipo NON fisso è obbligatorio anche il campo ""Descrizione Secondo Valore""", vbExclamation
        End If
    End Sub
    E questa è la funzione "aggiorna" che viene chiamata nella routine qui sopra, è quella che dovrebbe aggiornare la listview (listind) dell'altro form (ambipa), ma non lo fa..

    codice:
    Function aggiorna()
        sql = "SELECT * FROM ambindicatori ORDER BY cont"
        ambipa.listind.ListItems.Clear
        rs.Open sql, cn, 3, 3
        Do While Not rs.EOF
            Dim li As ListItem
            Set li = ambipa.listind.ListItems.Add(, , rs("cont"))
            li.ListSubItems.Add , , rs("area")
            If Len(rs("nome2")) > 0 Then
                Select Case rs("tipo")
                    Case "Rapporto": li.ListSubItems.Add , , rs("nome1") & " / " & rs("nome2")
                    Case "Prodotto": li.ListSubItems.Add , , rs("nome1") & " * " & rs("nome2")
                    Case "Somma": li.ListSubItems.Add , , rs("nome1") & " + " & rs("nome2")
                    Case "Sottrazione": li.ListSubItems.Add , , rs("nome1") & " - " & rs("nome2")
                End Select
            Else
                li.ListSubItems.Add , , rs("nome1")
            End If
            If Len(rs("tobi")) > 0 And Len(rs("obi") > 0) Then
                li.ListSubItems.Add , , rs("tobi") & " " & rs("obi")
            Else
                li.ListSubItems.Add , , "..."
            End If
            li.ListSubItems.Add , , rs("cad")
            rs.MoveNext
        Loop
        rs.Close
    End Function
    Il DB viene aggiornato perchè se chiudo e riapro il form con la listview quest'ultima comprende anche il record appena immesso...

    Grazie mille per l'aiuto..
    zoodany..

    www.zoodany.it

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prova ad usare queste due linee quando apri la connessione

    codice:
    Const JET_TCM_SYNCFLUSH = 1
    cn.Properties("Jet OLEDB:Transaction Commit Mode") = JET_TCM_SYNCFLUSH

  5. #5
    Niente da fare..... Fa uguale... La cosa che mi lascia perplesso è che eseguendo le sistruzione passo passo col debug la listview si aggiorna, nell'esecuzione normale, no.... Mah???

    Questo il codice dove apro la connessione con le istruzioni che mi hai consigliato... se può essere utile...

    codice:
        Dim stringA As String
        stringA = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        stringA = stringA & App.path & "\dbqualita.mdb"
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
        Const JET_TCM_SYNCFLUSH = 1
        cn.Open stringA
        cn.Properties("Jet OLEDB:Transaction Commit Mode") = JET_TCM_SYNCFLUSH
    zoodany..

    www.zoodany.it

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... l'oggetto cn e' sempre lo stesso ...?

  7. #7
    Originariamente inviato da oregon
    Scusa ... l'oggetto cn e' sempre lo stesso ...?
    Si, creo l'oggetto e apro la connessione nel Form Load e poi la uso in tutte le routine del form..
    zoodany..

    www.zoodany.it

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non sono riuscito a replicare il tuo problema (ho usato, piu' o meno, il tuo codice e funziona regolarmente ...) ...

    Se vuoi rendere disponibile il progetto per poterlo scaricare ... lo guardo e ti faccio sapere ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.