sql - 在访问查询中使用 VBA 函数
问题描述
我想使用 MS 访问编写一个 SQL 查询,它使用 VBA 函数计算序列号。
我有一个很大的“samplebasicinformation”表,它有很多外键,我想使用外表中的文本字段来创建一个基于文本的序列号。
我希望查询的第一个字段缩写其他表中的几个文本字段,然后将它们连接起来并创建这个序列号。
为了缩写文本字段,我有以下功能:
Function GetFirstLetters(rng As String)
Dim arr
Dim I As Long
arr = VBA.Split(rng, " ")
If IsArray(arr) Then
For I = LBound(arr) To UBound(arr)
GetFirstLetters = GetFirstLetters & Left(arr(I), 1)
Next I
Else
GetFirstLetters = Left(arr, 1)
End If
End Function
我尝试了下面的 SQL 来实现这一点,但由于语法错误而失败。
SELECT
(getfirstletters(select sl.locationname from samplebasicinformation as sbi join samplelocation as sl
on sbi.samplelocationid = sl.samplelocationid)),
samplebasicinformationid
from samplebasicinformation as sbi1
有人可以提供一些建议吗?
解决方案
您需要为您的函数提供一列。
您的查询相当混乱,我认为它就像这样简单:
SELECT
getfirstletters(sl.locationname),
sbi.samplebasicinformationid
FROM samplebasicinformation as sbi
INNER JOIN samplelocation as sl
on sbi.samplelocationid = sl.samplelocationid
请注意,您需要INNER JOIN
在 Access Sql 中。
推荐阅读
- mysql - 年/月/周至今 SQL 查询
- angular - 提供者未定义离子
- php - 在 Woocommerce 购物车页面中获取运输方式标题
- android - 在 LifecycleObserver 中使用 LiveData
- c# - 文件存在 c# Visual Studio 2017
- pandas - 将熊猫数据框转换为具有多个键的字典
- xml - 使用 XSLT 2.0 的函数 fn:parse-xml-fragment 是否有任何替代方法?
- angular - 用角度 6 重新排列剑道网格行
- java - Android Studio:如何自动生成从 xml 到 java 类的视图变量?
- ios - UIPickerView 选定的行标题设计在行值等于 1 时未更改