Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - errore di runtime '-2147217900'  Errore nella sintassi UPDATE
Forum - Visual Basic 6 - errore di runtime '-2147217900' Errore nella sintassi UPDATE

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
emanulele75 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 14:12
Giovedì, 07/05/2009
Ciao a tutti, vorrei aprire questo topic per via di un problema che mi attanaglia da parecchio tempo.
avevo già scritto su un vecchio post  che sembrava avesse il mio medesimo problema.

Sto creando un gestionale e nella modifica o inserimento nuovo utente mi da l'errore in oggetto

il collegamento al db(access) lo effetto tramite ADO e le select me le fa tranquillamente fare, ma quando vado a modificare/inserire un nuovo utente subito mi compare quell'orrido mex

premetto che l'istruzione di update l'ho provata in mille modi, anche passando valori fissi, ma nulla niente da fare.
Vi posto anche il click del tasto che fa l'update

Grazie anticipatamente, Emanuele
ps. la connessione la effettuo all'interno di un modulo e la apro al momento del login e funziona perfettamente.
------------------------ codice incriminato ----------------------------------------------
Private Sub psbConfermaModifica_Click()
Dim sql As String
'Dim DET_REC As New ADODB.Recordset
    
    
'DET_REC.Open "UPDATE utenti SET " _
'            & "USER = '" & Replace(entUser.Text, "'", "''") & "', " _
'            & "PASSWORD = '" & Replace(entPw.Text, "'", "''") & "', " _
'            & "ABILITAZIONE = '" & Replace(Combo1.Text, "'", "''") & "', " _
'            & "DESCRIZIONE = '" & Replace(entDescrizione.Text, "'", "''") & "' " _
'            & " WHERE descrizione = " & "'" & CmbUtente.Text & "'", Connessione, 3


'Sql = "UPDATE utenti SET USER = " & "'" & entUser.Text & "'" _
                    & " WHERE descrizione = " & "'" & CmbUtente.Text & "' "
          
          
'Sql = "UPDATE utenti SET user ='" & Trim(entUser) & "' where descrizione = " & CmbUtente.Text

        sql = " update utenti set user =  '" & Replace(entUser.Text, "'", "''") & "', " _
        & " WHERE descrizione = " & "'" & CmbUtente.Text & "'"
          
          
          MsgBox sql & Connessione
          
         Connessione.Execute sql
        
        
MsgBox "Modifica eseguita correttamente", vbOKOnly, "Modifica Utente"

End Sub
------------------------ fine codice incriminato ----------------------------------------

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 15:18
Giovedì, 07/05/2009
Ciao,
ritengo che vi siano errori nel concatenamento delle stringhe; a mio avviso dovrebbe essere così:
Codice sorgente - presumibilmente Visual Basic 6

  1. DET_REC.Open "UPDATE utenti SET USER= ('" & Replace(entUser.Text, "'", "''") & "'), PASSWORD=('" & Replace(entPw.Text, "'", "''") _
  2.             & "'), ABILITAZIONE =('" & Replace(Combo1.Text, "'", "''") & "'), DESCRIZIONE =('" & Replace(entDescrizione.Text, "'", "''") _
  3.             & "') WHERE descrizione=('" & Replace(CmbUtente.Text, "'", "''") & "'), Connessione, 3"



Poi ti suggerirei d'usare l'oggetto Command, nel seguente modo (ti posto un esempio concreto in uso):

