bleah
a questa nn ci credo
conqusto codice funziona![]()
eppure fanno le stesse cose ufffffffffffffffff :master:codice:Dim com As New OleDb.OleDbCommand com.CommandText = strsql com.Connection = conn
bleah
a questa nn ci credo
conqusto codice funziona![]()
eppure fanno le stesse cose ufffffffffffffffff :master:codice:Dim com As New OleDb.OleDbCommand com.CommandText = strsql com.Connection = conn
uff mancava lae exceutennquery![]()
ah ecco
gli da fastidio quando ci sono questi campi
destinazione_3
destinazione_2
destinazione_1
se i campi nell'insert nn ci sno la prende"
eppure esistono nel database
Quando si dice "posta TUTTO il codice"...hai tagliato la parte relativa all'INSERT che probabilmente è quella che genera problemi.Originariamente inviato da amodio
ah ecco
gli da fastidio quando ci sono questi campi
[...]
se i campi nell'insert nn ci sno la prende"
Ribadisco che, secondo me, devi postare il codice significativo (la procedura nella sua interezza) senza censura (perchè non sai qual è l'errore e quindi non sei in grado di dire quali parti puoi tralasciare e quali puoi inserire) unitamente al log completo dell'errore segnalato, con l'indicazione di parte dello stack.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
la classe contiene una funxione che esegue l'insertcodice:Imports System.Data.OleDb Public Class CLS_TestataDocumento Dim conn As New OleDbConnection Public Mastro As String Public conto As String Public sottoc As String Public mastro_forn As String Public conto_forn As String Public sottoc_forn As String Public listino As Long Public destinazione_1 As String Public destinazione_2 As String Public destinazione_3 As String Public datareg As String Public tipo_intervento As String Public anno_rif As String Public RcodTecnico As Long Public RcodTipoImpianto As Long Public Function Salva() As String Dim Valori As String Dim Campo As String If Me.Mastro <> "" Then Valori = Valori & "'" & Me.Mastro & "'," Campo = Campo & "Mastro" & "," End If If Me.conto <> "" Then Valori = Valori & "'" & Me.conto & "'," Campo = Campo & "conto" & "," End If If Me.sottoc <> "" Then Valori = Valori & "'" & Me.sottoc & "'," Campo = Campo & "sottoc" & "," End If If Me.mastro_forn <> "" Then Valori = Valori & "'" & Me.mastro_forn & "'," Campo = Campo & "mastro_forn" & "," End If If Me.conto_forn <> "" Then Valori = Valori & "'" & Me.conto_forn & "'," Campo = Campo & "conto_forn" & "," End If If Me.sottoc_forn <> "" Then Valori = Valori & "'" & Me.sottoc_forn & "'," Campo = Campo & "sottoc_forn" & "," End If If Me.listino <> 0 Then Valori = Valori & "" & Me.listino & "," Campo = Campo & "listino" & "," End If If Me.destinazione_1 <> "" Then Valori = Valori & "'" & Me.destinazione_1 & "'," Campo = Campo & "[destinazione_1]" & "," End If If Me.destinazione_2 <> "" Then Valori = Valori & "'" & Me.destinazione_2 & "'," Campo = Campo & "[destinazione_2]" & "," End If If Me.destinazione_3 <> "" Then Valori = Valori & "'" & Me.destinazione_3 & "'," Campo = Campo & "[destinazione_3]" & "," End If If Me.datareg <> "" Then Valori = Valori & "cdate('" & Me.datareg & "')," Campo = Campo & "datareg" & "," End If If Me.anno_rif <> "" Then Valori = Valori & "'" & Me.anno_rif & "'," Campo = Campo & "anno_rif" & "," End If If Me.RcodTecnico <> 0 Then Valori = Valori & Me.RcodTecnico & "," Campo = Campo & "RcodTecnico" & "," End If If Me.RcodTipoImpianto <> 0 Then Valori = Valori & Me.RcodTipoImpianto & "," Campo = Campo & "RcodTipoImpianto" & "," End If Valori = Mid(Valori, 1, Len(Valori) - 1) '-1 xche c'è lo spazio dopo la virgola lla fine della concatenazione di ogni stringa con , Campo = Mid(Campo, 1, Len(Campo) - 1) strsql = "insert into testate_schede (" & Campo & ") values (" & Valori & ")" Try Dim MyCommand As New OleDb.OleDbCommand(strsql, conn) MyCommand.ExecuteNonQuery() Catch err As Exception MsgBox(err.InnerException.ToString) End Try End Function Public Sub New() conn.ConnectionString = strConnAccess conn.Open() 'Connessione.open() End Sub Protected Overrides Sub Finalize() On Error Resume Next conn.Close() GC.Collect() MyBase.Finalize() Err.Clear() End Sub End Class
dal programma dichiaro
una variabile di classe e valorizzo le sue variabili (funziona altrimenti nn entrerebbe qui) e alla fine mi concateno la stringa sql in base ai dati passati
ho gia controllato se i valori fossero numerici e quali stringa quindi questa probabilita è da scartare![]()
La costruzione di statement SQL in questo modo è sempre una fonte interminabile di errori, poichè le stringhe possono, anzi contengono senz'altro caratteri che possono tranquillamente essere confusi con separatori SQL o altri caratteri speciali e quindi invalidare completamente lo statement.
Invece di utilizzare un simile approccio, usa dei parametri OleDbParameter per specificare i valori da inserire nei campi.
Probabilmente, uno dei valori parametrici (di cui non posso controllare la validità perchè solo tu puoi farlo eseguendo il debug del codice) invalida lo statement provocando l'errore riscontrato.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
ehm nn ho capito scusa...Originariamente inviato da alka invalida lo statement provocando l'errore riscontrato.
cosa vorresti dire?
ah
cmq se nella finestra immeditata quando mi da errore scrivo:
? strsql e la provo in access funziona benissimo(sai darmi un motivo?
No, perchè si dovrebbe osservare lo stack delle chiamate per capire quale dei metodi che vengono chiamati in cascata genera l'errore. Probabilmente, non è un errore che si verifica a livello del codice presente nella tua applicazione, ma viene generato da una delle classi coinvolte appartenenti al framework che fanno da supporto per l'esecuzione della query.Originariamente inviato da amodio
cmq se nella finestra immeditata quando mi da errore scrivo:
? strsql e la provo in access funziona benissimo(sai darmi un motivo?
Tieni comunque presente che io non ho il tuo progetto sottomano, non possiedo i dati, non posso eseguire il codice passo per passo, non posso fare nulla per poter ispezionare gli elementi del tuo programma e dire in modo preciso quale di questi provoca problemi in base alle indicazioni fornite.
Che altro posso fare?![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
va bene una cosa per volta
dove osservo lo stack delle chiamate?
grazie
Dovrebbe essere visibile quando il programma si arresta a fronte dell'errore.Originariamente inviato da amodio
dove osservo lo stack delle chiamate?
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...