Microsoft Access 掲示板

製品・部品フォーム内でのPDF表示 / 8

10 コメント
views
4 フォロー
8
ゲッキョク駐車場 2020/12/16 (水) 17:34:47 cb55f@f6500

解決したと思ったら、また壁が立ちはだかるのが世の常です。
サーバ内のPDFを漁っていたんですが、なんとPDFが結合されて100ページほどの1つのPDFとして
存在していました。

製品IDが「A001」「B158c」のような、頭はアルファベット、それ以降尾が数字(及び改訂)と
なっており、多くのPDFが「A001.pdf」みたいな都合の良い形をしていたんですが、
一部(というには多い)のデータが「B001~149.pdf」みたいな名前になってしまっていました。
PDFでしか生きていないデータもありますので、できればこの結合されたものを利用したいんですが、
なにかいいアイデアはありますか?

重ね重ね申し訳ありません。

通報 ...
  • 9
    hiroton 2020/12/18 (金) 10:36:12 bcbb2@f966d >> 8

    良くない案1
    フォルダをエクスプローラーで開く

    良くない案2
    ファイル名で近似値を求めてそのファイルを開く
    例えば「B030b」を開こうとした場合、ファイルの一覧を降順に捜査して

    name = "B030b" & "あ"
    "B150.pdf" < name => False
    "B001~149.pdf" < name => True
    

    の比較でそれっぽいファイルを見つけることはできます


    複雑なことをしようとすればするほどさらなるイレギュラーが出たときに「思っていたのと違う。不具合だ」と言われるものです。全然いいアイディアになりません

    本当の「いいアイディア」はPDFファイルを分割して保存しなおすことができないかを検討し、評価することでしょう

    とはいっても、システムの運用開始はなるべく早くという要件もあるでしょうから、「製品ID.pdf」が見つからなかった場合はメッセージボックスを表示して(上記案のような)追加操作の実行を促す仕組みとすることはあると思います
    過去の遺産の整理と並行して運用できるような限定的な仕組みという位置付けの機能としてしまいましょう

    10
    ゲッキョク駐車場 2020/12/18 (金) 11:20:27 cb55f@f6500 >> 9

    丁寧な解説、ありがとうございます。本当に助かります。

    ユーザーに多少の手間を取らせてしまいますが、とりあえず元データの
    整理が完了するまでは、合致するデータが無かった場合に
    該当するフォルダを開くようにします。

    また、データ整理・および新たなデータを一気に登録する際には
    改めてデータの参照方法を考えてみます。

    本当に長々とお付き合いくださりありがとうございました。

    Private Sub PDF表示_Click()
     
      Dim PDFPath As String, FldPath As String
    
      PDFPath = Application.CurrentProject.Path & "\PDFDATA\" & MNFCTID & ".pdf"
      FldPath = Application.CurrentProject.Path & "\PDFDATA"
      
      If Not Dir(PDFPath) = "" Then
      
        Shell "C:\Windows\explorer.exe " & PDFPath, vbNormalFocus
      Else
      
        MsgBox "データを探せませんでした。" & Chr(13) _
        & "PDFフォルダを開きます。"
        
        Shell "C:\Windows\explorer.exe " & FldPath, vbNormalFocus
        
      End If
      
    End Sub