Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [VB6]Problema cache con recordset

    Ciao.
    Ho un pulsante che se premuto apre un inizializza un recordset con il numero di record in una tabella.
    Il problema è che se premo il pulsante con la tabella vuota il recordset mi restituisce "0", se poi inserisco un record nella tabella e ripremo il pulsante, il recordset mi continua a restituire 0.
    Solo se premo più di una volta il command il RS mi da "1".
    Questo è il codice della command:
    codice:
    qVerifica = "SELECT IDImmobile FROM DescrizImmob WHERE IDImmobile = " & lblValCodice.Caption
    RsVerifica.Open qVerifica, CnImmGiudiz, adOpenDynamic,adLockOptimistic
    If RsVerifica.RecordCount <> 0 Then
       istruzioni
    Else
       MsgBox RsVerifica.RecordCount
    End If
    RsVerifica.Close
    CnVerifica.Close

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    Dovrebbe essere un problema di Vb nella velocità di aggiornamento recordset !!! hai provato quando inserisci un record nella tabella ha chiudere ed riaprire il recordset che hai aggiornato !!!
    codice:
    rs.AddNew
    ....record inserito
    rs.update
    rs.close
    rs.open

  3. #3
    Si. Ogni volta apro il rs-inserisco-richiudo il rs, ma non funziona.
    Non c'è un modo per forzare il refresh del recordset o del db?

  4. #4
    ...oppure si potrebbe inserire un ritardo, prima di rendere il command di nuovo disponibile.
    Come?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    :master: :master: prova a postarmi il codice che usi x l'inserimento....

    codice:
    RsVerifica.Open qVerifica, CnImmGiudiz, adOpenDynamic,adLockOptimistic
    Ricordati che se utilizzi access come motore di database vb non accetta la proprietà adOpenDynamic e se non ricordo male te la converte lui automaticamente in adOpenStatic,prova a convertire il tuo codice "rs-inserisco" e "RsVerifica" con adOpenKeyset

    ciao

  6. #6
    Ho provato a cambiare l'apertura del rs in adOpenKeyset, ma non funziona lo stesso.
    Posto il codice:
    codice:
    Private Sub cmdSalva_Click()
    CnVerifica.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=HM.mdb;"
    CnVerifica.CursorLocation = adUseClient
    
    If RsImmGiudiz.State <> adStateOpen Then
        qImmGiudiz = "SELECT * FROM ImmobiliGiudiz"
        RsImmGiudiz.Open qImmGiudiz, CnVerifica, adOpenKeyset, adLockOptimistic
    End If
    qVerifica = "SELECT IDImmobile FROM DescrizImmob WHERE IDImmobile = " & lblValCodice.Caption
    RsVerifica.Open qVerifica, CnImmGiudiz, adOpenKeyset, adLockOptimistic
    
    If RsVerifica.RecordCount <> 0 Then
    
    If lblValCodice.Caption <> "" And txtEsecuzione.Text <> "" And SaveCheck = False Then
            RsImmGiudiz.AddNew
            SalvaCampi
            RsImmGiudiz.Update
            NaviPrimaScelta True
            NaviConfermaScelta False
            FuncCampi True, &HCBBD14
    ElseIf lblValCodice.Caption <> "" And txtEsecuzione.Text <> "" And SaveCheck = True Then
            SalvaCampi
            RsImmGiudiz.Update
            NaviPrimaScelta True
            NaviConfermaScelta False
            FuncCampi True, &HCBBD14
    Else
        MsgBox "Dati Obbligatori Mancanti", vbCritical + vbOKOnly
        txtEsecuzione.SetFocus
    End If
    Else
        MsgBox RsVerifica.RecordCount
    End If
    RsVerifica.Close
    'Set RsVerifica = Nothing
    CnVerifica.Close
    'Set CnVerifica = Nothing
    End Sub

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    If RsImmGiudiz.State <> adStateOpen Then
    qImmGiudiz = "SELECT * FROM ImmobiliGiudiz"
    RsImmGiudiz.Open qImmGiudiz, CnVerifica , adOpenKeyset, adLockOptimistic
    End If
    qVerifica = "SELECT IDImmobile FROM DescrizImmob WHERE IDImmobile = " & lblValCodice.Caption
    RsVerifica.Open qVerifica, CnImmGiudiz , adOpenKeyset, adLockOptimistic
    ... scusa ma apri 2 connection differenti ... ma su 2 database differenti o è lo stesso database ??????
    e hai provato ad aggiungere i metodi di transizione ???BeginTrans,
    CommitTrans sulla connection ???

    codice:
    cn.BeginTrans
    rs_fornitore.AddNew
    rs_fornitore("Rag_soc") = txtfornitore.Text
    rs_fornitore("contatto") = txtcontatto.Text
    rs_fornitore("indirizzo_for") = txtind_fornitore.Text
    rs_fornitore("piva") = txtpivafor.Text
    rs_fornitore("citta_for") = txtcap_fornitore.Text
    rs_fornitore("cap") = txtcap_fornitore.Text
    rs_fornitore("prov") = txtprov_fornitore.Text
    rs_fornitore("tel_for") = txttel_for.Text
    rs_fornitore("fax_for") = txtfax_for.Text
    rs_fornitore("email_for") = txtemail_for.Text
    rs_fornitore("cel") = txtcel_for.Text
    rs_fornitore.Update
    cn.CommitTrans

  8. #8
    Le due connessioni puntano allo stesso db, ne avevo create due sole perchè volevo provare a vedere se il problema di "lentezza" era sulla connessione, ma così non è.
    La ":BeginTrans" e la ".CommitTrans" non le ho mai usate di cosa si tratta? Devo andare a vedere la guida.

  9. #9
    Prova a fare questa modifica:

    codice:
    qVerifica = "SELECT IDImmobile FROM DescrizImmob WHERE IDImmobile = '" & lblValCodice.Caption & "'"

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    245
    La ":BeginTrans" e la ".CommitTrans" non le ho mai usate di cosa si tratta? Devo andare a vedere la guida.
    Francesco Balena dice :
    Il metodo CommitTrans esegue il commit della transazione corrente, cioè rende permanenti nel
    database tutte le modifiche apportate. Il metodo RollbackTrans esegue invece il rollback della transazione
    corrente, annulla cioè tutte le modifiche che il codice ha eseguito mentre la transazione era attiva.
    Potete essere certi che un metodo CommitTrans scriva in modo permanente i dati nel database solo
    se la transazione è di primo livello, perché in tutti gli altri casi la transazione corrente è nidificata in
    un’altra di cui è possibile eseguire il rollback.
    ( Francesco balena = Guru di vb )www.vb2themax.com

    di solito io le uso x la gestione errore su database, ma anche x forzare il commit sul database !!!!

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.