| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 414 人关注过本帖
标题:如何在 Select * 中引用自定义函数?
只看楼主 加入收藏
QQ342151559
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-10-10
收藏
 问题点数:0 回复次数:2 
如何在 Select * 中引用自定义函数?
比如表 P_History数据库(Access)的数据如下:

程序代码:
C_ID        M_ID    P_ID
20120102    01001    0
20120103    01001    0
20120104    01001    1
20120105    01003    1
20120106    02001    0
20120107    02001    2
20120108    02001    0
20120109    02001    1
20120110    01003    2


P_ID中:0表示Ok,1表示Fail,2表示,UnKnow,如何显示出这样的结果呢:
程序代码:
C_ID    M_ID    P_ID
20120102    01001    ok
20120103    01001    ok
20120104    01001    Fail
20120105    01003    Fail
20120106    02001    ok
20120107    02001    Unknow
20120108    02001    ok
20120109    02001    Fail
20120110    01003    Unknow


自定义函数:
程序代码:
Function Str_PM_Result(ByVal str_P As String) As String
If str_P = "0" Then
    Str_PM_Result = "For Schedule PM"
ElseIf str_P = "1" Then
    Str_PM_Result = "For Down PM"
Else
    Str_PM_Result = "For Schedule PM"
End If
End Function


sql = "select C_ID,M_ID," & Str_PM_Result(P_ID) & " from P_History"

如上语句,但是P_ID栏目为空,并不是 Ok/Fail/Unknow"?
或者有时会出现错误:
出现错误:  -2147217900    语法错误(操作符丢失)正查询表达式 'For Schedule PM' 中

或者:
SELECT IIF(P_Id=0,'OK',IIF(P_ID=1,'fail','unknow')) AS P_Id FROM 

但是 P_ID栏目还是为空,不知道哪里出错了...
搜索更多相关主题的帖子: 数据库 color 如何 
2013-08-07 22:57
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
数据库里,不能再使用 VB 里定义的 函数。

这种情况有二种处理 办法 :
1、添加 字典库。
然后查询时,使用 多表查询的方式。
具体查询命令你可以用 Access 的查询向导生成。

2、自己手动翻译。要求显示的内容不能绑定 控件。
text3.text= Str_PM_Result(rs.file("P_ID"))

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-08 08:35
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4941
专家分:30047
注 册:2008-10-15
收藏
得分:0 
SELECT P_History.C_ID, P_History.M_ID, P_ID_Str.P_ID_STR
FROM P_History INNER JOIN P_ID_Str ON P_History.P_ID = P_ID_Str.P_ID;

新建表:P_ID_Str ,字段只有二个,P_ID,P_ID_Str
上面是 连接查询的命令。

执行的结果如下:
C_ID    M_ID    P_ID_STR
20120102    01001    For Schedule PM
20120103    01001    For Schedule PM
20120106    02001    For Schedule PM
20120108    02001    For Schedule PM
20120104    01001    For Down PM
20120105    01003    For Down PM
20120109    02001    For Down PM
20120107    02001    For Schedule PM
20120110    02002    For Schedule PM


[ 本帖最后由 风吹过b 于 2013-8-8 10:09 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2013-08-08 08:50
快速回复:如何在 Select * 中引用自定义函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011811 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved