Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

公用函数调用问题

都市侠影  发表于:2011-06-25 18:19:29  
复制

我创建了一个公用函数,用来返回当前用户的用户名:

Public Function NowUser() As String
    Dim TemCn As ADODB.Connection
    Dim TemRs As New ADODB.Recordset
    Dim str As String
    Set TemCn = CurrentProject.Connection
    TemRs.ActiveConnection = TemCn
    str = "SELECT 用户名 FROM 用户表 WHERE IsCurrent=True"
    TemRs.Open str, , , , -1
    str = TemRs!用户名
    TemRs.Close
    TemCn.Close
    Set TemRs = Nothing
    Set TemCn = Nothing
    NowUser = str
End Function

经调试,该函数运行正常,能返回正确的值,但是在某个窗口的加载事件里调用此函数,却出错,调用代码:

Private Sub Form_Load()
    Me.CurtUser.Caption = "当前用户 " & NowUser()  //CurtUser是标签控件
    Me.DateSys.Caption = "日期 " & Date
End Sub

红色部分是出错位置,出错提示是:

不知道为什么,麻烦大家帮忙看看是什么问题。

下面是附件,记得按下SHIFT打开哈,密码在用户表中有。

点击下载此附件

 

Top
binuochao 发表于:2011-06-25 18:46:00

应当是公用函数部分不正确!再调试一下!



丘山 发表于:2011-06-25 22:42:59

查看一下CurrentUser()函数中的变量

应该是其中的某些变量为空



西出阳关无故人 发表于:2011-06-26 10:29:59

CurrentUser 方法

参阅应用于示例特性

使用 CurrentUser 方法可以返回数据库当前用户的名称。String 型。

expression.CurrentUser

expression      必需。返回“应用于”列表中的一个对象的表达式。

说明

例如,可以在跟踪对数据库进行修改的用户的过程中使用 CurrentUser 方法。

CurrentUser 方法返回一个包含当前用户帐户名称的字符串

如果尚未建立启用了安全性的工作组CurrentUser 方法将返回默认的用户帐户(“管理员”)的名称。“管理员”用户帐户的用户对所有数据库对象都拥有完全权限。

如果已经启用工作组的安全特性,CurrentUser 方法将返回当前用户帐户的名称。对于“管理员”以外的用户帐户,可以指定用于限制用户访问数据库对象的权限

示例

下面的示例将获得当前用户的名称并将其显示在对话框中。

MsgBox("The current user is: " & CurrentUser)
		
 
----------这是access自己的方法,有冲突。至少要修改你的函数名称,然后再测试


zhcosin 发表于:2011-06-27 08:31:56

经调试,公用函数能正常运行,所以问题当是在调用上,请热心人帮忙看看啊。



zhcosin 发表于:2011-06-27 08:32:51
3楼的方法也试过了,改了函数名,问题依旧。

zngjie 发表于:2011-06-27 15:04:47

以下是C#中代码,获取当前用户名并保存excel文件到桌面上,我是这样用的,具体道理没研究,

一、USing语句为这些。

using Microsoft.Office.InfoPath;
using System;
using System.Windows.Forms;
using System.Xml;
using System.Xml.XPath;
using mshtml;
using Excel = Microsoft.Office.Interop.Excel;

二、在过程中直接调用。

 public void CTRL281_4_Clicked(object sender, ClickedEventArgs e)
        {
            string UserName = System.Environment.UserName;

....................

.....................

objExcel.ActiveWorkbook.SaveCopyAs("C:\\Users\\"+UserName+"\\Desktop\\出货文件"+filename+".xlsx");

...........................................

 

 

 

我不懂VB,希望以上能有一丝帮助。



西出阳关无故人 发表于:2011-06-28 00:31:04

我建一个函数:

Public Function CurrentUserAAA() As String

Dim str As String

If MsgBox("请检验是否正确:", vbYesNo) = vbYes Then
  str = "vbYes"
Else
  str = "vbNo"
End If

CurrentUserAAA = str

End Function
然后在窗体的Command0中调用:

Private Sub Command0_Click()
  Me.Caption = CurrentUserAAA
End Sub

结果没有问题啊



zhcosin 发表于:2011-06-28 11:34:44

7楼代码里str的值是“vbYes”或“vbNo”啊,没看见如何获取用户的?谢谢各位回复。



西出阳关无故人 发表于:2011-06-28 20:17:01

那只是一个事例而已,并不是完成获取当前用户的。

修改你的函数如下:

Public Function NowUser() As String
    Dim TemCn As ADODB.Connection
    Dim TemRs As New ADODB.Recordset
    Dim str As String
    Set TemCn = CurrentProject.Connection
    TemRs.ActiveConnection = TemCn
    str = "SELECT 用户名 FROM 用户表 WHERE IsCurrent=True"
    TemRs.Open str, , , , -1
    str = TemRs.Fields("用户名")    '注意变化,你原来的是:str = TemRs!用户名
    TemRs.Close
    TemCn.Close
    Set TemRs = Nothing
    Set TemCn = Nothing
    NowUser = str
End Function

在我这里运行正常



zhcosin 发表于:2011-06-28 21:53:47

谢谢热心的9楼,函数NowUser()我这也能正常运行,问题是在某个窗体的加载事件中调用就出错,我改了TemRs.Fields("用户名") 这样问题还是存在,我觉得可能调用有什么问题。



zhcosin 发表于:2011-06-28 21:57:02

在帖子里我放上了附件,出问题的是“新生登记窗体”,记得按下SHIFT打开,密码在用户表中查一个就行。

 



zhcosin 发表于:2011-06-28 21:59:46
附件在楼主里哈。

西出阳关无故人 发表于:2011-06-29 14:24:05

你的实例没有引用ADO

图中第4行,你没有

 



zhcosin 发表于:2011-06-30 16:07:24
不,有ADO的引用。不是这的问题。

西出阳关无故人 发表于:2011-06-30 21:36:04

我在你的基础上,重新引用ADO,并随意修改共用函数的名称,就ok了

试着在代码窗口-调试-编译,看看有什么问题。

 



西出阳关无故人 发表于:2011-06-30 21:41:49
已修改:只是修改了你的函数的名称!

zhcosin 发表于:2011-07-02 17:15:40
试过了,还是无效,头疼……

zhcosin 发表于:2011-07-03 09:34:21

换了一台电脑运行,问题依旧……



网行者 发表于:2011-07-03 21:27:58
还是使用全局变量吧,简单点点击下载此附件

zhcosin 发表于:2011-07-13 17:37:13
佩服网行者,我怎么没想到,郁闷……

总记录:21篇  页次:1/2 9 1 2 8 :