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![]()

Rispondi quotando
Sto scherzando, ok?
