0

私は vb.net を使用して 2007 にアクセスしています。pdf ファイルのパスをデータベースに保存し、ボタンまたは画像をクリックしたときにパスを取得して pdf ファイルを読みたいと考えています。

PDFファイルのパスを参照して指定するフォームがあります.保存ボタンをクリックすると、テキストボックスのパスが読み取られ、PDFファイルがプロジェクトフォルダーのどこかにコピーされ、パスが.データベース。データを取得したいときは、他の詳細と一緒にPDFファイルを取得する必要があり、ボタンまたは画像をクリックすると、テキストボックスではなくPDF形式でのみPDFファイルを読み取ることができます..これはコード ある場所から別の場所にファイルをコピーし、パスをデータベースに保存しようとしています。

Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
    ' Specify the directories you want to manipulate.
    Dim path As String = txtSLAPath.Text
    Dim path2 As String = "E:\" + "SLA1.pdf"
    Try
        Dim fs As FileStream = File.Create(path, 1024)
        fs.Close()

        'Copy the file.
        File.Copy(path, path2)

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

    Try
        Dim insQry As String
        insQry = "insert into SLAdb (PO,SLA)values(@PO,@SLA)"

        cnnOLEDB.Open()

        Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(insQry, cnnOLEDB)

        cmd.Parameters.Add(New OleDb.OleDbParameter("@PO", txtPO.Text))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@SLA", path2))

        cmd.ExecuteNonQuery()
        MsgBox("Data Saved Successfully")

        cnnOLEDB.Close()

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub

ファイルがコピーされ、パスが保存されますが、パスとファイルを読み取ることをお勧めします。

4

3 に答える 3

0

新しいウィンドウでファイルを開くコード。

'dbに保存されたファイルパスを取得するコード..

                Dim drPdf As OleDb.OleDbDataReader
                Dim cmd1 As OleDb.OleDbCommand

                Dim pdf As String = ("SELECT * FROM SLAdb where PO='" & txtPo.Text & "'")
                cnnOLEDB.Open()
                cmd1 = New OleDb.OleDbCommand(pdf, cnnOLEDB)
                drPdf = cmd1.ExecuteReader

            If drPdf.Read = True Then
                fpath = drPdf("SLA")
            End If

'パスからファイル名を取得するコード

                fname = Path.GetFileName(fpath)
                lblSLA.Text = fname
            cnnOLEDB.Close()

'パスがdbに保存されているpdfファイルを開くコード

    System.Diagnostics.Process.Start(fpath)
于 2013-04-09T05:24:49.983 に答える
0

両方のファイルがゼロバイトになる

もちろん、何も書き込まずに、ソース ファイルと同じパスに新しいファイルを作成します。
次に、FileStream を閉じて、(ゼロになったファイルの) パスを File.Copy に渡します。

' Specify the directories you want to manipulate.
Dim path As String = txtSLAPath.Text
Dim path2 As String = "E:\" + "SLA1.pdf"
Try

    ' The following line destroy the source file path
    ' the subsequent File.Copy, copies nothing in the destination path

    'Dim fs As FileStream = File.Create(path, 1024)
    'fs.Close()

    'Copy the file.
    File.Copy(path, path2)

Catch ex As Exception
    MsgBox(ex.Message)
End Try
于 2013-03-30T10:19:13.423 に答える
0

ソースファイルと同じandを再度creating a file使用しています。それが問題かもしれないと思います。次のコードを試してください。pathname

 Dim path As String = txtSLAPath.Text
 Dim path2 As String = "E:\" + "SLA1.pdf"
    Try
        'Remove this, but i'm not sure why did you use this here.
        'Dim fs As FileStream = File.Create(path, 1024)
        'fs.Close()

        'Copy the file.
        File.Copy(path, path2)

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
于 2013-03-30T10:19:34.923 に答える