Codice sorgente - presumibilmente VB.NET

  1. ' Salva le modifiche ai dati nel DB TblAnagCliente - FrmPaziente:
  2. Public Sub SalvaDataModPaz()
  3.     On Error GoTo ErrHandler
  4.        
  5.         Dim Ogg5 As New ADODB.Command
  6.         Dim Cns5 As New ADODB.Connection
  7.        
  8.         With Cns5
  9.             .ConnectionString = DataConnessione
  10.             .CursorLocation = adUseClient   'tipo di cursore
  11.             .Mode = adModeShareDenyNone     'nessuna limitazione
  12.             .CommandTimeout = 15
  13.             .Open
  14.         End With
  15.        
  16.         Ogg5.ActiveConnection = Cns5
  17.         Ogg5.CommandType = adCmdText
  18.  
  19.         Ogg5.CommandText = "UPDATE TblAnagCliente Set Titolo=('" & Replace(FrmPaziente.CmbCl1.Text, "'", "''") & "'),  Nome=('" & Replace(FrmPaziente.TxtCt1.Text, "'", "''") _
  20.         & "'), Cognome=('" & Replace(FrmPaziente.TxtCt2.Text, "'", "''") & "'), CodFisc=('" & Replace(FrmPaziente.TxtCt3.Text, "'", "''") & "'), LuogoN=('" & Replace(FrmPaziente.TxtCt19.Text, "'", "''") _
  21.         & "'), ProvN=('" & Replace(FrmPaziente.CmbCl3B.Text, "'", "''") & "'), DataN=('" & (FrmPaziente.TxtCt21.Text) & "'), Eta=('" & (FrmPaziente.TxtCt22.Text) & "'), Sesso=('" & (FrmPaziente.CmbCl5.Text) _
  22.         & "'), CodiSSN=('" & (FrmPaziente.TxtCt12.Text) & "'), CodiASL=('" & (FrmPaziente.TxtCt13.Text) _
  23.         & "'), Via=('" & Replace(FrmPaziente.CmbCl2.Text, "'", "''") & "'), NomeVia=('" & Replace(FrmPaziente.TxtCt4.Text, "'", "''") & "'), Ncivico=('" & (FrmPaziente.TxtCt5.Text) & "'), Cap=('" & (FrmPaziente.TxtCt6.Text) _
  24.         & "'), Citta=('" & Replace(FrmPaziente.TxtCt7.Text, "'", "''") & "'), Provincia=('" & Replace(FrmPaziente.CmbCl3.Text, "'", "''") & "'), Telefono=('" & (FrmPaziente.TxtCt8.Text) _
  25.         & "'), Cellulare=('" & (FrmPaziente.TxtCt9.Text) & "'), Fax=('" & (FrmPaziente.TxtCt10.Text) & "'), Email=('" & Replace(FrmPaziente.TxtCt11.Text, "'", "''") _
  26.         & "'), Profes=('" & Replace(FrmPaziente.CmbCl4.Text, "'", "''") & "'), Nazion=('" & (FrmPaziente.TxtCt16.Text) & "'), CivSt=('" & (FrmPaziente.TxtCt17.Text) & "'), Relig=('" & (FrmPaziente.TxtCt18.Text) _
  27.         & "'), Segnal=('" & (FrmPaziente.TxtCt14.Text) & "'), Famil=('" & Replace(FrmPaziente.RTB1(0).Text, "'", "''") & "'), Patolog=('" & Replace(FrmPaziente.RTB1(1).Text, "'", "''") & "'), Esami=('" & Replace(FrmPaziente.RTB1(2).Text, "'", "''") _
  28.         & "'), Abitud=('" & Replace(FrmPaziente.RTB1(3).Text, "'", "''") & "'), PatologImp=('" & Replace(FrmPaziente.RTB1(4).Text, "'", "''") & "'), Interv=('" & Replace(FrmPaziente.RTB1(5).Text, "'", "''") _
  29.         & "'), Terap=('" & Replace(FrmPaziente.RTB1(6).Text, "'", "''") _
  30.         & "') WHERE Nome=('" & Replace(FrmPaziente.TxtCt1.Text, "'", "''") & "') AND Cognome=('" & Replace(FrmPaziente.TxtCt2.Text, "'", "''") & "')"
  31.         Ogg5.Execute
  32.        
  33.     ' Verifica se l'aggiornamento del DB è avvenuto:
  34.         Dim recs As Long
  35.         Set Ogg5.ActiveConnection = Cns5
  36.         Ogg5.Execute recs
  37.         'Print "Records affected = " & recs
  38.         If recs > 0 Then
  39.             MsgBox "Le modifiche ai dati del paziente" & Chr(13) _
  40.             & FrmPaziente.CmbCl1.Text & Space(1) & FrmPaziente.TxtCt1.Text & Space(1) & FrmPaziente.TxtCt2.Text & Chr(13) _
  41.             & "sono state inserite nel DB.", vbInformation, "Modifica dei dati - ......"
  42.         End If
  43.        
  44. 'Chiude la connessione:
  45.     If GetState(Cns5.State) = "adStateOpen" Then
  46.         Cns5.Close
  47.         Set Cns5 = Nothing
  48.     End If
  49. ' Cancella l'oggetto:
  50.     Set Ogg5 = Nothing
  51.  
  52. ErrHandler:
  53.     If Err.Number <> 0 Then
  54.         MsgBox "Errore: " & Err.Number & " " & Err.Description & "." & Chr(13) _
  55.         & "Errore nella procedura.", vbExclamation, "....."
  56.         Err.Clear
  57.         Exit Sub
  58.     End If
  59. End Sub



