我如何更新附件和文件路径?

时间:2015-10-13 08:51:24

标签: vba access-vba

我创建了一个表,用于保存附件(在外部文件夹中)和表中的文件路径。当我尝试使用其他附件更新现有附件时,它不起作用。请参见下文"添加文件"代码和"更新按钮"代码。

Private Sub cmAdd_Click()
On Error Resume Next

 Dim strLokacioni As String
 Dim strSQL As String

 strLokacioni = "C:\Users\HSE\Desktop\datas\" & getFileName(Me.path.Value)
 strSQL = "INSERT INTO tbl_tracker(path, filename, IncNo, PATS, SAP, First,        Last, IncDate, Description, Location, OshaType, IncType, RootCause,Inspector,    Surfaces, WeatherCon, WorkRelated, IncTime)" & _
 "VALUES ( '" & strLokacioni & "', '" & Me.path.Value & "', '" & Me.txtInc & "', '" & Me.txtPATS & "', '" & Me.txtSAP & "', '" & Me.txtFirst & "', '" &    Me.txtLast & "', '" & Me.txtDate & "', '" & Me.txtDesc & "', '" & Me.cmbLoc & "', '" & Me.cmbOsha & "', '" & Me.cmbType & "', '" & Me.txtCause & "', '" &    Me.cmbInsp & "', '" & Me.cmbSur & "', '" & Me.cmbWcon & "', '" & Me.cmbRelated & "', '" & Me.txtTime & "')"
 CurrentDb.Execute (strSQL)
 MsgBox "Record Added", vbInformation, "Information"


 Dim fso As Object
 Set fso = VBA.CreateObject("Scripting.FileSystemObject")
 fso.CopyFile Me.path.Value, strLokacioni
 Set fso = Nothing

 Me.tbl_tracker_subform.Form.Requery

End Sub

'以下是更新按钮代码

 Private Sub Command88_Click()
 'On Error Resume Next

 Dim strLokacioni As String: strLokacioni = "C:\Users\HSE\Desktop\datas\" &   getFileName(Me.path.Value)
Me.path = strLokacioni

CurrentDb.Execute "UPDATE tbl_tracker " & _
       " SET IncNo = " & Me.txtInc & _
       ", path = '" & strLokacioni & "'" & _
       ", filename = '" & Me.filename & "'" & _
       ", PATS = '" & Me.txtPATS & "'" & _
       ", SAP = '" & Me.txtSAP & "'" & _
       ", First = '" & Me.txtFirst & "'" & _
       ", Last = '" & Me.txtLast & "'" & _
       ", IncDate = '" & Me.txtDate & "'" & _
       ", Location = '" & Me.cmbLoc & "'" & _
       ", Description = '" & Me.txtDesc & "'" & _
       ", OshaType = '" & Me.cmbOsha & "'" & _
       ", Inctype = '" & Me.cmbType & "'" & _
       ", RootCause = '" & Me.txtCause & "'" & _
       ", Inspector = '" & Me.cmbInsp & "'" & _
       ", Surfaces = '" & Me.cmbSur & "'" & _
       ", WeatherCon = '" & Me.cmbWcon & "'" & _
       ", WorkRelated = '" & Me.cmbRelated & "'" & _
       ", IncTime = '" & Me.txtTime & "'" & _
       " WHERE IncNo = " & Me.txtInc.Tag


 Dim fso As Object
 Set fso = VBA.CreateObject("Scripting.FileSystemObject")
 fso.CopyFile Me.path.Value, strLokacioni
 Set fso = Nothing


       MsgBox "Record Updated", vbInformation, "Information"
       Me.tbl_tracker_subform.Form.Requery

End sub

Command88_click开头的值Me.path.Value来自:

Public Function getFileName(ByVal strPath As String) As String 
    If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then 
        getFileName = getFileName(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)
    End If 
End Function 
Private Sub cbdBrowse_Click() 
    On Error Resume Next 
    Dim f As Object
    Set f = Application.FileDialog(msoFileDialogFilePicker)
    f.AllowMultiSelect = False 
    f.Show 
    Me.path.Value = f.SelectedItems(1) 
End Sub

1 个答案:

答案 0 :(得分:0)

当我使用像你这样的更新查询时,我总是使用以下语法。

dim db as database
set db = currentDb
db.execute "UPDATE...."
你需要同样的吗?或者我已经走了很长一段路。

另外,我会留下评论,因为这可能不是答案。不幸的是,我不能因为代表&lt; 50