首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

select * from。中不能摘引自定义函数么

2013-11-08 
select * from。。。中不能引用自定义函数么?比如表 P_History数据库(Access)的数据如下:C_IDM_IDP_ID2012010

select * from。。。中不能引用自定义函数么?
比如表 P_History数据库(Access)的数据如下:

C_ID    M_IDP_ID
20120102010010
20120103010010
20120104010011
20120105010031
20120106020010
20120107020012
20120108020010
20120109020011
20120110010032
...


P_ID中:0表示Ok,1表示Fail,2表示,UnKnow
如何显示出这样的结果呢
C_IDM_IDP_ID
2012010201001ok
2012010301001ok
2012010401001Fail
2012010501003Fail
2012010602001ok
2012010702001Unknow
2012010802001ok
2012010902001Fail
2012011001003Unknow
...


如果我顶一个一个函数:
function Str_Days(byval str_D as string) as string 
if astr_D ="0"then
    Str_Days="ok"
elseif astr_D ="1"then
    Str_Days="Fail"
elseif astr_D ="2"then
    Str_Days="Unknow"
endif
end function


select C_ID,M_ID,Str_Days(P_ID) from P_History


提示说是Str_Days函数未定义?
自定义函数
[解决办法]
不能引用自定义函数。

因为 SQL 命令是以字符串形式发送到数据库引擎,由它来解析执行的。SQL 命令中只能包含数据库引擎所支持的函数。
[解决办法]
最常见的数据库表数据编码转换方法,是附加一个表。

P_ID strPID
0    ok
1    fail
2    unknow

SELECT A.C_ID, A.M_ID, B.strPID AS P_ID FROM P_History AS A, sP_ID AS B WHERE A.P_ID = B.strPID

例如个人身份证信息的数据库中,主记录表中的许多信息都是编码。例如、省市县信息、职业信息,都是有编码国家标准的。这样存储是为了降低大型数据库存储空间占用。查询到人机界面时才通过附表转换出人机友好信息。
[解决办法]
Access 的自定义函数其实是 Access 的宏,只能在 Access 对象库中调用。
即 Access 的查询、报表中,Access VBA 代码中。

热点排行