2009-04-30 96 views

回答

27

您可以使用VBA字符串函数(如@onedaywhen在评论中指出,他们不是真正的VBA功能,但它们的等价物从MS喷气机库。至于函数签名去,他们是叫和工作一样,即使MS访问的实际存在不要求他们为可供):

SELECT DISTINCT Left(LastName, 1) 
FROM Authors; 

SELECT DISTINCT Mid(LastName, 1, 1) 
FROM Authors; 
+3

挑剔点:所涉及的DLL文件(我相信)expsrv.dll的和vbajet32。这些MS文档统称为Jet Expression Services。所以我认为我们可以将它们视为本地ACE/Jet表达式,而不是上下文中的“VBA函数”。注意一些表达式在ACE/Jet中的工作方式与其等效的VBA函数IIF():VBA总是评估真假条款,而ACE/Jet则不会。 – onedaywhen 2009-05-01 07:23:01

+0

@onedaywhen:谢谢澄清。我对编写“VBA函数”犹豫不决,但我不知道该写什么。在提到的字符串函数的情况下,它们显然是等价的。 OTOH - 我想你甚至可以在Access查询中使用用户定义的VBA函数,但这可能是Access特定的。 – Tomalak 2009-05-01 15:05:26

+2

我想这就是为什么Nz()在本地Access中可用,但在您从Excel运行查询时不可用。 – Knox 2009-05-01 20:26:11

6

我认为这是MID(),也许LEFT()和RIGHT()在Access中。

2

我找不到任何添加了这个功能关闭的,现成的模块,所以我写了一个:

在Access,进入数据库工具丝带,在宏区域中单击到Visual Basic。在左上角的“项目”区域中,右键单击文件的名称,然后选择“插入” - >“模块”。在此模块中粘贴:

Public Function Substring_Index(strWord As String, strDelim As String, intCount As Integer) As String 

Substring_Index = delims 

start = 0 
test = "" 

For i = 1 To intCount 
    oldstart = start + 1 
    start = InStr(oldstart, strWord, strDelim) 
    Substring_Index = Mid(strWord, oldstart, start - oldstart) 
Next i 

End Function 

将模块另存为module1(默认值)。您现在可以使用类似的语句:

SELECT Substring_Index([fieldname],",",2) FROM table 
3

我已经与msaccess vba很多。 我认为你正在寻找的MID功能

例如

dim myReturn as string 
    myreturn = mid("bonjour tout le monde",9,4) 

会给你回值“吹捧”

相关问题