2013-08-14 3 views
1

Access 인터페이스를 사용하지 않고 첨부 테이블을 관리하기 위해이 함수를 사용하려고합니다. 사람들이 삭제하거나 끊을 수 없으므로 인수가 없습니다. 옵션 컴파일러 이러한 함수 중 하나를 호출 할 때마다 오류가 발생합니다. 버튼의 onclick 이벤트에 MS Access VBA를 사용하여 첨부 파일 추가 /보기

http://blogs.office.com/b/microsoft-access/archive/2007/08/24/adding-removing-and-saving-files-from-the-new-attachment-field-in-access-2007.aspx

나는이 함께 보내고있어 또 다른 문제는 직접 경로에서 가져 오기 위해이 코드는 점이다

Database.OpenRecordset tblAttach 
Recordset.AddNew 
Call AddAttachment 
Recordset.Update 

이 있고 난 정말 좋겠 파일 선택의 파일 대화 방법이 필요하지만, 나는

Dim f As Object 
Set f = Application.FileDialog(3) 
f.AllowMultiSelect = False 
'*** not sure how to get the path to f to insert it into the table 
f.Show 

답변

5

첫 번째 문제는 당신이 C를하지 않았다는 사실에서 오는 이상 무엇을 넣어 잘 모르겠어요 당신이 언급 한 링크의 코드를 잘 읽으십시오. 당신이 당신의 파일을 저장할 테이블

  • rstCurrent 오픈 레코드 :

    AddAttachment(ByRef rstCurrent As DAO.Recordset, _ 
           ByVal strFieldName As String, _ 
           ByVal strFilePath As String) 
    

    이가 3 개 필수 매개 변수가 있다는 의미로
    AddAttachment 서브 루틴이 정의된다. 파일이 레코드 세트의 현재 레코드에 추가됩니다.

  • strFiledName 파일이 저장 될 첨부 파일 이름입니다. Access에서 만든 tblAttach 테이블에는 하나 이상의 첨부 파일 필드 (문서 이름, ID, 문서의 원래 경로 등 찾을 수있는 첨부 파일 관련 정보가 들어있을 수 있음)가 있어야합니다. 기타).

  • strFilePath 첨부 할 파일의 절대 경로.

    Public Function SelectFile() As String 
        Dim fd As FileDialog 
        Set fd = Application.FileDialog(msoFileDialogOpen) 
        With fd 
         .AllowMultiSelect = False 
         .Title = "Please select file to attach" 
         If .show = True Then 
          SelectFile = .SelectedItems(1) 
         Else 
          Exit Function 
         End If 
        End With 
        Set fd = Nothing 
    End Function 
    

    호출이 기능 SelectFile()은 사용자가 파일을 선택할 수 있도록 :

두 번째 문제는 사용자가 파일 대화 상자를 통해 원하는 파일을 선택하도록하는 것입니다. 이 함수는 작업이 취소되었거나 파일을 선택하지 않은 경우 파일의 전체 경로 또는 빈 문자열을 반환합니다. 그들은 첨부 파일을 저장할 때 사용자가 파일의 이름과 위치를 선택셔서

이 코드는 유사하다 : 인스턴스가 첨부 파일의 이름을 제안하고,하자 할

Public Function SelectSaveAs(initialName As String) As String 
    Dim fd As FileDialog 
    Set fd = Application.FileDialog(msoFileDialogSaveAs) 
    With fd 
     .Title = "Save Attachment" 
     .InitialFileName = initialName 
     If .show = True Then 
      SelectSaveAs = .SelectedItems(1) 
     Else 
      Exit Function 
     End If 
    End With 
End Function 

전화 SelectSaveAs("toto.xls") 사용자는 저장 위치를 ​​선택합니다 (이름도 변경할 수 있습니다). 이 함수는 첨부 파일을 저장할 파일의 전체 경로를 반환합니다.

이제 모든 것을 조합 할 수 있습니다.

Files 필드가있는 tblAttach을 작성했다고 가정 해보십시오., 레코드를 열고 파일을 포함하는 레코드로 이동 :

Dim dbs As DAO.database 
    Dim rst As DAO.RecordSet 

    ' Ask the user for the file 
    Dim filepath As String 
    filepath = SelectFile() 

    ' Check that the user selected something 
    If Len(filepath) = 0 Then 
     Debug.Assert "No file selected!" 
     Exit Sub 
    End If 

    Set dbs = CurrentDb 
    Set rst = dbs.OpenRecordset("tblAttach") 

    ' Add a new row and an attachment 
    rst.AddNew 
    AddAttachment rst, "Files", filepath 
    rst.Update 

    ' Close the recordset 
    rst.Close 
    Set rst = Nothing 
    Set dbs = Nothing 

가 비슷한 일을 할 것, 사용자가 파일을 다시 저장하게하려면 :
우리는 당신이 같은 언급 링크에서 테스트를 다시 작성할 수 있습니다 저장하려면 사용자에게 파일 이름을 묻고이 정보를 SaveAttachment 서브 루틴으로 전달하십시오.

관련 문제