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

    [vb.net] spostamento dati dataset

    Salve a tutti... ho un problema. Sto usando ado.net per collegarmi a un database di access.
    I dati della tabella "Collezione" vengono mostrati in un datagridview chiamato dgv1 mentre i dati della tabella "Mazzo" vengono mostrati in un datagridview chiamato dgv2

    Ho problemi a far andare questo pulsante che deve prendere i dati di una riga selezionata nel dgv1 e portarli nel dataset2 (das2) che è collegato al dgv2. Appena sposto tre diverse righe mi dice che la riga esiste già nella tabella e si blocca Stesso errore me lo dà se ho già spostato una riga, e la seconda tento di spostarla più di una volta.

    Cosa diavolo sto sbagliando????
    Fatemi sapere grazie


    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

    Dim dr As DataRow
    dr = das2.Tables("Mazzo").NewRow()

    'copia i dati da trasferire in una nuova riga del dataSet2
    Dim i, indexRiga1, colonne1, righeDas2 As Integer
    colonne1 = dgv1.ColumnCount - 1
    indexRiga1 = dgv1.CurrentRow.Index
    If dgv1.SelectedRows.Count > 0 Then
    For i = 0 To colonne1
    dr(i) = dgv1.Item(i, indexRiga1).Value
    Next
    dr(11) = 1 'è l'indicatore della quantità
    End If

    'se il dataSet2 è vuoto aggiunge direttamente la riga
    righeDas2 = das2.Tables("Mazzo").Rows.Count - 1
    If righeDas2 < 0 Then
    das2.Tables("Mazzo").Rows.Add(dr)
    End If

    'se il dataSet2 NON è vuoto controlla se è presente quella carta
    For i = 0 To righeDas2
    If das2.Tables("Mazzo").Rows(i).Item("Nome") = dr(1) And _
    das2.Tables("Mazzo").Rows(i).Item("Col") = dr(5) And _
    das2.Tables("Mazzo").Rows(i).Item("Tipo") = dr(6) Then

    dr(11) = das2.Tables("Mazzo").Rows(i).Item("Giocate") + 1
    das2.Tables("Mazzo").Rows(i).Delete()
    das2.Tables("Mazzo").Rows.Add(dr)

    End If
    Else
    das2.Tables("Mazzo").Rows.Add(dr)
    End If
    Next

    End Sub

  2. #2
    nessuno sa aiutarmi?

  3. #3
    Ciao Lordgara
    Ma da qualche parte nella rete ... non ti avevo già risposto? :master: .... bho .. magari sbaglio io! :master:

    Comunque il problema è che dr è un oggetto datarow che appartiene già alla prima datatable, quindi, non puoi aggiungerlo ad un datatable diverso anche che abbia la stessa struttura.
    Devi creare un nuovo oggetto datarow con il metodo NewRow della seconda datatable, popolarlo ...... e poi aggiungerlo alla seconda datatable.

    Facci sapere....
    Ciao

  4. #4
    grazie per la risposta! no è la prima volta che mi pongo questo problema
    Ora provo poi vi dico!

  5. #5
    non so se ho capito bene. Ho provato ad usare un dr1 del das1 e un dr2 del das2, ma mi dà sempre lo stesso errore Mi sa che sto sbagliando ancora qualcosa.


    'pulsante che aggiunge una carta selezionata dalla libreria al mazzo
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

    Dim dr1 As DataRow
    Dim dr2 As DataRow
    dr1 = das1.Tables("Collezione").NewRow()
    dr2 = das2.Tables("Mazzo").NewRow()
    'copia i dati da trasferire in una nuova riga del dataSet1
    Dim i, indexRiga1, colonne1, righeDas2 As Integer
    colonne1 = dgv1.ColumnCount - 1
    indexRiga1 = dgv1.CurrentRow.Index

    If dgv1.SelectedRows.Count > 0 Then
    For i = 0 To colonne1
    dr1(i) = dgv1.Item(i, indexRiga1).Value
    Next
    End If

    For i = 0 To colonne1
    dr2(i) = dr1(i)
    dr2(colonne1 + 1) = 1
    Next

    'se il dataSet2 è vuoto aggiunge direttamente la riga
    righeDas2 = das2.Tables("Mazzo").Rows.Count - 1
    If righeDas2 < 0 Then
    das2.Tables("Mazzo").Rows.Add(dr2)
    End If

    'se il dataSet2 NON è vuoto controlla se è presente quella carta
    For i = 0 To righeDas2
    If das2.Tables("Mazzo").Rows(i).Item("Nome") = dr1(1) And _
    das2.Tables("Mazzo").Rows(i).Item("Col") = dr1(5) And _
    das2.Tables("Mazzo").Rows(i).Item("Tipo") = dr1(6) Then

    dr2(11) = das2.Tables("Mazzo").Rows(i).Item("Giocate") + 1
    das2.Tables("Mazzo").Rows(i).Delete()
    das2.Tables("Mazzo").Rows.Add(dr2)

    Else
    das2.Tables("Mazzo").Rows.Add(dr2)
    End If
    Next

    End Sub

  6. #6
    Puoi indicare in quale riga ti da errore(visto che add(dr2) lo usi in più parti del programma?) ???
    Hai qualche campo con chiave primaria?

    Facci sapere....
    Ciao

  7. #7
    allora per partire parte. Anche il pulsante funziona. Ti faccio un esempio di quando mi dà errore:

    dgv1
    ---------
    rigaA
    rigaB
    rigaC
    ---------

    sposto la rigaA per più di una volta --> ok

    dgv2
    ---------
    rigaA x5
    ---------

    sposto la rigaC una volta --> ok

    dgv2
    --------
    rigaA x5
    rigaC
    --------
    se sposto di nuovo la rigaC o la rigaB mi dà errore e dice "ArgumentException non è stata gestita" e poi "la riga appartiene già a questa tabella" sottolineando la parte di codice dove aggiungo la nuova riga per intenderci "das2.Tables("Mazzo").Rows.Add(dr2)". Nel caso precende che ho schematizzato mi dà errore nella condizione dove dico se esiste già il dato aumenta la sua quantità, te lo evidenzio qui sotto:

    For i = 0 To righeDas2
    If das2.Tables("Mazzo").Rows(i).Item("Nome") = dr1(1) And _
    das2.Tables("Mazzo").Rows(i).Item("Col") = dr1(5) And _
    das2.Tables("Mazzo").Rows(i).Item("Tipo") = dr1(6) Then

    dr2(11) = das2.Tables("Mazzo").Rows(i).Item("Giocate") + 1
    das2.Tables("Mazzo").Rows(i).Delete()

    ----> das2.Tables("Mazzo").Rows.Add(dr2) <-------

    Else
    das2.Tables("Mazzo").Rows.Add(dr2)
    End If
    Next


    Stesso errore me lo dà in qualsiasi combinazione di spostamenti se ho già 2 righe spostate e provo ad aggiungerne una terza.

    Per l'altra cosa scusa la mia ignoranza ma non so cosa sia un campo a chiave primaria Se può servire posso postare altro codice o addirittura tutto. ciao!

  8. #8
    trovato!!!!!!
    sbagliavo a inserire la riga! usando il comando .insertAt specificando dove voglio inserirla va perfettamente!

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.