Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [VB6] Apice in SQL

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152

    [VB6] Apice in SQL

    Allora ragazzi vi espongo il mio problema, io salvo in un database dei valori usando questa stringa:

    "Insert into carica (campo1, campo2, campon, ....) Values ('" & Text1.Text & "', '" & Text2.Text & "', '" & Textn.Text & "', ....);"

    Tutto avviene perfettamente, ma se in un texbox vi è un apice a quel punto non salva es:

    text1.text = "l'Italia"

    Come posso risolvere questo problema ??

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Perchè bisogna raddoppiare gli apici.
    Ti conviene farti usare Function che ti semplifica la vita

    codice:
    Public Function Apici(ByVal s As String) As String
        If s = "" Then Exit Function
        Apici = Chr$(34) & Replace(s, "'", "''") & Chr$(34)
    End Function
    che ti semplifica la stringa SQL, usandola così:
    codice:
    INSERT INTO carica (campo1, campo2) VALUES (" & Apici(Text1.Text) & ", " & Apici(Text2.Text))

    In ogni caso, sarebbe assai meglio usare i Parametri di ADO
    ADO, Parametri ed affini
    http://nuke.vbcorner.net/Articoli/VB...5/Default.aspx
    così ti eviti tutti i problemi di formattazione dei dati

    Buone Feste

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    Grazie gentilissimo ma nononostante questa funzione la stringa non viene inserita cosa posso fare

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Non e' possibile ... mostra tutto il codice cosi' come l'hai scritto e indica l'errore ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da gprox
    Grazie gentilissimo ma nononostante questa funzione la stringa non viene inserita cosa posso fare
    Difficile dirlo, sei troppo generico.
    - non salva
    - non viene inserita
    ecc.

    1. Fino ad ora hai mostrato solo la stringa di comando, ma non come la esegui.
    2. Non da alcun errore?
    3. Forse la stringa è vuota?

    In ogni caso devi verificare la string SQL che passi prima di eseguire il comando.

    codice:
    Dim sSQL As String 
    sSQL = "INSERT INTO carica (campo1, campo2) VALUES (" & Apici(Text1.Text) & ", " & Apici(Text2.Text))"
    Debug.Print sSQL
    e controlli nella finestra Immediate di VB la stringa formattata

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    L'errore è che non viene inserito il record nel DB, in vb6 non ci sono errori, al contrario per il DB sto usando un dataenvironment, eccovi il codice:

    Public Function Apici(ByVal s As String) As String
    If s = "" Then Exit Function
    Apici = Chr$(34) & Replace(s, "'", "''") & Chr$(34)
    End Function

    DB.DBS.Execute "Insert into tab(campo1, campo2) Values (" & Apici(Text1.Text) & ", '" & Text2.Text & "');"

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da gprox
    L'errore è che non viene inserito il record nel DB, in vb6 non ci sono errori, al contrario per il DB sto usando un dataenvironment
    Allora mi ritiro.
    Non uso il DataEnvironment (e mai lo userò) quindi non posso aiutarti.
    (certo che M$ poteva risparmiarsi di creare simili schifezze come il DE & soci)

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Neanche io uso il Data Environment, ma qui l'errore è nella stringa SQL
    DB.DBS.Execute "Insert into tab(campo1, campo2) Values (" & Apici(Text1.Text) & ", '" & Text2.Text & "');"
    La funzione che ti ha fornito gibra raddoppia gli apici all'interno della stringa e ne aggiunge uno in testa e uno in coda. Quindi quelli prima e dopo Text2.text sono di troppo.
    Basterebbe un po' più di attenzione.

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Grumpy
    Neanche io uso il Data Environment, ma qui l'errore è nella stringa SQL

    La funzione che ti ha fornito gibra raddoppia gli apici all'interno della stringa e ne aggiunge uno in testa e uno in coda. Quindi quelli prima e dopo Text2.text sono di troppo.
    Basterebbe un po' più di attenzione.
    Non mi pare:
    codice:
    DB.DBS.Execute "Insert into tab(campo1, campo2) Values (" & Apici(Text1.Text) & ", '" & Text2.Text & "');"
    Solo il primo Text1.Text usa la routine Apici(), mentre il secondo Text2.text è racchiuso direttamente tra apici.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    760
    Vero!
    L'avevo detto che basterebbe un po' più di attenzione.

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.