Leggere in chiaro la stringa di comando SQL

di il
8 risposte

Leggere in chiaro la stringa di comando SQL

Ciao a tutti,

ho questa query di inserimento

Dim query As String = "INSERT INTO Lavori_Master (Id_Condominio, Lavoro, Ditta, ImportoD, IvaD, ImportoDIvato, ImportoT, IvaT, ImportoTIvato, ImportoA, CpaA, ImportoACpa, TotaleD, TotaleT, TotaleA, data)  VALUES (@id_Condominio,@Lavoro, @Ditta, @ImportoD, @IvaD, @ImportoDIvato, @ImportoT, @IvaT,@ImportoTIvato,@ImportoA,@cpaA,@ImportoAcpa, @TotaleA, @TotaleT, @TotaleA, @DATA )"

ho problemi con l'insrimento data (ultimo parametro). Dal momento che le ho provate tutte, potrei sapere come fare a vedere in chiaro la query completa dei parametri (per intenderci quella che verrò poi passata alla  ExecuteNonQuery

8 Risposte

  • Re: Leggere in chiaro la stringa di comando SQL

    Non aprire thread praticamente per lo stesso problema

  • Re: Leggere in chiaro la stringa di comando SQL

    15/04/2024 - tantino ha scritto:


    ho problemi con l'insrimento data (ultimo parametro). Dal momento che le ho provate tutte, potrei sapere come fare a vedere in chiaro la query completa dei parametri (per intenderci quella che verrò poi passata alla  ExecuteNonQuery

    La query completa e in chiaro è quella che tu hai impostato: non c'è un rimpiazzo dei valori come lo intendi tu al momento dell'esecuzione, ma la valorizzazione dei parametri avviene “internamente” passando i valori che hai specificato come parametri - appunto - che sono rappresentati dai “segnaposto” usati nello statement SQL.

    Probabilmente, è lo stesso comando SQL a essere errato, oppure è la corrispondenza tra i parametri che dichiari, il tipo di campo a cui fanno riferimento e il valore che passi.

  • Re: Leggere in chiaro la stringa di comando SQL

    15/04/2024 - tantino ha scritto:


    @DATA

    Prova a chiamarlo @valoredata

  • Re: Leggere in chiaro la stringa di comando SQL

    15/04/2024 - tantino ha scritto:


    TotaleD, TotaleT, TotaleA

     @TotaleA, @TotaleT, @TotaleA

    Non credo c'entri qualcosa ma forse nella seconda riga sarebbe meglio 

     @TotaleD, @TotaleT, @TotaleA

    poi potresti provare a mettere

    ..... TotaleD, TotaleT, TotaleA, [data])  VALUES (@id_Condominio .....

    e comunque dovresti mostrare la parte dove assegni i valori ai parametri, probabilmente c'è lì qualcosa di sbagliato

    inoltre dovresti verificare i tipi di dati che corrispondano alla tabella del database, ho trovato a volte le date definite come stringhe

  • Re: Leggere in chiaro la stringa di comando SQL

    ECCO TT IL CODICE

    Dim query As String = "INSERT INTO Lavori_Master (Id_Condominio, Lavoro, Ditta, ImportoD, IvaD, ImportoDIvato, ImportoT, IvaT, ImportoTIvato, ImportoA, CpaA, ImportoACpa, TotaleD, TotaleT, TotaleA, [data])  VALUES (@id_Condominio,@Lavoro, @Ditta, @ImportoD, @IvaD, @ImportoDIvato, @ImportoT, @IvaT,@ImportoTIvato,@ImportoA,@cpaA,@ImportoAcpa, @TotaleA, @TotaleT, @TotaleA, @data )"
    'txtImmagine.Text = query
    Dim comando As New OleDbCommand(query, connessione)
    comando.Parameters.AddWithValue("@Id_Condominio", CodCondominio)
    comando.Parameters.AddWithValue("@Lavoro", cboLavori.Text)
    comando.Parameters.AddWithValue("@Ditta", cboDitta.Text)
    comando.Parameters.AddWithValue("@ImportoD", txtImportoD.Text)
    comando.Parameters.AddWithValue("@IvaD", cboIvaD.Text)
    comando.Parameters.AddWithValue("@ImportoDIvato", txtIvaD.Text)
    comando.Parameters.AddWithValue("@ImportoT", txtImportoT.Text)
    comando.Parameters.AddWithValue("@IvaT", cboIvaT.Text)
    comando.Parameters.AddWithValue("@ImportoTIvato", txtIvaT.Text)
    comando.Parameters.AddWithValue("@ImportoA", txtImportoA.Text)
    comando.Parameters.AddWithValue("@CpaA", cboCpa.Text)
    comando.Parameters.AddWithValue("@ImportoACpa", txtCpa.Text)


    comando.Parameters.AddWithValue("@TotaleD", lblImportoDIvato.Text)
    comando.Parameters.AddWithValue("@TotaleT", lblImportoTIvato.Text)
    comando.Parameters.AddWithValue("@TotaleA", lblImportoAIvato.Text)
    comando.Parameters.AddWithValue("@DATA", OleDbType.Date).Value = CDate(Date.Now.ToShortDateString) 'HO PROVATO 1000 MODI

    comando.ExecuteNonQuery()
    MsgBox("Inserimento TESTATA, avvenuto con successo", vbOK, vbInformation)
    connessione.Close()

  • Re: Leggere in chiaro la stringa di comando SQL

    Mi sovviene un dubbio: siamo sicuri che Access e il driver OLE DB supportino i parametri con nome (Named Parameters)?

    La documentazione ufficiale riporta questo:

    The OLE DB.NET Framework Data Provider uses positional parameters that are marked with a question mark (?) instead of named parameters.

    Io credo che tu non possa utilizzare i parametri con nome, ma solo segnaposto indicati con “?”, il cui ordine nella query deve essere rispettato quando aggiungi i valori (poiché sono appunto posizionali).

  • Re: Leggere in chiaro la stringa di comando SQL

    Ciao,

    credo che sia una parola riservata mettila tra parentesi quadre come ti ha ha suggerito Sirjo

    a me è successo con NOTE

  • Re: Leggere in chiaro la stringa di comando SQL

    15/04/2024 - tantino ha scritto:


    comando.Parameters.AddWithValue("@ImportoDIvato", txtIvaD.Text)
    comando.Parameters.AddWithValue("@ImportoT", txtImportoT.Text)
    comando.Parameters.AddWithValue("@IvaT", cboIvaT.Text)
    comando.Parameters.AddWithValue("@ImportoTIvato", txtIvaT.Text)
    comando.Parameters.AddWithValue("@ImportoA", txtImportoA.Text)

    Tutti campi testo?

    Sicuro che il problema è la data?

Devi accedere o registrarti per scrivere nel forum
8 risposte