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

    Vb.net - Elimina record da DataRow

    Ciao a tutti. Scrivo perché ho un problema con l'eliminazione di un record da una datarow e il successivo aggiornamento del Dataset. Vi chiedo se potete dirmi dove sbaglio.

    Da una tabella devo eliminare un record che corrisponde a determinati parametri.


    1. Innanzitutto mi creto una datarow che mi serve per estrarre il record che mi interessa dalla mia tabella:

    Dim RemovingRow() As DataRow = MyDataset.MyDataTable.Select("IdGenerale = 4044 AND IdTematica = 1")


    2. Se la Datarow contiene record allora ...:

    If RemovingRow.Length > 0 Then

    If (MsgBox("Sei sicuro di voler eliminare il primo record?", MsgBoxStyle.YesNo, " Eliminazione record")) = MsgBoxResult.Yes Then

    'Rimuovo il record

    MyDataset.MyDataTable.Rows.Remove(RemovingRow(0))

    'Aggiorno l'origine dati

    MyDataAd.Update(MyDataSet)

    Else

    Exit Sub

    End If

    End If


    Nonostante mi sembra il ragionamento funzioni bene, non mi elimina il record.


    Grazie per l'eventualre risposta.


    Daniele

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    MyDataset.MyDataTable.Rows.Remove(RemovingRow(0))
    RemovingRow(0) questo cosa ti restituisce ???

  3. #3
    RemovingRow(0) mi restituisce il primo record della dataRow.

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    li io penso voglia l'indice della riga da eliminare....

  5. #5
    l'errore è che il datarow può contenere un solo record.... è il dataview che può contenerne più di un datarow... quindi quando elimini la riga del datarow, non esiste più niente all'interno della variabile datarow....
    I database... la mia passione + o -

  6. #6
    Non ho capito Power.mobile cosa intendi. Hai un esempio pre cancellare un record da una datarow e quindi aggiornare i dati della tabella di origine?

    Grazie.

    Daniele

  7. #7
    siccome la variabile che dichiari come una datarow punta e non è un collegamento dovresti fare così:

    codice:
    'per trovare il record nella table
    for each dr as datarow in TuaTabella
      if dr("idgenerale")=4044 and dr("idtematica")=1 then
      exit for
      end if
    next
    
    dr.delete
    
    tuoadapter.update(tuatabella)
    codice:
    'questo se il record lo selezioni in una datagrid
    dim dv as dataview
    
    dv=tuagrid.datasource
    
    dv.table.rows(tuagrid.rigacorrente.delete
    
    tuoadapter.update(tuatabella)
    la scritta in blu "rigacorrente" è perchè al momento non mi ricordo come si chiama la proprietà che mi restituisce la riga selezionata della grid.
    I database... la mia passione + o -

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    c'è currentcell

  9. #9
    Grazie Power.mobile per la risposta interessante. Ho provato a farlo in questo modo:

    'per trovare il record nella table
    For Each RemovingRow As DataRow In MyTable
    If RemovingRow("IdGenerale") = IdGeneraleDaRimuovere And RemovingRow("IdTematica") = IdTematicaDaRimuovere Then
    If (MsgBox("Sei sicuro di voler eliminare il record?", MsgBoxStyle.YesNo, " Eliminazione record")) = MsgBoxResult.Yes Then
    'Elimino la riga
    Conn.Materiale.tematiche_materiale.Rows.Remove(Rem ovingRow)
    'Accetto l'eliminazione
    Conn.Materiale.tematiche_materiale.AcceptChanges()
    'Aggiorno la tabella di origine
    Conn.MyDataAdapter.Update(MyDataSet)
    Exit For
    End If
    End If
    Next

    Ma non funziona ancora. La cosa incredibile è che se metto una msgbox che conta i record di MyTable dopo aver eliminato la riga, effettivamente mi dice che una riga è stata eliminata. Se però esco dal programma e ci rientro vedo che non è stata eliminata. Roba da perdersi!

    Sai darmi un ulteriore aiutino?

    Grazie e buona giornata.

    Daniele

  10. #10
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    sicuro che l'errore non è qui ???

    Conn.Materiale.tematiche_materiale.AcceptChanges()
    se tu fai questo AcceptChanges dopo nel dataset non risulta + nessuna riga modificata,e quindi di conseguenza non fa l'aggiornamento.

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.