2014-01-29 1 views
0

vb.net 및 MS Access에서 응용 프로그램을 개발 중입니다. 처음에는 몇 시간 후에 db에서 pdf 파일을 열려면 코드를 함께 사용하는 몇 가지 소스를 사용했습니다. 코드가 작동합니다. 그러나 응용 프로그램에서 pdf를 점심을 먹으면 루트 폴더에 pdf 파일이 만들어집니다. 이제는 DB에서 바이너리 (OLEObjects)와 루트 폴더에 있습니다. 나는 한 곳에서만 필요합니다.VB Access에서 PDF 파일을 엽니 다.

Dim strSqll As String 
    Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BCInventory.accdb;Persist Security Info=False;") 
    conn.Open() 


    strSqll = "Select filename from pdf WHERE PR = '" & pr & "' AND Year = '" & year & "'" 

    Dim sqlCmdd As New OleDbCommand(strSqll, conn) 

    Dim r As OleDb.OleDbDataReader = sqlCmdd.ExecuteReader() 

    If Not r.HasRows Then Exit Sub 

    Do While r.Read() 
     fname = r.GetString(0) 
    Loop 
    conn.Close() 

     Try 
      Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BCInventory.accdb;Persist Security Info=False;") 
      con.Open() 
      Dim strSql As String = "Select File from pdf WHERE PR = '" & pr & "' AND Year = '" & year & "' AND fileType='" & ftype & "'" 

      Dim sqlCmd As New OleDbCommand(strSql, con) 

      Dim fileData As Byte() = DirectCast(sqlCmd.ExecuteScalar(), Byte()) 

      Dim sTempFileName As String = Application.StartupPath & "\Purchase Orders scans" & "\" & fname 

      If Not fileData Is Nothing Then 
       Using fs As New FileStream(fname, FileMode.OpenOrCreate, FileAccess.Write) 
        fs.Write(fileData, 0, fileData.Length) 
        fs.Flush() 
        fs.Close() 
       End Using 
       ShellEx(Me.Handle, "Open", fname, "", "", 10) 
      End If 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
+0

당신이 요구하는 무엇 : 다음 코드는? 응용 프로그램에 파일을 열라고 말하면 그 응용 프로그램은 PDF 파일을 열 수 있지만 데이터베이스에서는 아무것도 열리지 않을 가능성이 높습니다 ... 그래서 정확히 무엇을하고 싶습니까? 파일을 데이터베이스의 임시 폴더로 가져 와서 자동으로 정리할 수 없거나 더 이상 사용하지 않을 때 정리할 수 없습니까? –

+0

내가 명확하지 않으면 미안합니다. 나는 내 DB 안에 pdf를 저장하는 것을 멈추고 싶었습니다. 대신에 모든 PDF 파일을 한 폴더에두고 싶었고 db에 그 폴더에 대한 경로 만 갖고 싶었습니다. 나는 일하도록했다. – Victor

답변

0
Dim strSqll As String 
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\BCInventory.accdb;Persist Security Info=False;") 
conn.Open() 


strSqll = "Select filename from pdf WHERE PR = '" & pr & "' AND Year = '" & year & "'" 

Dim sqlCmdd As New OleDbCommand(strSqll, conn) 

Dim r As OleDb.OleDbDataReader = sqlCmdd.ExecuteReader() 

If Not r.HasRows Then Exit Sub 

Do While r.Read() 
    fname = r.GetString(0) 
Loop 
conn.Close() 

    Try 
     If Len(Trim(fname)) = 0 Then 
       MessageBox.Show("There is no file attached", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       txtpr.Focus() 
       Exit Sub 
      End If 
     ShellEx(Me.Handle, "Open", fname, "", "", 10) 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
관련 문제