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

    Update PrimaryKey Tabella in Vb.Net

    Ciao a tutti, ho un datagrid su una pagina aspx che mi permette di inserire, modificare e cancellare le righe di un ordine a cliente. Quando inserisco una riga e la confermo questa mi viene salvata sulla tabella anche se non salvo tutto l'ordine. Il problema sorge quando ad esempio ho 3 righe e devo cancellare quella in mezzo. A video ne rimangono due ma la numerazione del campo riga a database è errato infatti la prima riga visualizzata ha come campo NrRiga=1 mentre la seconda riga visualizzata ha come campo NrRiga=3. Avrei bisogno perciò di rinumerare le righe ogni volta che ne cancello una ma essendo il campo NrRiga una chiave primaria mi da errore e mi dice che non è possibile inserire una chiave duplicata. Riesco a fare una cosa simile o sto perdendo solo il mio tempo?

    Questa è la procedura che ho sviluppato:

    codice:
        Public Function RinumeraRighe() As Boolean
            Dim oConn As System.Data.SqlClient.SqlConnection
            Dim oComm As System.Data.SqlClient.SqlCommand
            Dim oReader As System.Data.SqlClient.SqlDataReader
            Dim sSQL As String
            Dim j As Integer = 0
    
            sSQL = "SELECT * FROM RigheOrdOnLine WHERE Agente='" & AgenteLog.Text + "' AND NrOrdine='" & m_NrOrdine.Text & "'"
    
            oConn = New System.Data.SqlClient.SqlConnection(sConn)
            oConn.Open()
    
            oComm = New System.Data.SqlClient.SqlCommand(sSQL, oConn)
            oReader = oComm.ExecuteReader()
    
            'Assegno il valore recuperato dalla query 
            While oReader.Read()
                j = j + 1
                'Prepare SQL string
                Dim commandString As New System.Text.StringBuilder()
                commandString.Append("UPDATE RigheOrdOnLine SET ")
                commandString.Append("NrRiga='" & j & "'")
                'Send to DB and execute
                performDBOperation(commandString.ToString)
            End While
    
            ' Chiudo il reader.
            oReader.Close()
            ' Chiudo la connessione.
            oConn.Close()
            ReadRigheOrdOnLine()
            Return True
        End Function

    Grazie ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    204

    Re: Update PrimaryKey Tabella in Vb.Net

    Originariamente inviato da Kociss.Net
    Ciao a tutti, ho un datagrid su una pagina aspx che mi permette di inserire, modificare e cancellare le righe di un ordine a cliente. Quando inserisco una riga e la confermo questa mi viene salvata sulla tabella anche se non salvo tutto l'ordine. Il problema sorge quando ad esempio ho 3 righe e devo cancellare quella in mezzo. A video ne rimangono due ma la numerazione del campo riga a database è errato infatti la prima riga visualizzata ha come campo NrRiga=1 mentre la seconda riga visualizzata ha come campo NrRiga=3. Avrei bisogno perciò di rinumerare le righe ogni volta che ne cancello una ma essendo il campo NrRiga una chiave primaria mi da errore e mi dice che non è possibile inserire una chiave duplicata. Riesco a fare una cosa simile o sto perdendo solo il mio tempo?

    Grazie ciao
    Senza offesa, ma stai perdendo il tuo tempo! Sto scherzando, ok?

    Quando un campo è una chiave primaria, essa viene gestita dal database. Il comportamento da te descritto è perfettamente normale.

    L'unica cosa che puoi fare è creare un campo apposito dove aggiorni ogni volta il numero in ordine crescente esatto. Ma c'è qualche motivo particolare che ti spinge a questa soluzione?

    Ciao e buona Pasqua!

  3. #3
    ciao....quello che mi spinge a provare a fare una cosa simile è il fatto che nel momento in cui vado a modificare le mie righe, per recuperarmi tutti i dati, faccio una query sul db per riga solo che la riga che gli passo io è l'index del datagrid che mi risulta errato quindi automaticamente non andrà mai in modifica della mia riga....quello che ho fatto alla fine è stato inserire un'altra colonna nel datagrid, non visibile, che mi riporta il numero esatto della riga....alla fine non è un problema se ho le righe numerate in maniera errata tipo 1, 3, 6 l'importante è che quando decido di modificare la riga tre modifichi quella esatta e salvi soprattutto le modifiche. Tanti auguri anche a te e grazie Kiss eli

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    204
    Per sapere l'id dall'index del datagrid hai un'altra strada. Tra le proprietà del datagrid c'è "DataKey", in cui inserisci in formato stringa il nome della colonna contenente l'id.

    Quindi, ottenuto l'index di riga dal datagrid, per sapere il contenuto dell'id di quella riga, ti è sufficiente:

    codice:
    dim id as integer=DataGrid1.DataKeys(index_datagrid)
    Semplice, vero?

    Ciao

  5. #5
    si infatti....terrò presente per la prossima volta....Grazie mille...
    Ciao eli

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.