Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106

    errore sul da.Update(......

    ciao a tutti,
    sono un paio di ore che sono qui sopra a questo errore..

    Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

    Praticamente stò facendo l'update di un data adapter contenente un dataset con una tabella generata da "select * from Utenti "
    perciò contenente tutti i campi
    ho visto e rivisto il codice ma dà sempre questo errore ...sapete dirmi come mai?

    grazie
    ps:questo è il codice
    codice:
            Dim id As String = Session.Item("id")
            Dim cn As New SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("CnString"))
            Dim da As New SqlClient.SqlDataAdapter("select * from Utenti", cn)
            Dim ds As New DataSet
            da.Fill(ds, "MyPData")
            da.FillSchema(ds, SchemaType.Source)
            Dim riga As DataRow
            Dim i As Integer = 0
            For Each riga In ds.Tables("MyPData").Rows
                If riga("ID") = id Then
                    riga("Nome") = txtNome.Text
                    riga("Cognome") = txtCognome.Text
                    riga("Via") = txtVia.Text
                    riga("Citta") = txtCitta.Text
                    riga("Cap") = txtCap.Text
    
                    If txtTelefono.Text.Length > 6 Then
                        riga("TelefonoFisso") = txtTelefono.Text
                    End If
                    If txtFax.Text.Length > 6 Then
                        riga("Fax") = txtFax.Text
                    End If
                    ds.Tables("MyPData").Rows(i)("Mail") = txtMail.Text
                    If txtCellulare.Text.Length > 6 Then
                        riga("Cellulare") = txtCellulare.Text
                    End If
                    If txtFiscale.Text.Length > 10 Then
                        riga("CodFicale") = txtFiscale.Text
                    End If
                    If txtIva.Text.Length > 10 Then
                        riga("PIva") = txtIva.Text
                    End If
                    If txtOldPass.Text <> "" Then
                        ValidatePass.Enabled = True
                        If txtNewPass1.Text.Length < 6 Then
                            lblMessage.Text = "La password deve essere di almeno 6 caratteri"
                            Exit Sub
                        Else
                            riga("Pasw") = txtNewPass1.Text
                        End If
                    End If
                    If DropNazione.SelectedValue <> "" Then
                        riga("Nazione") = DropNazione.SelectedValue.ToString
                    End If
                    If dropProvincia.SelectedValue <> "" Then
                        riga("Provincia") = dropProvincia.SelectedValue.ToString
                    End If
                    If txtIva.Text.Length < 10 Then
                        CodFiscPIva.Enabled = True
                    Else
                        CodFiscPIva.Enabled = False
                    End If
                    Dim Upz As New SqlClient.SqlCommandBuilder(da)
                    da.Update(ds, "MyPData")
                    Exit For
                End If
                i += 1
            Next
            riempiCampi()
            lblMessage.Text = "dati aggiornati con successo"

  2. #2
    da quello che ho capito ti da errore perchè la tua tabella non ha una chiave primaria.
    non leggo il codice perchè è troppo lungo
    La cosa seccante di questo mondo è che gli stupidi sono sicuri di sé, mentre le persone intelligenti sono piene di dubbi. B. Russel

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106
    :rollo: no cè

  4. #4

    Re: errore sul da.Update(......

    Originariamente inviato da Acraft
    ciao a tutti,
    sono un paio di ore che sono qui sopra a questo errore..
    ... Dim Upz As New SqlClient.SqlCommandBuilder(da)
    da.Update(ds, "MyPData")
    Exit For
    End If
    Non capisco la logica del tuo codice. Hai messo un da.Update allinterno di un ciclo che scorre e aggiorna i valori di ogni singola riga contenuta nella tabella?
    Non e' cosi che si dovrebbe fare. La funzione da.Update(... si usa dopo aver apportato le modifiche a n righe. In questa maniera si evita appunto il ciclo "a mano" visto che e' il dataadapter stesso che una per una valuta le righe e decide se usare l'updatecommand il deletecommand o l'insertcommand.
    Per fare quello che vedo, al posto del da.Update dovresti invece usare un sigolo command.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106
    praticamente cicla il tutto e quando l'utente è quello corretto gli aggiorna i dati e fà l'update
    certamente potevo fare l'update altrimenti...ma non sò perchè ho voluto fare così
    tu cosa pensi perchè quell'errore?
    ciao e grazie

  6. #6
    metti
    Dim Upz As New SqlClient.SqlCommandBuilder(da)
    Subito dopo il fill (chiama prima fillschema di fill).
    i += 1 non mi sembra serva a molto visto che fai un for each
    Chiama il da.update fuori dal ciclo
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106
    si il i+= 1 non serve a nulla era rimasto lo dopo aver ciclato in altro modo

    ..cmq mi dà lo stesso errore anche così

  8. #8
    Chiama la tabella con il nome presente nel database.
    Se il problema persiste metti un breackpoint prima dell'esecuzione dell'update e verifica la proprieta commandtext dell'updatecommand del dataadapter (oppure stampala a video).
    Saluti a tutti
    Riccardo

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106
    bho ora stò provando con l'update..ti faccio sapere cmq grazie per ora

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    106
    allora ho fatto così
    codice:
            RequiredFieldValidator1.Enabled = True
            RequiredFieldValidator2.Enabled = True
            RequiredFieldValidator3.Enabled = True
            RequiredFieldValidator4.Enabled = True
            RequiredFieldValidator5.Enabled = True
            RequiredFieldValidator6.Enabled = True
            Dim sqlUpdate As String
            Dim cn As New SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings("CnString"))
            sqlUpdate &= "Nome='" & txtNome.Text & "',"
            sqlUpdate &= "Cognome='" & txtCognome.Text & "',"
            sqlUpdate &= "Cognome='" & txtCognome.Text & "',"
            sqlUpdate &= "Cognome='" & txtCognome.Text & "',"
            sqlUpdate &= "Cognome='" & txtCognome.Text & "',"
            If txtTelefono.Text.Length > 6 Then
                sqlUpdate &= "TelefonoFisso='" & txtTelefono.Text & "',"
            End If
            If txtFax.Text.Length > 6 Then
                sqlUpdate &= "Fax='" & txtFax.Text & "',"
            End If
            sqlUpdate &= "Mail='" & txtMail.Text & "',"
            If txtCellulare.Text.Length > 6 Then
                sqlUpdate &= "Cellulare='" & txtCellulare.Text & "',"
            End If
            If txtFiscale.Text.Length > 10 Then
                sqlUpdate &= "CodFicale='" & txtFiscale.Text & "',"
            End If
            If txtIva.Text.Length > 10 Then
                sqlUpdate &= "PIva='" & txtIva.Text & "',"
            End If
            If txtOldPass.Text <> "" Then
                ValidatePass.Enabled = True
                If txtNewPass1.Text.Length < 6 Then
                    lblMessage.Text = "La password deve essere di almeno 6 caratteri"
                    Exit Sub
                Else
                    sqlUpdate &= "Pasw='" & txtNewPass1.Text & "',"
                End If
            End If
            If DropNazione.SelectedValue <> "" Then
                sqlUpdate &= "Nazione='" & DropNazione.SelectedValue.ToString & "',"
            End If
            If dropProvincia.SelectedValue <> "" Then
                sqlUpdate &= "Provincia='" & dropProvincia.SelectedValue.ToString & "',"
            End If
            If txtIva.Text.Length < 10 Then
                CodFiscPIva.Enabled = True
            Else
                CodFiscPIva.Enabled = False
            End If
            Dim cm As New SqlClient.SqlCommand
            cm.CommandText = "UPDATE Utenti SET" & sqlUpdate & "WHERE Utente = '" & Session.Item("id") & "'"
            cm.Connection = cn
            cm.ExecuteNonQuery()
    
            riempiCampi()
            lblMessage.Text = "dati aggiornati con successo"
    ma non và..cioè non dà errori ma non aggiorna na cippa

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 © 2026 vBulletin Solutions, Inc. All rights reserved.