Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [vb6] insert into

    ragazzi non capisco cosa c'è che non va in questa insert
    i campi sono tutti di tipo text
    i nomi sono corretti : già controllati

    messaggio errore : errore di sintassi nell'istruzione INSERT INTO
    se dopo faccio debug si seleziona l'istruzione CMD.Execute
    questo è il codice:

    Public Sub AGGIUNGI()
    Dim SQLAGGIUNGI As String
    Dim CONN As New ADODB.Connection
    Dim CMD As New ADODB.Command

    CONN.ConnectionString = Ado.ConnectionString
    CONN.Open
    SQLAGGIUNGI = "INSERT INTO TAB_RUB (NOME,COGNOME,EMAIL,TELEFONO,CELLULARE,NOTE) VALUES ('"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_NOME.Text & "','"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_COGNOME.Text & "','"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_E_MAIL.Text & "','"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_TELEFONO.Text & "','"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_CELLULARE.Text & "','"
    SQLAGGIUNGI = SQLAGGIUNGI & TXT_NOTE.Text & "')"
    CMD.CommandText = SQLAGGIUNGI
    CMD.ActiveConnection = CONN
    CMD.Execute
    Ado.Refresh
    CONN.Close
    End Sub

    Grazie mille!!!
    Agos

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao agostinomiranda !
    La query è relativa ad una Insert in un DB Access ?
    LM

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ti posto comunque il seguente esempio:
    codice:
    Dim Ogg As New ADODB.Command
    Dim Cns As New ADODB.Connection
     
            With Cns
                .ConnectionString = DataConnessione  'str di conn. al DB
                .CursorLocation = adUseClient        ' tipo di cursore
                .Mode = adModeShareDenyNone         ' nessuna limitazione
                .CommandTimeout = 15
                .Open
            End With
            
            Ogg.ActiveConnection = Cns
            Ogg.CommandType = adCmdText
    
    ' Prima di salvare Elimina i vecchi records dalla tabella - TblAnagraficaCL:
            Ogg.CommandText = "Delete * From TblAnagraficaCL"
            Ogg.Execute
        
            Ogg.CommandText = "insert into TblAnagraficaCL(Titolo, Nome, Cognome, CodiceFiscale, TipoVia, Via, NCivico, Cap, Citta, Provincia, Telefono, Cellulare, Fax, Email, NomeFile)" _
                & "values ('" & Replace(FrmAnagCliente.CmbCl1.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.TxtCt1.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.TxtCt2.Text, "'", "''") _
                & "', '" & Replace(FrmAnagCliente.TxtCt3.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.CmbCl2.Text, "'", "''") & "' ,'" & Replace(FrmAnagCliente.TxtCt4.Text, "'", "''") _
                & "', '" & Replace(FrmAnagCliente.TxtCt5.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.TxtCt6.Text, "'", "''") & "' ,'" & Replace(FrmAnagCliente.TxtCt7.Text, "'", "''") _
                & "', '" & Replace(FrmAnagCliente.CmbCl3.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.TxtCt8.Text, "'", "''") & "' ,'" & Replace(FrmAnagCliente.TxtCt9.Text, "'", "''") _
                & "', '" & Replace(FrmAnagCliente.TxtCt10.Text, "'", "''") & "', '" & Replace(FrmAnagCliente.TxtCt11.Text, "'", "''") & "' ,'" & Replace(FrmAnagCliente.LblCli12.Caption, "'", "''") & "');"
    Ogg.Execute
    
    ' Chiude la connessione:
            Cns.Close
            Set Cns = Nothing
    Spero che possa servirti.
    LM

  4. #4
    la sintassi relativa alla query mi sembra giusta. Prova innanzitutto a controllare che la valorizzazione dei campi sia corerente con le impostazioni inserite in fase di progettazione del database; inoltre dai un'occhiata al codice di LMondi. Magari sbagli qualcosa nell'impostazione della connessione al database.

  5. #5

    [vb6]

    si il tipo di database e microsoft access
    il tipo di connessione lo controllato ed è giusto
    la valorizzazione dei campi è corretta, sono tutti campi testo, ed ogni campo viene riempito

    facendo print sqlaggiungi nella finestra immediata esce :

    INSERT INTO TAB_RUB (NOME,COGNOME,EMAIL,TELEFONO,CELLULARE,NOTE) VALUES ('Mario','Rossi','MarioRossi@libero.it','000000000 0','0000000000','nessuna nota')
    Agos

  6. #6

    [VB6]

    A che serve la Replace nell'istruzione insert?
    Agos

  7. #7
    Anche io ti posso dare conferma che la query che hai postato è giusta perchè ho usato la stessa tecnica: debug.print sqlaggiungi nella finestra immediata (è equivalente all'operazione che hai fatto tu) e mi funzionava tutto correttamente.

    Ti ripeto, prova a controllare le istruzioni di connessione al DB e magari sostituirle con quelle che ti sono state suggerite da LMondi o, meglio ancora, dai un'occhiata al thread in rilievo in sezione in cui c'è un ottimo esempio sulla connessione al DB.

    Rispondendo al tuo ultimo post, la funzione replace in vb serve per effettuare un cambio di carattere in una certa textbox.
    Solitamente viene usata con le textbox che devono contenere dei campi relativi alla valuta. Infatti l'utente inserisce da tastierino numerico l'importo ad esempio di 2,33€ e, in SQL, la virgola viene interpretata come un separatore di campo. In altre parole è come se indicasse prima il campo 2 e poi il campo 33€ di una certa tabella oppure la valorizzazione di determinati campi avviene prima con il valore 2 e poi con il valore 33.
    Per ovviare a questo problema si effettua la replace che ha la seguente sintassi:
    codice:
    Replace(stringa,testo_da_cercare,testo_da_sostituire)
    Questa istruzione può essere utilizzata in qualsiasi operazione si intenda svolgere: può essere una insert così come può essere il controllo associato ad un Command Button.

  8. #8
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    E' probabile che mi sbagli... ma provare non costa nulla... secondo me il problema sta nel campo NOTE

    NOTE è ua parola riservata SQL che indica la definizione di un campo di tipo MEMO (corrispondente in Access), per risolvere il problema, prova a mettere i nomi dei campi, o al limite solo quello del campo NOTE tra parentesi quadre, ovvero:

    codice:
    SQLAGGIUNGI = "INSERT INTO TAB_RUB ([NOME],[COGNOME],[EMAIL],[TELEFONO],[CELLULARE],[NOTE]) VALUES ('"
    Boolean

  9. #9

    [vb6]risposta finale

    ragazzi trovato il problema, che è stato risolto da Boolean.

    infatti racchiudendo tra parentesi quadre i nomi delle variabili l'inserimento funziona!!!
    quindi come ha scritto Boolean NOTE è ua parola riservata SQL.

    Grazie a tutti per avermi risolto il problema!!
    Agos

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