0

こんにちは仲間のプログラマー、私は(おそらく)単純な問題を解決する方法を理解できないので、絶対に必死です。私は2つのテーブルを持っています。[FName](ファイル名) と [FPath](ファイル パス) の 2 つのフィールドを持つ最初の [Files] と [DocNo] [Title] を持つ 2 つ目の [Reports]...何とか何とか...

FName 文字列は [DocNo] [Title] で構成されます (ただし、タイトル文字列全体はファイル パスではありません)

例: [DocNo] Smith/RT/2000/001
[タイトル] BHP Iron Ore Pty Ltd の 68kg/m 頭硬化レールにおける改良アルミノ熱溶接の評価

[FName] SmithRT2000001 改良アルミノサーミック溶接の評価 .pdf

検索リストを含むフォームがあります。このリストは、[レポート] にあるレコードを表示します。特定のレコードをダブルクリックすると、doubleclick イベントが発生します。イベントでは、DocNo と Title の値を取得し、一致する Fname を Files テーブルで検索します。しかし、驚くべきことに、SQL検索を行ったり、クエリのデザインモードを使用したりしても、何も返されませんか?
しかし、面白いことに、レコードを見つけるためにハードコーディングすると、どちらの方法でもレコードが見つかります。それはどうですか?

チェックアウトするVBAは次のとおりです。

Private Sub SearchResults_DblClick(整数としてキャンセル)

'Initializing the string variables
Dim strSQL As String
Dim strFileName As String
Dim strTitle As String
Dim DocumentNo As String
Dim titleLeng As Integer

DocumentNo = Me.SearchResults.Column(0)
DocumentNo = Replace(DocumentNo, "/", "")
strTitle = Me.SearchResults.Column(1)
Debug.Print (DocumentNo)

SrchText = DocumentNo

SearchResults.RowSourceType = "Table/Query"
SearchResults.RowSource = "QRY_OpenFile"

Debug.Print (strTitle)

strTitle = Left(strTitle, 10)
SrchText = strTitle

Debug.Print (SrchText)
SearchResults.RowSource = "QRY_OpenFile"

Dim rst As Recordset
Dim db As DAO.Database
Set db = CurrentDb()
strSQL = "SELECT Files.FName FROM Files WHERE Files.FName Like " * " & strTitle & " * ";"
Debug.Print (strSQL)
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)

Application.FollowHyperlink strFileName, , True, False, , , "John Smith"

SQL 文字列のすべてのバリエーションを試しましたが、外側の " " を ' ' に変更しても機能しません。しかし、strTitle を "Assessment" 文字列または "SmithRT2000001" に変更すると、それが見つかります。なぜだか分からない?

これは、「* & Forms![レポートの検索]![SrchText] & *」のように条件を設定するクエリ デザイン ウィンドウでは機能しませんが、静的なものを変更するとすぐに機能します。発狂!!

何をすべきか、またはFILEテーブルでファイルを開くという私の目標を達成する方法を教えてもらえますか??

4

2 に答える 2

1

さて、最後に3つの異なるアプローチをテストした後、そのうちの1つは良い反応を示し、私が望んでいたものでした. クエリの "like" コマンドを次のように変更しました:
Like " *" & [Forms]![Search For Reports]![SrchText] & " *"すると
、突然機能しました。また、SQL Select クエリが VBA から特にダブル クリック イベントで機能しないことがわかりました。最終的なコードは次のとおりです。

Private Sub SearchResults_DblClick(Cancel As Integer) '文字列変数の初期化 Dim strTitle As String Dim DocumentNo As String

DocumentNo = Me.SearchResults.Column(0)
DocumentNo = Replace(DocumentNo, "/", "")
strTitle = Me.SearchResults.Column(1)
strTitle = Replace(strTitle, "'", "''")
SrchText.Value = DocumentNo

SearchResults.RowSourceType = "Table/Query"
SearchResults.RowSource = "QRY_OpenFile"

サブ終了

リストからパスと名前を取得できず、それらをまとめて Acrobat へのハイパーリンクを起動できませんでした...ボタンを介してイベントを送信し、リストから値を取得する必要がありました。SearchResults.RowSource = "QRY_OpenFile" の後、何らかの理由で list.Column(index) が null を返していました。

とにかく、私の質問を読んで考えてくれてありがとう。

于 2013-03-30T02:49:56.827 に答える
0

そのコードは実際に実行されましたか? SQL 文字列がもつれています。

''You need to watch out for quotes in the string, so
strTitle = Replace(strtile, "'", "''")
strSQL = "SELECT Files.FName FROM Files WHERE Files.FName Like '*" _
       & strTitle & "*';"

この行のポイント:

Debug.Print (strSQL)

クエリ デザイン ウィンドウでテストする SQL 文字列を取得します。これを使って。

于 2013-03-29T10:43:30.620 に答える