+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

[VBNET] cancellazione record da datagridview

  1. #1
    fabiof non è in linea Novello
    Post
    13
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,

    Lavorando da un pò con l'oggetto datagridview, mi è capitato questo imprevisto:
    ho un datagridview che formatto al form_load e a cui associo un dataset che presenta 2 campi chiave numerici.
    • Inserisco una riga nel datagridview
    • Subito dopo la cancello con il tasto canc
    • Mi sposto su un altro controllo della form
    • Torno a selezionare il mio datagridview
    Il programma mi presenta l'errore
    No null allowed exception was unhandled
    La colonna "NORDER" non accetta valori null

    potrei settare il campo del dataset NORDER con set AllowdbNull=true ma essendo il campo un campo chiave non posso farlo.
    Ho verificato che il dataset in questione nel momento dell'errore è vuoto, così come il datagridview, è come se dopo la cancellazione la griglia o il dataset rimanga in uno stato diverso da quello iniziale.
    Se qualcuno ha qualche idea per risolvere l'errore, grazie comunque.

  2. #2
    L'avatar di Cteniza
    Cteniza non è in linea Amanuense
    Post
    4,378
    Blogs
    36
    Like Inviati  
    0
    Like Ricevuti  
    0
    Mi sembra più che chiaro, hai una riga che contiene un valore null per uno o più campi, devi fare in modo che il tuo dataset accetti valori null per un determinato campo oppure provvedere il valore (zero) per il valore di default dei campi del dataset, proprietà defaultvalue
    ℹ️ Leggi di più su Cteniza ...

  3. #3
    fabiof non è in linea Novello
    Post
    13
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao,


    il fatto che il mio campo sia un campo chiave del dataset non mi permette di renderlo predisposto ad accettare valori nulli, come hai detto tu ho provato con l'impostare il valore di default a 0. Il fatto è che mi aggiunge delle righe vuote sulla griglia.


    Invece l'unico comando che sembra sortire qualche effetto è quello di ripulire il dataset appena ho cancellato la riga e dovrebbe essere già vuoto di suo.

    In pratica all'evento datagridview_RowValidating che scatta al momento in cui sposto il controllo su un'altro oggetto effettuo il datagridview.clear()

    Il tutto sembra funzionare, ma devo testarlo un pò perchè non sono molto sicuro della soluzione trovata.

  4. #4
    L'avatar di Cteniza
    Cteniza non è in linea Amanuense
    Post
    4,378
    Blogs
    36
    Like Inviati  
    0
    Like Ricevuti  
    0
    Se ti aggiunge delle righe vuote allora vuol dire che hai un problema e hai scritto del codice sbagliato o impostato male il tutto.
    Come prova di quanto dico allego un progetto con dataset, datagridview e due campi chiave
    in nessun modo sono riuscito a generare errori
    File allegati File allegati
    ℹ️ Leggi di più su Cteniza ...

  5. #5
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ti dico la mia opinione, che sarà sicuramente sbagliata e scatenerà le solite polemiche:

    Secondo me è successo questo:
    La grid è bindata ai campi che non consentono NULL.
    Crei un record. Il dataset si aspetta un ID, ma tu non glielo dai.
    Cancelli questo record. Il dataset stà ancora aspettando l'ID che tu non gli hai dato ( e che ci dovrebbe essere).
    Per questo ti provoca errore.

    Prova a fare così:
    Crei un record. Lo riempi e selezioni un nuovo controllo.
    Riselezioni la grid e cancelli il record.
    Selezioni un altro controllo.
    Riselezioni la grid.
    Teoricamente ti dovrebbe funzionare.

    Tieni le dita incrociate mentre compi queste operazioni (è fondamentale!)
    ℹ️ Leggi di più su cippalippa ...

  6. #6
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Like Inviati  
    0
    Like Ricevuti  
    0
    Come non detto. Ci sono troppe cose strane...
    Ho fatto anche io delle prove, ma non sono riuscito a bloccare l'applicazione.

    A quale evento hai abbinato il salvataggio del db?
    ℹ️ Leggi di più su cippalippa ...

  7. #7
    fabiof non è in linea Novello
    Post
    13
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da Cteniza Visualizza il messaggio
    Se ti aggiunge delle righe vuote allora vuol dire che hai un problema e hai scritto del codice sbagliato o impostato male il tutto.
    Come prova di quanto dico allego un progetto con dataset, datagridview e due campi chiave
    in nessun modo sono riuscito a generare errori
    Dunque ho provato con la tua applicazione e con la mia spogliandola di tutti gli eventi che avevo gestito nel datagridview il risultato è che su entrambe le applicazioni da lo stesso messaggio di errore.
    Sull'applicazione di prova che mi hai mandato ho valorizzato semplicemente i tre campi, quindi ho selezionato l'intera riga attraverso la prima cella (quella con la freccia di inserimento) ho fatto canc, mi sono spostato sulla label e poi sono tornato a selezionare la griglia, risultato da errore come se io stia già inserendo una nuova riga e ho lasciato a Null alcuni valori.

    Al momento unica ancora di salvezza è stato la cancellazione del dataset
    Me.dsDETTDOC.Clear() all'evento RowValidating
    Ultima modifica di fabiof; 28-04-2008 11:23 

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. vbnet 2010 Rimuovere righe in datagridview
    Da ljt nel forum Visual Basic .Net
    Risposte: 17
    Ultimo Post: 22-12-2020, 21:44
  2. Risposte: 5
    Ultimo Post: 28-10-2015, 20:12
  3. [VBNET] Eliminare Cartella e sottocartelle in FTP con vbnet
    Da Laiton nel forum Visual Basic .Net
    Risposte: 11
    Ultimo Post: 05-04-2014, 21:17
  4. Cancellazione Record
    Da sistemista nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 15-10-2009, 20:58
  5. Cancellazione Record ADO
    Da Ange nel forum Visual Basic 6
    Risposte: 52
    Ultimo Post: 29-05-2009, 12:42