我創建了文本字段ExportG3R表擴展和名。您的查詢使用名稱值「Litzner,Mike」。但是,名稱不包含逗號的值(如「Litzner Mike」)給了我姓氏的#Error和姓氏的「Litzner Mike」。如果名稱爲空,它給了我#Error的兩個。直到我嘗試對LastName和/或FirstName進行排序時,這兩者都沒有成爲SELECT的交易斷路器。嘗試這些排序時,Access 2003數據庫引擎響應「無效的過程調用」,這與您得到的錯誤消息不同。因此,儘管我不確定我的情況是否與您的情況完全匹配,但我建議您嘗試使用WHERE子句進行查詢,以僅返回非空值名稱值的行,並且還包含逗號。
SELECT
e.Extension,
Left(e.[name],InStr(e.[name],",")-1) AS LastName,
Trim(Mid(e.[name],InStr(e.[name],",")+1,Len(e.[name])-InStr(e.[name],","))) AS FirstName
FROM ExportG3R AS e
WHERE e.name Like "*,*"
ORDER BY ORDER BY 2,3;
另一個值得關注的是,名是一個保留字。使用Access 2007在設計視圖中創建該表時,給了我一個有關該字段名稱的警告。嘗試在設計視圖中創建一個可丟棄表格,並在它給出有關名稱的警告時閱讀它提供的幫助。如果可能的話,將它改爲不是保留字的東西...... FullName或許。
最後,我認爲如果名稱字段被拆分爲表格中的兩個字段,這會更簡單。將姓名存儲爲「Last,First」將兩個屬性組合在一個字段中。所以當你需要任何一個時,你必須把它們分開。它很容易分開存放,然後將它們連接起來時,你需要他們爲「姓,名」:
SELECT LastName & ", " & FirstName AS FullName
你的'名字,FirstName'或排序'左([ExportG3R.name],InStr函數([ ([ExportG3R.name],InStr([ExportG3R.name],「,」)+ 1,Len([ExportG3R.name]) - InStr([ ExportG3R.name], 「」)))'?您不能在ORDER BY中使用別名,因此您必須重複計算。如果您使用Access QBE構建您的查詢,它將爲您處理此問題。如果你做得很對,那可能是你在那裏有Null,在SELECT中沒有問題,但在ORDER BY中引起問題。 –