Modifica dati database

di il
5 risposte

Modifica dati database

Buongiorno,
ho riscontrato un problema nella modifica dei dati nel mio programmino database:
funziona perfettamente se modifico i dati senza aver prima inserito un nuovo record, altrimenti se inserisco un nuovo record e poi vado a modificare uno esistente lo vede come un nuovo record.
Ci sto sbattendo la testa ma non riesco a risolvere il problema...

ecco il codice:
If txt_id.Text <> lbl_Id.Caption Then
    controllo_salvataggio ' controllo se il dato è già presente
       If lbl_verifica.Caption = "nuovo documento" Then
         If dbadd = True Then
            Call add_nuovomodificadocumento
            carica_volumi
         Else
            If dbedit = True Then
               Call edit_documento
            End If
          End If
        End If
  Else
        If lbl_verifica.Caption = "modifica documento" Then
            If dbadd = True Then
               Call add_nuovomodificadocumento
               carica_volumi
             Else
                 If dbedit = True Then
                    Call edit_documento
                 End If
              End If
         End If
 End If
       
 Form_Load
 
End Sub

5 Risposte

  • Re: Modifica dati database

    Da quel codice non si capisce nulla, ci sono tante chiamate ad altro codice che non si conosce...

    Dalla spiegazione che hai fatto si capisce ancora meno...

    Che dire?
  • Re: Modifica dati database

    Mi spiego meglio:
    Quando avvio il programma se modifico un record già presente nel db va tutto bene,
    ma se inserisco un nuovo elemento nel db e poi successivamente modifico un dato già presente non me lo modifica ma mi crea un nuovo record.
    ad es. se all'interno ho come record con id 4, 5, 6 e successivamente inserisco un nuovo record con id 7, se, per es. vado a modificare un capo del record con id 5, mi crea un antro record con id 5 e cioè, 4, 5, 5, 6, 7.
    Non succede tutto ciò se riavvio il programma e non inserisco nessun nuovo record.
    Forse sono un po' confusionario nella spiegazione,
    posto il codice di salvataggio riscritto un po meglio con le varie chiamate:
    Private Sub cmd_salva_Click()   
        controllo_salvataggio ' controllo se il dato è già presente
        
        If lbl_verifica.Caption = "nuovo documento" Then
           salvanuovo_documento
        Else
           salvamodifica_documento
        End If
    
    End Sub
    e queste le varie chiamate:
    Public Function controllo_salvataggio()
       Stringa = (schermata_volumi.txt_id)
       For I = 0 To schermata_volumi.lst_Volumi.ListCount - 1
       If Stringa = schermata_volumi.lst_Volumi.List(I) Then
          schermata_volumi.lbl_verifica.Caption = "modifica documento"
          Exit Function
       End If
       Next I
       schermata_volumi.lbl_verifica.Caption = "nuovo documento"
    End Function
    
    
    Public Sub salvanuovo_documento()
           If dbadd = True Then
                Call add_registradocumento
             Else
                If dbedit = True Then
                   Call edit_documento
                End If
              End If
    End Sub
    
    
    
    Public Sub salvamodifica_documento()
      errormsg = MsgBox("Documento già presente! sostituire?", vbExclamation + vbYesNo, "Delete Record")
        If errormsg = vbYes Then
                If dbadd = True Then
                   Call add_registradocumento
                   carica_volumi
                 Else
                     If dbedit = True Then
                        Call edit_documento
                     End If
                  End If
          Else
        Exit Sub
        End If
    End Sub
    
    
    
    Public Function add_registradocumento()
       rs.AddNew
       rs("id") = schermata_volumi.txt_id.Text
       rs("autore") = schermata_volumi.txt_autore.Text
    
       rs.Update
    End Function
    
    
    
    Public Function edit_documento()
       rs.Edit
       rs("id") = schermata_volumi.txt_id.Text
       rs("autore") = schermata_volumi.txt_autore.Text
    
       rs.Update
    End Function
  • Re: Modifica dati database

    E' impossibile risponderti senza controllare il codice in esecuzione tramite debug.

    Non si capisce cosa siano dbadd e dbedit né come siano valorizzati.

    Controlla con il debugger passo passo cosa succede quando tenti di eseguire la modifica di un elemento che esiste.

    In realtà NON dovresti controllare tu l' ID. Questo dovrebbe essere un indice senza duplicati e ti dovrebbe avvisare automaticamente il db in caso di tentativo di inserimento doppio.
  • Re: Modifica dati database

    A mio avviso stai facendo troppi 'giri' inutili che ti creano solo confusione.
    In realtà basta una sola routine SalvaDocumento a cui passi l'ID:

    Se l'ID è 0 (nuovo record) allora fai l'AddNew e l'ID te lo genera il database stesso,
    altrimenti (modifica record) salvi i dati con l'ID esistente.

    Nel tuo codice non si capisce né dove né come acquisisci l'ID per l'edit.

    Ti suggerisco di dare un'occhiata ad un mio progetto che è una sorta di template di un'applicazione database da cui prendere un sacco di spunti, a partire dall'accesso con Login, update, insert, Command, ecc... fino ad arrivare alla gestione multi-utente con concorrenza ottimistica.

    Login Project
    http://nuke.vbcorner.net/Projects/VB60/LoginProject/tabid/73/language/en-US/Default.aspx
  • Re: Modifica dati database

    Ok... grazie
Devi accedere o registrarti per scrivere nel forum
5 risposte