Problema apostrofo instruzione INSERT SQL

di il
7 risposte

Problema apostrofo instruzione INSERT SQL

Buongiorno come da titolo non riesco ad inserire tramite istruzione SQL nome file apostrofati.

Vi allego il codice

Private Sub Pulsante_allegati_autorizzazioni_Click()
'Requires reference to Microsoft Office 16.0 Object Library (change your reference to the library based on your microsoft office version).
    
    Dim fd As Office.FileDialog
    Dim strPath As String
    Dim varFile As Variant
    Dim strInsertSQL As String
    Dim subFolder As String
  
    
 
    subFolder = "Autorizzazioni\"
    
    'Set up the File Dialog.
    
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
    With fd
        .AllowMultiSelect = False
        .Filters.Clear
        .InitialFileName = CurrentProject.Path
        .Title = "Please select one or more files"
        If .Show = True Then
        strSelectedFile = fd.SelectedItems(1)
    
     'parse out the filename from the path
strFilename = Right(strSelectedFile, Len(strSelectedFile) - InStrRev(strSelectedFile, "\"))
'build the destination
strDestination = "\\Nasbrancaccio\mps\Database\Dati\PDF\" & subFolder & Format(Now, "dd-mm-yy") & " " & strFilename
strdestination2 = "\\Nasbrancaccio\mps\Database\Dati\PDF\" & subFolder & strDestination
'copy the file to the new folder
               


For Each varFile In .SelectedItems
            'insert the file paths into the table
           strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & strdestination2 & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')"
           'strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & strFilename & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')"
        
            CurrentDb.Execute strInsertSQL
FileCopy strFilename, strDestination
                'Me.frmCustomerFiles_Sub!FilePath = "C:\nico\" & Me.CustomerID & "_"
'FileCopy strSelectedFile, strDestination
'store file as part of the record
        'loop through the selected files
      Next
       
  
 
    
     Else
              MsgBox "E' stato selezionato Annulla nel file dialog box."
 End If
 End With
    'show the results in the subform
    [Allegati_Autorizzazioni].Form.Requery
    
    Set fDialog = Nothing
End Sub

7 Risposte

  • Re: Problema apostrofo instruzione INSERT SQL

    Hai 2 opzioni:

    1. REPLACE
    2. CHR(34)
    strFilename=Replace(strFilename,"'',"''")

    Oppure 

    strFilename=chr(34) & strFilename & chr(34)
  • Re: Problema apostrofo instruzione INSERT SQL

    27/05/2024 - @Alex ha scritto:


    Private Sub Pulsante_allegati_autorizzazioni_Click() 'Requires reference to Microsoft Office 16.0 Object Library (change your reference to the library based on your microsoft office version). Dim fd As Office.FileDialog Dim strPath As String Dim varFile As Variant Dim strInsertSQL As String Dim subFolder As String subFolder = "Autorizzazioni\" 'Set up the File Dialog. Set fd = Application.FileDialog(msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Filters.Clear .InitialFileName = CurrentProject.Path .Title = "Please select one or more files" If .Show = True Then strSelectedFile = fd.SelectedItems(1) 'parse out the filename from the path strFilename = Right(strSelectedFile, Len(strSelectedFile) - InStrRev(strSelectedFile, "\")) 'build the destination strDestination = "\\Nasbrancaccio\mps\Database\Dati\PDF\" & subFolder & Format(Now, "dd-mm-yy") & " " & strFilename strdestination2 = "\\Nasbrancaccio\mps\Database\Dati\PDF\" & subFolder & strDestination 'copy the file to the new folder For Each varFile In .SelectedItems 'insert the file paths into the table strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & strdestination2 & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')" 'strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & strFilename & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')" CurrentDb.Execute strInsertSQL FileCopy strFilename, strDestination 'Me.frmCustomerFiles_Sub!FilePath = "C:\nico\" & Me.CustomerID & "_" 'FileCopy strSelectedFile, strDestination 'store file as part of the record 'loop through the selected files Next Else MsgBox "E' stato selezionato Annulla nel file dialog box." End If End With 'show the results in the subform [Allegati_Autorizzazioni].Form.Requery Set fDialog = Nothing End Sub

    quindi in poche parole vado a sostituire questo

    strFilename = Right(strSelectedFile, Len(strSelectedFile) - InStrRev(strSelectedFile, "\"))
    

    con questo

    strFilename=Replace(strFilename,"'',"''")

    grazie ancora

  • Re: Problema apostrofo instruzione INSERT SQL

    strFilename=Replace(strFilename,"'","''")

    credo che questa vada scritta così, cioè i doppi apici per circondare il contenuto dei due argomenti di Replace.

  • Re: Problema apostrofo instruzione INSERT SQL

    27/05/2024 - OsvaldoLaviosa ha scritto:


    strFilename=Replace(strFilename,"'","''")

    credo che questa vada scritta così, cioè i doppi apici per circondare il contenuto dei due argomenti di Replace.

    grazie intanto per la risposta OsvaldoLaviosa, mi chiedevo se devo sostituirlo o inserirlo nel codice VBA questa stringa

  • Re: Problema apostrofo instruzione INSERT SQL

    Il codice che scrivi evidente frutto di copia/incolla senza riflettere… evidenzia che non hai capito cosa hai scritto.

    Il filedialog non è in multiselezione quindi il ciclo for…each non serve a nulla hai già nella sezione precedente l'estrazione del file selezionato:

    strSelectedFile = fd.SelectedItems(1)

    Poi estrapoli dal Path solo il nome file… e questo penso ti serva… 

    strFilename = Right(strSelectedFile, Len(strSelectedFile) - InStrRev(strSelectedFile))

    Questa parte di testo potrebbe contenere apostrofi… anche se decisament biasimabile nominare file con apostrofo, quindi subito dopo serve il codice che ti ho suggerito… quindi senza ciclo passi alla parte SQL…

    Suggerisco di evitare copia/incolla e di approfondire il debug.

  • Re: Problema apostrofo instruzione INSERT SQL

    Attento a come costruisci il predicato della INSERT INTO:

    strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & strdestination2 & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')

    Suppongo che CustomerID sia numerico. Pertanto, in qual caso non andrebbe scritto ‘ “ & Me.ID & ” ’ bensì “ & Me.ID & "

    Inoltre Tipo_autorizzazione andrebbe indicizzato secondo me.

  • Re: Problema apostrofo instruzione INSERT SQL

    Ho risolto utilizzando

    oldvar = Replace(strDestination, "'", "''")

    quindi

    strInsertSQL = "INSERT INTO Allegati_Autorizzazioni (CustomerID,Filepath,Tipo,Data,Orario,Tipo2) VALUES ('" & Me.ID & "','" & oldvar & "','" & Me.Tipo_autorizzazione & "','" & Me.Data_allegato3 & "','" & Me.Orario_autorizzazione & "','" & Me.Note & "')"

    grazie a tutti per il preziosissimo aiuto :)

Devi accedere o registrarti per scrivere nel forum
7 risposte