Spero che sia utile. ;)

PM Quote
Avatar
emanulele75 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 16:48
Giovedì, 07/05/2009
ti ringrazio tantissimo.. ora mi studio bene il tuo codice e appena ho notizie ti faccio sapere.
Un saluto, Emanuele

PM Quote
Avatar
emanulele75 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 17:21
Giovedì, 07/05/2009
Testo quotato

Postato originariamente da emanulele75:

ti ringrazio tantissimo.. ora mi studio bene il tuo codice e appena ho notizie ti faccio sapere.
Un saluto, Emanuele



Louis putroppo anche con il tuo codice mi da problemi.
te la posto adeguata alla mia necessita e l'update l'ho messa secca per vedere cosa tirava giù

Private Sub psbConfermaModifica_Click()

'Public Sub SalvaDataModPaz()
    On Error GoTo ErrHandler
        
        Dim Ogg5 As New ADODB.Command
        Dim Cns5 As New ADODB.Connection
        
        With Cns5
            .ConnectionString = Connessione
            .CursorLocation = adUseClient   'tipo di cursore
            .Mode = adModeShareDenyNone     'nessuna limitazione
            .CommandTimeout = 15
            .Open
        End With
        
        Ogg5.ActiveConnection = Cns5
        Ogg5.CommandType = adCmdText

'        Ogg5.CommandText = "UPDATE utenti Set user=('" & Replace(entUser.Text, "'", "''") & "'),  Nome=('" & Replace(FrmPaziente.TxtCt1.Text, "'", "''") _
'        & "'), Cognome=('" & Replace(FrmPaziente.TxtCt2.Text, "'", "''") & "'), CodFisc=('" & Replace(FrmPaziente.TxtCt3.Text, "'", "''") & "'), LuogoN=('" & Replace(FrmPaziente.TxtCt19.Text, "'", "''") _
'        & "'), ProvN=('" & Replace(FrmPaziente.CmbCl3B.Text, "'", "''") & "'), DataN=('" & (FrmPaziente.TxtCt21.Text) & "'), Eta=('" & (FrmPaziente.TxtCt22.Text) & "'), Sesso=('" & (FrmPaziente.CmbCl5.Text) _
'        & "'), CodiSSN=('" & (FrmPaziente.TxtCt12.Text) & "'), CodiASL=('" & (FrmPaziente.TxtCt13.Text) _
'        & "'), Via=('" & Replace(FrmPaziente.CmbCl2.Text, "'", "''") & "'), NomeVia=('" & Replace(FrmPaziente.TxtCt4.Text, "'", "''") & "'), Ncivico=('" & (FrmPaziente.TxtCt5.Text) & "'), Cap=('" & (FrmPaziente.TxtCt6.Text) _
'        & "'), Citta=('" & Replace(FrmPaziente.TxtCt7.Text, "'", "''") & "'), Provincia=('" & Replace(FrmPaziente.CmbCl3.Text, "'", "''") & "'), Telefono=('" & (FrmPaziente.TxtCt8.Text) _
'        & "'), Cellulare=('" & (FrmPaziente.TxtCt9.Text) & "'), Fax=('" & (FrmPaziente.TxtCt10.Text) & "'), Email=('" & Replace(FrmPaziente.TxtCt11.Text, "'", "''") _
'        & "'), Profes=('" & Replace(FrmPaziente.CmbCl4.Text, "'", "''") & "'), Nazion=('" & (FrmPaziente.TxtCt16.Text) & "'), CivSt=('" & (FrmPaziente.TxtCt17.Text) & "'), Relig=('" & (FrmPaziente.TxtCt18.Text) _
'        & "'), Segnal=('" & (FrmPaziente.TxtCt14.Text) & "'), Famil=('" & Replace(FrmPaziente.RTB1(0).Text, "'", "''") & "'), Patolog=('" & Replace(FrmPaziente.RTB1(1).Text, "'", "''") & "'), Esami=('" & Replace(FrmPaziente.RTB1(2).Text, "'", "''") _
'        & "'), Abitud=('" & Replace(FrmPaziente.RTB1(3).Text, "'", "''") & "'), PatologImp=('" & Replace(FrmPaziente.RTB1(4).Text, "'", "''") & "'), Interv=('" & Replace(FrmPaziente.RTB1(5).Text, "'", "''") _
'        & "'), Terap=('" & Replace(FrmPaziente.RTB1(6).Text, "'", "''") _
'        & "') WHERE Nome=('" & Replace(FrmPaziente.TxtCt1.Text, "'", "''") & "') And Cognome=('" & Replace(FrmPaziente.TxtCt2.Text, "'", "''") & "')"

