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

    [VB6] Errore scrittura su DB

    Salve...
    Ho un problema con la scrittura sul database che non riesco a risolvere da giorni...

    Ho un form con vari controlli checkbox cliccando i quali si accedi a diversi altri form in cui ci sono altri checkbox e degli OptionButton e un pulsante di conferma premendo il quale si attiva questo codice (ne posto una parte, si ripete per i vari checkbox)
    codice:
        sql = "SELECT * FROM funzioni WHERE id=" & configura.listfun.SelectedItem.Text
        rs.Open sql, cn, 3, 3
        If chk43a.Value Then
            rs!ambp43a = True
        Else
            rs!ambp43a = False
        End If
        rs!ambp43asl = opt43a(0)
        rs!ambp43ains = opt43a(1)
        rs!ambp43aeli = opt43a(2)
    
        '[...]
    
        rs.update
        rs.close
        unload confp43 'scarica se stesso
    Alla fine il form viene scaricato e torna attivo il primo form di cui vi ho parlato. Se a questo punto premo il tasto di conferma anche in questo form parte questo codice:

    codice:
    Private Sub pulsconf_Click()
        sql = "SELECT * FROM funzioni WHERE id=" & configura.listfun.SelectedItem.Text
        rs2.Open sql, cn, 3, 3
        If chk4.Value = 1 Then rs2!p4 = True Else rs2!p4 = False
        If chk5.Value = 1 Then rs2!p5 = True Else rs2!p5 = False
    
        '[....]
    
        If chk44.Value = 1 Then rs2!ambp44 = True Else rs2!ambp44 = False
        If chk45.Value = 1 Then rs2!ambp45 = True Else rs2!ambp45 = False
        If chk46.Value = 1 Then rs2!ambp46 = True Else rs2!ambp46 = False
        rs2.Update
        rs2.Close
        Unload confacc
    End Sub
    Ma mi da questo errore su "rs2.update"

    "Il modulo di gestione di Database Microsoft Jet ha interrotto l'elaborazione. Un altro utente sta tentando contemporaneamente di modificare gli stessi dati."

    Il record che deve essere aggiornato è lo stesso che viene aggiornato col pulsante di conferma dell'altro form, quello che è stato appena chiuso.

    Perchè ottengo questo errore? Come posso evitarlo?

    Grazie mille in anticipo e scusate la lunghezza del post..
    zoodany..

    www.zoodany.it

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ci sono dei campi memo nel tuo database?

  3. #3
    Originariamente inviato da oregon
    Ci sono dei campi memo nel tuo database?
    Si... Perchè?

    Sono in altre tabelle, non nel record in questione...

    Grazie per l'interessamento...
    zoodany..

    www.zoodany.it

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per il tipo di errore e per come si e' presentato, sembra un problema (noto) di "corruzione del database" causato appunto dalla corruzione di campi memo. Puoi provare a riparare il database. Se utilizzi una "vecchia" versione di Access, ti consiglio di utilizzarne una piu' recente (almeno quella di Access 2000 ...).

  5. #5
    Originariamente inviato da oregon
    Per il tipo di errore e per come si e' presentato, sembra un problema (noto) di "corruzione del database" causato appunto dalla corruzione di campi memo. Puoi provare a riparare il database. Se utilizzi una "vecchia" versione di Access, ti consiglio di utilizzarne una piu' recente (almeno quella di Access 2000 ...).
    La versione di Access è recente, è il 2003...

    Quel problema purtroppo non è noto a me...

    Come faccio a verificare che il DB sia effettivamente "corrotto"? E a ripararlo??
    Mi basta anche un link con le eventuali spiegazioni..

    Grazie ancora per l'aiuto...

    PS:trovo qualcosa su google? semmai cerco lì, ormai domattina però, non reggo più adesso...
    zoodany..

    www.zoodany.it

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La riparazione si fa dall'apposito menu di Access, oppure con ADO/DAO, o ancora con il tool JetComp (quest'ultimo non so se lavora con le versioni 2003 ... dovresti provarlo ... guarda alla pagina http://support.microsoft.com/default...;en-us;Q273956).

    Anche se per versioni precedenti, alla pagina http://support.microsoft.com/kb/182867/en-us viene indicato che il primo messaggio (il tuo caso) puo' essere causato da corruzione di campi MEMO/OLE. Il fatto che sia riferito a db di versioni precedenti non mi consola ... probabilmente il problema si presenta ancora nella versione da te utilizzata (non so se il tuo db e' "nato" con la nuova versione o e' stato "aggiornato" da una versione precedente, cosa che potrebbe spiegare facilmente i problemi ...).

    Un modo di affrontare la cosa potrebbe essere quella di creare un nuovo db da zero e importare dal vecchio tutte le tabelle e i dati ...

    Una alternativa sarebbe rinunciare ai dati di tipo Memo se un campo di tipo Testo puo' bastare ...

    O, tagliando la testa al toro, utilizzare un DBMS serio (SQL Server/MSDE, Oracle, MySql ...). Dovrebbe esistere una versione 2005 di SQL Server piu' o meno gratuita ... dai un'occhiata.

  7. #7
    Allora...
    Ho provato a ripristinare il DB da Access ma non è cambiato nulla, JetComp pare non funzionare col 2003, mi da un errore relativo al formato del DB e non fa nulla...

    Allora ho provato a creare da zero un nuovo DB nel quale ho importato le tabelle del vecchio DB ma NON i dati.. E mi dà lo stesso errore... I dati presenti in questo nuovo DB sono solo quelli del record su cui lavorano le routine che ho postato sopra, non c'è nessun altro record, ne nelle altre tabelle, ne in quella dove c'è quello su cui mi dà l'errore.. E in questo record non ci sono campi Memo... In questa situazione credo che il nuovo DB non sia corrotto, ma l'errore c'è sempre...

    Cmq se il DB fosse stato corrotto non avrebbe dovuto darmi lo stesso errore anche in altre parti del progetto? Invece me lo dà sempre e solo lì... (anche col DB pieno di dati che ho usato fin'ora..)

    Non so più dove battere la testa....

    Grazie per il tuo tempo..
    zoodany..

    www.zoodany.it

  8. #8
    Forse ho trovato un ecamotage, poco elegante e probabilmete poco sicuro ma per ora pare funzionare..
    Ho notato che se al momento dell'errore entro nel debug, e con F8 riprendo l'esecuzione, l'aggiornamento viene completato, mah...

    Allora ho modificato il codice così:
    codice:
        On Error GoTo AGGIORNA '****
        sql = "SELECT * FROM funzioni WHERE id=" & configura.listfun.SelectedItem.Text
        rs2.Open sql, cn, 3, 3
        If chk4.Value = 1 Then rs2!p4 = True Else rs2!p4 = False
        If chk5.Value = 1 Then rs2!p5 = True Else rs2!p5 = False
        If chk6.Value = 1 Then rs2!p6 = True Else rs2!p6 = False
    
        [...]
    
        If chk45.Value = 1 Then rs2!ambp45 = True Else rs2!ambp45 = False
        If chk46.Value = 1 Then rs2!ambp46 = True Else rs2!ambp46 = False
    AGGIORNA:    '****
        rs2.Update
        rs2.Close
        Unload confacc
    Le righe aggiunte sono quelle con gli asterischi... In pratica in caso di errore gli faccio ripetere l'operzione e funziona, il db viene aggiornato correttamente...

    Come si spiega tutto ciò??

    zoodany..

    www.zoodany.it

  9. #9
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, effettivamente, come ti ha detto oregon, quello è un errore che, nella maggior parte dei casi, è dovuto al db corrotto..
    Prova a crearti un nuovo db, senza importare la struttura da quello vecchio, ma riscrivi tutto a mano.
    Prova anche ad effettuare l'aggiornamento della tabella tramite query:
    UPDATE Tabella SET campo1 = valore1,campo2 = valore2,... WHERE id = valoreId
    Jupy

  10. #10
    Originariamente inviato da Jupy64
    Ciao, effettivamente, come ti ha detto oregon, quello è un errore che, nella maggior parte dei casi, è dovuto al db corrotto..
    Capisco... Ma come può essere successo che si sia corrotto?
    zoodany..

    www.zoodany.it

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.