質問

私は、従来のVB6の製品に働いていると私は私がDAOを介してデータベーステーブルからのフルパスのファイル名の一部を取得する必要があることにより、問題に遭遇しました。私はMS AccessのSQLのために特別に探していますので、ここではVBAの機能へのアクセスを得なかっました。私は、クエリの後にいくつかの余分なコードを削除する方法はありません。私は の変更/ SQLを変更する短いソリューションをリファクタリングすることはできません。

私はかなり限られてるので、今、DAOは、任意のinstrrevまたはreplace機能を持っていません。

そこに任意の推測? 事前に感謝します。

役に立ちましたか?

解決

あなたは、実際のデータベースを変更することはできませんと仮定。 。ます。

私は考えることができる唯一のこと(と、私はこの1つ上の頭脳によってwrackedが、申し訳ありませんメイト)は、INSTRに繰り返し呼び出しを使用することで、例えばIIFステートメント内でネストinStrRevにこの呼び出しを置き換えるために、

SELECT IIf(InStr([FileName],""\"")>0,Mid$([Filename],InStrRev([Filename],""\"")+1),[Filename]) FROM Table1

あなたはcompeltely非常識を持っていると思います。

SELECT IIf(InStr([FileName],""\"")>0,Mid$([Filename],iif(InStr(1, [FileName], ""\"") > 0, iif(InStr(2, [FileName], ""\"") > 0, iif(InStr(3, [FileName], ""\"") > 0, iif(InStr(4, [FileName], ""\"") > 0, iif(InStr(5, [FileName], ""\"") > 0, iif(InStr(6, [FileName], ""\"") > 0, iif(InStr(7, [FileName], ""\"") > 0, iif(InStr(8, [FileName], ""\"") > 0, iif(InStr(9, [FileName], ""\"") > 0, 1, InStr(9, [FileName], ""\"")), InStr(8, [FileName], ""\"")), InStr(7, [FileName], ""\"")), InStr(6, [FileName], ""\"")), InStr(5, [FileName], ""\"")), InStr(4, [FileName], ""\"")), InStr(3, [FileName], ""\"")), InStr(2, [FileName], ""\"")), InStr(1, [FileName], ""\""))),[Filename]) from table1

このは10かそこらのサブフォルダ深いthatsのパスのために動作します。 あなたが10個のサブフォルダが少なすぎると思うなら、私はあなたが必要と今まで何の深さに文を生成するために、VBAのビットをしました。

Function BuildNestedIIfs(ByVal depth As Integer, byval maxDepth as integer) As String
    Dim locator As String
    If depth < maxDepth Then
        locator = "InStr(" & depth & ", [FileName], """"\"""")"
        Build = "iif(" & locator & " > 0, " & Build(depth + 1, maxDepth) & ", " & locator & ")"
    Else
       Build = "0"
    End If
End Function

これは卑猥ですが、動作するはずです。

他のヒント

あなたがなどinstrreplacemid、のような組み込みのVBA関数を使用することができる必要があります。

それらをブロックすることができる「サンドボックス」モードがあります - それらのブロックを解除する方法については、これを見るにはます。http: //support.microsoft.com/kb/294698する

私は、DAOプログラミングの多くを行うために使用されるが、それは10〜15年前だった...

あなたがアクセスクエリ定義を呼び出し、そこにそれを修正するためにDAOを変更することはできますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top