2009-05-28 57 views
3

我正在使用傳統的vb6產品,並遇到了一個問題,我需要通過DAO從數據庫表中獲取完整路徑的文件名部分。我沒有在這裏訪問VBA函數,所以我正在專門查找MS Access SQL。查詢後我無法刪除一些額外的代碼。 I CAN NOT更改/重構修改SQL的解決方案。令人尷尬的DAO字符串操作問題

現在,DAO沒有任何instrrevreplace的功能,所以我非常有限。

任何猜測呢? 在此先感謝。

回答

2

假設您不能更改實際的數據庫。 。 。

我能想到的唯一一件事(我在這個問題上絞盡腦汁,對不起夥伴)是對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個左右的子文件夾深。 如果您認爲10個子文件夾太少,我有一點vba來生成您所需要的深度的聲明。

它是淫穢的,但應該工作

0

我以前做了很多DAO編程,但那是10 - 15年前...

您可以更改DAO調用訪問的QueryDef,然後解決它呢?

+0

對不起的人,沒有骰子。我有使用QueryDefs相同的問題。不錯的嘗試。 – Stimul8d 2009-05-28 16:18:08

+0

這怎麼可能?已經有一段時間了,但我確定QueryDefs可以使用Access Basic函數。 – RBarryYoung 2009-05-28 16:37:15

2

您應該能夠使用內置的VBA功能,如instrreplacemid

有一個「沙盒」模式可能會阻止他們 - 看到這個關於如何解除他們http://support.microsoft.com/kb/294698

+0

不錯的嘗試,但我在NetworkService下運行,所以我沒有權限到註冊表,這是一個支持問題,所以沒有什麼我可以在InstallShield做到這一點。雖然好電話。 – Stimul8d 2009-05-28 16:09:07