2017-06-13 65 views
0

我在格式化這樣的訪問有一個字段:洛杉磯,CA#00001避免#Func!錯誤Access查詢

我需要修改的文本字段看起來像這樣:#001 - 洛杉磯,CA

要做到這一點,我使用這個公式:

"#" & Format([STORE NUMBER],"000") & " - " & Trim(Left([STORE NAME],InStr(1,[STORE NAME],"#")-1)) 

我遇到的問題是,在我的數據集不是每個記錄的格式相同。有幾個位置名稱爲: 「加利福尼亞測試存儲」。

如果是這樣的話,我會得到一個「#Func!」錯誤,可能是因爲沒有「#」符號來尋找應用公式。

任何人都可以協助尋找避免此錯誤的解決方法。

理想情況下,我想這樣做,以便如果輸出確實導致了「#Func!」錯誤,只需使用原來的名字,像這樣:

+------------------------+------------------------+ 
|  Original  |   New   | 
+------------------------+------------------------+ 
| Los Angeles, CA #00001 | #001 - Los Angeles, CA | 
| Test Store for CA  | Test Store for CA  | 
| San Diego, CA #00002 | #002 - San Diego, CA | 
+------------------------+------------------------+ 

回答

1

您只需追加"#"到字符串的結尾尋找一個"#"之前使用InStr

"#" & Format([STORE NUMBER],"000") & " - " & Trim(Left([STORE NAME],InStr(1,[STORE NAME]&"#","#")-1)) 

如果"#"已經存在,InStr將找到現有的位置。如果不存在,則InStr(1,[STORE NAME]&"#","#")-1將僅返回[STORE NAME]的長度,因此Left將僅返回整個字段。

+0

這正是我正在尋找的。非常感謝! – Darren

1

你可以有一個函數返回格式化的值,如果#不存在,返回原始值。

Public Function SplitStore(ByVal value_ As String) As String 

    If InStr(1, value_, "#") = 0 Then 
     SplitStore = value_ 
     Exit Function 
    End If 

    Dim arr As Variant 
     arr = Split(value_, "#") 

    SplitStore = "#" & Format(arr(1), "000") & " -" & arr(0) 
End Function 

要叫它:

SELECT SplitStore([STORE NUMBER]) As FormattedStore 
... 


'#001 -Los Angeles, CA