经典“谁登录”问题... [英] Classic "Who is logged-on" problem...
问题描述
我有一个表单,我从一个数据库名称列表中选择一个列表
在一个文本框中出现了计算机ID号和一个相关的
(来自一个表)用户名。有没有办法从查看此代码到
告诉网络ID名称?我希望不必用
" Dev Ashish"编写代码。 API代码,我肯定很棒,但我不知道如何以像我这样的形式实现它。请查看以下代码
并告诉我是否可以修改它以提供网络ID。我正在使用A2000并且
没有访问安全性。
谢谢!
选项比较数据库
Option Explicit
Private Const ms_UNKNOWN As String =" Unknown User"
私函数CreateListHeader()As String
Dim strFill As String
strFill =" No.;计算机ID;用户名;已连接?;可疑状态?;"
CreateListHeader = strFill
结束功能
私有子cboDBName_Change()
Dim strDB As String
Dim strMsg As String
如果是IsBlank(Me.cboDBName)那么
strMsg =&无法在没有有效数据库的情况下执行操作
名称。
MsgBox strMsg,vbInformation,数据库名称为空白
退出子
否则
strDB = Me.cboDBName
ShowUsersInDB(strDB)
结束如果
End Sub
Private Sub cboDBName_Click( )
Dim strDB As String
Dim strMsg As String
strDB = Me.cboDBName
ShowUsersInDB(strDB)
结束如果
结束子
私有子ShowUsersInDB(ByVal strDB As String)
Dim cnn As New ADODB.Connection
Dim rec As ADODB.Recordset
Dim fld As ADODB.Field
Dim intUser As Integer
Dim intFldCount As Integer
Dim varVal As Variant
Dim strPC As String
Dim strUser As String
Dim strConnected As String
Dim strSuspect As String
Dim strData As String
Dim strInfo As String
''获取数据库名称
strFile = GrabDBPath(strDB)
DoCmd.Hourglass True
''如果它到了 - 看看谁在数据库中
strData = CreateListHeader
strFile = strFile& strDB& DB_EXT
''打开连接和记录集
cnn.Open JET_PROVIDER& 数据源= &安培; strFile& ""
设置rec = cnn.OpenSchema(架构:= adSchemaProviderSpecific,
SchemaId:= adhcUsers)
使用rec
Debug.Print rec.RecordCount
Do Until .EOF
intUser = intUser + 1
strNo = CStr(intUser)& ""
intFldCount = 0
For Fld in .Fields
intFldCount = intFldCount + 1
varVal = fld.Value
选择案例intFldCount
案例1
strPC = StripNullChar(varVal)
案例2''获取ID的用户名
如果是IsNull(varVal)那么
strUser = ms_UNKNOWN& " ;;"
Else
strUser = GrabUserName(strPC)
结束如果
案例3
strConnected = StripNullChar(varVal)
案例4''怀疑状态
如果是IsNull(varVal)那么
strSuspect = "假QUOT; &安培; ""
Else
strSuspect = StripNullChar(varVal)
结束如果
结束选择
下一页
strData = strData& strNo& strPC& strUser& strConnected
& strSuspect
.MoveNext
循环
结束
Me.lstUsers.RowSource = strData
rec.Close
设置rec = Nothing
设置fld = Nothing
设置cnn = Nothing
结束子
私函数GrabUserName(ByVal strPCID As String)As String
Dim cnn As New ADODB .Connection
Dim cmd As ADODB.Command
Dim rec As ADODB.Recordset
Dim strSQL As String
Dim strUser As String
设置cnn = CurrentProject.Connection
设置cmd =新ADODB.Command
strSQL =" SELECT * FROM tblUserIDs WHERE PCID Like''" &
剩余$(strPCID,Len(strPCID) - 1)& "''"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
设置rec = cmd.Execute
如果不是rec.EOF那么
strUser = rec(1)
否则
strUser = ms_UNKNOWN
结束如果
rec.Close
cnn.Close
设置cnn = Nothing
结束功能
(strPCID,Len(strPCID) - 1)& "''"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
设置rec = cmd.Execute
如果不是rec.EOF那么
strUser = rec(1)
否则
strUser = ms_UNKNOWN
结束如果
rec.Close
cnn.Close
设置cnn = Nothing
结束功能
我使用这段代码。
私有声明函数apiGetComputerName Lib" kernel32" Alias
" GetComputerNameA" (ByVal lpBuffer As String,nSize As Long)As long
函数fOSMachineName()As String
''返回computername
Dim lngLen As Long,lngX As Long
Dim strCompName as String
lngLen = 16
strCompName = String
(lngLen,0)
lngX = apiGetComputerName(strCompName,lngLen)
如果lngX<> 0然后
fOSMachineName =左
I have a form that I choose from a list of database names and a list
within a textbox comes up with the computer ID number and an associated
(from a table) user name. Is there a way from looking at this code to
tell the network ID name? I hope not to have to write the code with the
"Dev Ashish" API code, which I''m sure is great but I can''t figure out
how to implement it in a form like mine. Please look at the below code
and tell if I can modify it to give network ID. I''m using A2000 and
without access security in place.
Thanks!
Option Compare Database
Option Explicit
Private Const ms_UNKNOWN As String = "Unknown User"
Private Function CreateListHeader() As String
Dim strFill As String
strFill = "No.;Computer ID;User Name;Connected?;Suspect State?;"
CreateListHeader = strFill
End Function
Private Sub cboDBName_Change()
Dim strDB As String
Dim strMsg As String
If IsBlank(Me.cboDBName) Then
strMsg = "Unable to perform operation without a valid database
name."
MsgBox strMsg, vbInformation, "Database Name is Blank"
Exit Sub
Else
strDB = Me.cboDBName
ShowUsersInDB (strDB)
End If
End Sub
Private Sub cboDBName_Click()
Dim strDB As String
Dim strMsg As String
strDB = Me.cboDBName
ShowUsersInDB (strDB)
End If
End Sub
Private Sub ShowUsersInDB(ByVal strDB As String)
Dim cnn As New ADODB.Connection
Dim rec As ADODB.Recordset
Dim fld As ADODB.Field
Dim intUser As Integer
Dim intFldCount As Integer
Dim varVal As Variant
Dim strPC As String
Dim strUser As String
Dim strConnected As String
Dim strSuspect As String
Dim strData As String
Dim strInfo As String
''get the db name
strFile = GrabDBPath(strDB)
DoCmd.Hourglass True
''if it gets here - see who is in the database
strData = CreateListHeader
strFile = strFile & strDB & DB_EXT
''open the connection and recordset
cnn.Open JET_PROVIDER & "Data Source=" & strFile & ";"
Set rec = cnn.OpenSchema(Schema:=adSchemaProviderSpecific,
SchemaId:=adhcUsers)
With rec
Debug.Print rec.RecordCount
Do Until .EOF
intUser = intUser + 1
strNo = CStr(intUser) & ";"
intFldCount = 0
For Each fld In .Fields
intFldCount = intFldCount + 1
varVal = fld.Value
Select Case intFldCount
Case 1
strPC = StripNullChar(varVal)
Case 2 ''get the user name for the ID
If IsNull(varVal) Then
strUser = ms_UNKNOWN & ";"
Else
strUser = GrabUserName(strPC)
End If
Case 3
strConnected = StripNullChar(varVal)
Case 4 ''suspected state
If IsNull(varVal) Then
strSuspect = "False" & ";"
Else
strSuspect = StripNullChar(varVal)
End If
End Select
Next
strData = strData & strNo & strPC & strUser & strConnected
& strSuspect
.MoveNext
Loop
End With
Me.lstUsers.RowSource = strData
rec.Close
Set rec = Nothing
Set fld = Nothing
Set cnn = Nothing
End Sub
Private Function GrabUserName(ByVal strPCID As String) As String
Dim cnn As New ADODB.Connection
Dim cmd As ADODB.Command
Dim rec As ADODB.Recordset
Dim strSQL As String
Dim strUser As String
Set cnn = CurrentProject.Connection
Set cmd = New ADODB.Command
strSQL = "SELECT * FROM tblUserIDs WHERE PCID Like ''" &
Left$(strPCID, Len(strPCID) - 1) & "''"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
Set rec = cmd.Execute
If Not rec.EOF Then
strUser = rec(1)
Else
strUser = ms_UNKNOWN
End If
rec.Close
cnn.Close
Set cnn = Nothing
End Function
(strPCID, Len(strPCID) - 1) & "''"
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdText
cmd.CommandText = strSQL
Set rec = cmd.Execute
If Not rec.EOF Then
strUser = rec(1)
Else
strUser = ms_UNKNOWN
End If
rec.Close
cnn.Close
Set cnn = Nothing
End Function
I use this code.
Private Declare Function apiGetComputerName Lib "kernel32" Alias
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function fOSMachineName() As String
''Returns the computername
Dim lngLen As Long, lngX As Long
Dim strCompName As String
lngLen = 16
strCompName = String
(lngLen, 0)
lngX = apiGetComputerName(strCompName, lngLen)
If lngX <> 0 Then
fOSMachineName = Left
这篇关于经典“谁登录”问题...的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!