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

    [vb.net] Errore tableadapter.update

    Ho un semplice gestioanle con due tabelle, una con le aziende ed una con i contratti delle rispettive aziende, relazione 1 a molti. Il database è access e gli ho detto di applicare l'integrità referenziale, di aggiornare ed eliminare i campi correlati a catena.

    Per l'inserimento dei dati ho due datagridview ed un pulsantino che dopo aver aggironato i data grid effettua due update sui TableAdapter delle rispettive tabelle per aggiornare i loro contenuti, il codice è il seguente:
    codice:
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'Tasto di update datagrid: Eseguo prima il controllo delle tabelle, per controllare che non siano vuote.
            If (Me.AziendaTableAdapter.Update(Me.Db1DataSet.Azienda) <> 0) Then
                Me.AziendaTableAdapter.Update(Me.Db1DataSet.Azienda)
            End If
    
            If (Me.ContrattoTableAdapter.Update(Me.Db1DataSet.Contratto) <> 0) Then
                Me.ContrattoTableAdapter.Update(Me.Db1DataSet.Contratto)
            End If
        End Sub
    Ora, con il database immacolato, alla prima apertura del programma, quando faccio il primo inserimento e clicco il tasto per effettuare il tableadapter.update mi da il seguente errore:

    (l'errore me lo da solo al primo salvataggio con il database senza contenuti, a tutte le volte successive va liscio come l'olio)

    codice:
    Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra
    sono riportate in fondo al messaggio.
    
    ************** Testo dell'eccezione **************
    System.Data.OleDb.OleDbException: Impossibile aggiungere o modificare il record. Nella tabella "Azienda" è necessario un record correlato.
       in System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
       in System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
       in System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
       in System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
       in System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
       in Gestionale.db1DataSetTableAdapters.ContrattoTableAdapter.Update(ContrattoDataTable dataTable) in C:\Documents and Settings\Guido\Documenti\Visual Studio 2005\Projects\Gestionale\Gestionale\db1DataSet.Designer.vb:riga 2228
       in Gestionale.Form1.Button1_Click_1(Object sender, EventArgs e) in C:\Documents and Settings\Guido\Documenti\Visual Studio 2005\Projects\Gestionale\Gestionale\Form1.vb:riga 93
       in System.Windows.Forms.Control.OnClick(EventArgs e)
       in System.Windows.Forms.Button.OnClick(EventArgs e)
       in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       in System.Windows.Forms.Control.WndProc(Message& m)
       in System.Windows.Forms.ButtonBase.WndProc(Message& m)
       in System.Windows.Forms.Button.WndProc(Message& m)
       in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** Assembly caricati **************
    mscorlib
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    Gestionale
        Versione assembly: 1.0.0.0
        Versione Win32: 1.0.0.0
        Base di codice: file:///C:/Documents%20and%20Settings/Guido/Documenti/Visual%20Studio%202005/Projects/Gestionale/Gestionale/obj/Debug/Gestionale.exe
    ----------------------------------------
    Microsoft.VisualBasic
        Versione assembly: 8.0.0.0
        Versione Win32: 8.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
    ----------------------------------------
    System
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Windows.Forms
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System.Drawing
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Runtime.Remoting
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
    ----------------------------------------
    System.Data
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Xml
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Windows.Forms.resources
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    mscorlib.resources
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    System.Configuration
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Transactions
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
    ----------------------------------------
    System.EnterpriseServices
        Versione assembly: 2.0.0.0
        Versione Win32: 2.0.50727.42 (RTM.050727-4200)
        Base di codice: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
    ----------------------------------------
    
    ************** Debug JIT **************
    Per attivare il debug JIT, è necessario impostare il valore
    jitDebugging nella sezione system.windows.forms del file di configurazione
    dell'applicazione o del computer (machine.config).
    L'applicazione inoltre deve essere compilata con il debug
    attivato.
    
    Ad esempio:
    
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
    Quando il debug JIT è attivato, tutte le eccezioni non gestite
    vengono inviate al debugger JIT registrato nel computer,
    anziché essere gestite da questa finestra di dialogo.
    Saopete dirmi da cosa dipende e come eliminare tale errore?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    come dalla descrizione dell'errore, sembra che quando vai a scrivere il record in contatti, non esista ancora il record in Azienda.

    Prova, invece di fare l'update di contatti, a fate una select * su Azienda. vedi cosa restituisce.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  3. #3
    Originariamente inviato da vaitrafra
    come dalla descrizione dell'errore, sembra che quando vai a scrivere il record in contatti, non esista ancora il record in Azienda.

    Prova, invece di fare l'update di contatti, a fate una select * su Azienda. vedi cosa restituisce.
    Ho provato a seguire il tutto guardando il database: Il campo lo crea tranquillamente in azienda, e quindi c'è nel momento della creazione del campo in contratti.

    Non è che c'è bisogno di ricaricare i dati nel tableadapter tra un update e l'altro? è l'unica idea, per quanto "scema", che mi viene in mente.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  4. #4
    Il problema persiste, ho capito che ha problemi di "Relazione tra campi correlati" ma non ho capito il problema da cosa possa dipendere: Questo perchè io prima aggiungo l'azienda e poi il contratto. Tant'è che quando almeno un'azienda è presente funziona, perchè?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5
    Ad un campo, del datagrid corrispettivo alla tabella contratti, un campo che ho aggiunto da poco, mi da un'altro errore al quanto singolare:

    "Violazione di concorrenza: UpdateCommand ha modificato 0 dei 1 record previsti."

    Cosa sarebbe una violazione di concorrenza??
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  6. #6
    Ho capito dove sta il problema: Praticamente mi dice "che non c'è nulla da aggiungere nella tabella azienda".

    Io avevo messo:

    codice:
    If (Me.AziendaTableAdapter.Update(Me.Db1DataSet.Azienda) <> 0) Then
    Però già nella clausola dell'if mi effettua l'update, però se non c'è nulla da updatare ovviamente da errore.

    Come posso percepire l'evento di aggiunta o di modifica di dati nel datagrid in modo da eseguire un if più sensato?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.