Ogg5.CommandText = "update utenti set user = 'emanuelele' where id = 1"




        Ogg5.Execute
        
    ' Verifica se l'aggiornamento del DB è avvenuto:
        Dim recs As Long
        Set Ogg5.ActiveConnection = Cns5
        Ogg5.Execute recs
        'Print "Records affected = " & recs
        If recs > 0 Then
            MsgBox "mod eff"
        End If
        
''Chiude la connessione:
'    If GetState(Cns5.State) = "adStateOpen" Then
'        Cns5.Close
'        Set Cns5 = Nothing
'    End If
'' Cancella l'oggetto:
'    Set Ogg5 = Nothing

ErrHandler:
    If Err.Number <> 0 Then
        MsgBox "Errore: " & Err.Number & " " & Err.Description & "." & Chr(13) _
        & "Errore nella procedura.", vbExclamation, "....."
        Err.Clear
        Exit Sub
    End If
End Sub

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 18:03
Giovedì, 07/05/2009
Codice sorgente - presumibilmente Plain Text

  1. Louis putroppo anche con il tuo codice mi da problemi.
  2. te la posto adeguata alla mia necessita e l'update l'ho messa secca per vedere cosa tirava giù



Ma guarda che il codice predetto nel mio prog. funziona !
Che errore ti evidenzia ?
Naturalmente hai attivato i Riferimenti !?

PM Quote
Avatar
emanulele75 (Normal User)
Rookie


Messaggi: 32
Iscritto: 06/05/2009

Segnala al moderatore
Postato alle 20:51
Giovedì, 07/05/2009
il tuo progr funziona... è l'updatee che non va! i riferimenti ado sono attivati.. ce ne sono altri che magari mi sfuggono?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:38
Giovedì, 07/05/2009
Inserisci il nome del campo tra parentesi quadre nella update

" ... [user] ... "

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 8:03
Venerdì, 08/05/2009
Ciao,

Codice sorgente - presumibilmente Plain Text

  1. ...i riferimenti ado sono attivati.. ce ne sono altri che magari mi sfuggono?



oltre a fare quanto ti dice Theprogrammer, così scongiuri l'errore per Nomi riservati, ti chiedo se VB6 é aggiornato col SP2 e quindi se stai usando ADO 2.8 library.
Comunque la tua segnalazione "...Errore nella sintassi UPDATE ..." parrebbe derivare dall'uso di una parola riservata da Access; é opportuno che tu faccia una ricerca nella guida in linea di Access.
Ultimo consiglio, passa un argomento alla volta nella query in modo da verificare se stai usando un termine riservato, o meglio ancora imposta la query con i parametri
http://nuke.vbcorner.net/Default.aspx?tabid=85.
In bocca al lupo    
;)

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:02
Venerdì, 08/05/2009
Testo quotato

Postato originariamente da Louis:
... se VB6 é aggiornato col SP2 ...



Il Service Pack e' il SP6 ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo