Insert/Upadate DB Access

di il
22 risposte

Insert/Upadate DB Access

Buongiorno a tutto il forum

In una “semplice” gestione di una tabella anagrafica di un db Access (di solito uso SQL Server), ho un comportamento ‘strano’, che è questo

Se inserisco una riga nuova con query INSERT INTO….funziona tutto, se invece correggo una riga esistente, non viene corretta, e non mi ritorna nemmeno nessun errore.

           CB.NewConn(strConn)
           CB.AddParam("@codice", txtCodice.Text)
           CB.AddParam("@ragionesociale", txtRagioneSociale.Text)
           CB.AddParam("@indirizzo", IIf(txtIndirizzo.Text <> String.Empty, txtIndirizzo.Text, DBNull.Value))
           CB.AddParam("@località", IIf(txtLocalità.Text <> String.Empty, txtLocalità.Text, DBNull.Value))
           CB.AddParam("@provincia", IIf(txtProvincia.Text <> String.Empty, txtProvincia.Text, DBNull.Value))
           CB.AddParam("@cap", IIf(txtCap.Text <> String.Empty, txtCap.Text, DBNull.Value))
           CB.AddParam("@telefono", IIf(txtTelefono.Text <> String.Empty, txtTelefono.Text, DBNull.Value))
           CB.AddParam("@codicefiscale", IIf(txtCodiceFiscale.Text <> String.Empty, txtCodiceFiscale.Text, DBNull.Value))
           CB.AddParam("@partitaiva", IIf(txtPartitaIva.Text <> String.Empty, txtPartitaIva.Text, DBNull.Value))
           CB.AddParam("@email", IIf(txtEmail.Text <> String.Empty, txtEmail.Text, DBNull.Value))
           CB.AddParam("@note", IIf(txtNote.Text <> String.Empty, txtNote.Text, DBNull.Value))
           If bAdd_NewThen
               CB.ExecQuery("INSERT INTO TBL_CLIENTI ([Codice], [RagioneSociale], [Indirizzo], [Località], [Provincia], [Cap], [Telefono], [CodiceFiscale], [PartitaIva], [Email], [Note]) VALUES " & _
                            "(@codice, @ragionesociale, @indirizzo, @località, @provincia, @cap, @telefono, @codicefiscale, @partitaiva, @email, @note)")
           Else
               CB.ExecQuery("UPDATE TBL_CLIENTI SET [RagioneSociale] = @ragionesociale, [Indirizzo] = @indirizzo, [Località] = @località, " & _
                           "[Provincia] = @provincia, [Cap] = @cap, [Telefono] = @telefono, [CodiceFiscale] = @codicefiscale, [PartitaIva] = @partitaiva, [Email] = @email, [Note] = @note WHERE [Codice] = '" & txtCodice.Text & "'")
           End If

Nella Update alla fine se metto come chiave txtCodice.Text fra apici (il campo è alfanumerico), funziona, se invece metto il parametro @codice (che per l'insert funziona), non va.

Dove stà l'inghippo…..?

Grazie

DG

22 Risposte

  • Re: Insert/Upadate DB Access

    E se il parametro lo chiami pippo?

  • Re: Insert/Upadate DB Access

    Intendi

    CB.AddParam("@pippo", txtCodice.Text)

    ?

    (ho cmq provato ma non funziona)

    grazie

    DG

  • Re: Insert/Upadate DB Access

    26/02/2024 - DanieleG ha scritto:


    CB.ExecQuery("UPDATE TBL_CLIENTI SET [RagioneSociale] = @ragionesociale, [Indirizzo] = @indirizzo, [Località] = @località, " & _
                               "[Provincia] = @provincia, [Cap] = @cap, [Telefono] = @telefono, [CodiceFiscale] = @codicefiscale, [PartitaIva] = @partitaiva, [Email] = @email, [Note] = @note WHERE [Codice] = '" & txtCodice.Text & "'")

    Codice è pk?

    UPDATE TBL_CLIENTI 

    SET

     [RagioneSociale] = @ragionesociale, 

    [Indirizzo] = @indirizzo, 

    [Località] = @località, " & _ "

    [Provincia] = @provincia, 

    [Cap] = @cap, 

    [Telefono] = @telefono,

     [CodiceFiscale] = @codicefiscale,

     [PartitaIva] = @partitaiva, 

    [Email] = @email, 

    [Note] = @note 

    WHERE

     [Codice] = '" & txtCodice.Text & "'")

    Cerca di scrivere in modo più leggibile.

    Non prende il parametro nella where?

    Where  [Codice] = @codice

  • Re: Insert/Upadate DB Access

    Si, esattamente cosi'

    se scrivo 

    Where  [Codice] = @codice  (non funziona)

    se scrivo

    Where  [Codice] ='" & txtCodice.Text & “'”   (funziona)

    grazie

    DG

  • Re: Insert/Upadate DB Access

    Usa il tasto <> dell'editor per postare il codice nel forum, dopo tanti messaggi dovresti saperlo.

  • Re: Insert/Upadate DB Access

    Chiedo scusa, in effetti non lo sapevo, ho letto ora come usare l'editor.

    Grazie per l'avviso.

    DG

  • Re: Insert/Upadate DB Access

    Puoi mostrare l'sql di insert da quando dai il parametro codice fino all'istruzione sql?

  • Re: Insert/Upadate DB Access

    Ecco il codice

    Grazie

                CB.NewConn(strConn)
                CB.AddParam("@codice", txtCodice.Text)
                CB.AddParam("@ragionesociale", txtRagioneSociale.Text)
                CB.AddParam("@indirizzo", IIf(txtIndirizzo.Text <> String.Empty, txtIndirizzo.Text, DBNull.Value))
                CB.AddParam("@località", IIf(txtLocalità.Text <> String.Empty, txtLocalità.Text, DBNull.Value))
                CB.AddParam("@provincia", IIf(txtProvincia.Text <> String.Empty, txtProvincia.Text, DBNull.Value))
                CB.AddParam("@cap", IIf(txtCap.Text <> String.Empty, txtCap.Text, DBNull.Value))
                CB.AddParam("@telefono", IIf(txtTelefono.Text <> String.Empty, txtTelefono.Text, DBNull.Value))
                CB.AddParam("@codicefiscale", IIf(txtCodiceFiscale.Text <> String.Empty, txtCodiceFiscale.Text, DBNull.Value))
                CB.AddParam("@partitaiva", IIf(txtPartitaIva.Text <> String.Empty, txtPartitaIva.Text, DBNull.Value))
                CB.AddParam("@email", IIf(txtEmail.Text <> String.Empty, txtEmail.Text, DBNull.Value))
                CB.AddParam("@note", IIf(txtNote.Text <> String.Empty, txtNote.Text, DBNull.Value))
                If bADD Then
                    CB.ExecQuery("INSERT INTO TBL_CLIENTI ([Codice], [RagioneSociale], [Indirizzo], [Località], [Provincia], [Cap], [Telefono], [CodiceFiscale], [PartitaIva], [Email], [Note]) VALUES " & _
                                 "(@codice, @ragionesociale, @indirizzo, @località, @provincia, @cap, @telefono, @codicefiscale, @partitaiva, @email, @note)")
                Else
                    CB.ExecQuery("UPDATE TBL_CLIENTI SET [RagioneSociale] = @ragionesociale, [Indirizzo] = @indirizzo, [Località] = @località, " & _
                                "[Provincia] = @provincia, [Cap] = @cap, [Telefono] = @telefono, [CodiceFiscale] = @codicefiscale, [PartitaIva] = @partitaiva, [Email] = @email, [Note] = @note WHERE [Codice] = @codice")
                End If
  • Re: Insert/Upadate DB Access

    Cambia il nome del  campo “note”. Access non lo accetta.

  • Re: Insert/Upadate DB Access

    Grazie per la dritta….pero' a questo punto, la domanda e' perchè la query di INSERT funziona ?

    Cmq ho provato a escludere il campo Note (non valorizzo il parametro, e l'ho tolto dalla query), ma non funzione

    DG

  • Re: Insert/Upadate DB Access

    Prova a cancellare il campo note dalla tabella.


  • Re: Insert/Upadate DB Access

    Si certo (come ho scritto in qualche post precedente), mettendo : 

    .......WHERE Codice = '" & TxtCodice.Text & "'"

    funziona, ovviamente nel TxtCodice.Text, c'e' la chiave del mio record.

    Io pero' volevo capire perche' non posso passare il parametro alla query, come faccio per l'Insert.

    grazie

    DG

  • Re: Insert/Upadate DB Access

    26/02/2024 - DanieleG ha scritto:


    Io pero' volevo capire perche' non posso passare il parametro alla query, come faccio per l'Insert.

    Perché devi passare una variabile e non un parametro.

  • Re: Insert/Upadate DB Access

    Ok,

    Grazie per l'aiuto.

    Saluti

    DG

Devi accedere o registrarti per scrivere nel forum
22 risposte