ciao Nicola,
così forse migliori in leggilbità, inoltre mi appoggerei a Dao anziché ad Ado :
Public Sub UtentiConnessi()
' set new recordset adodb
Dim rst As dao.Recordset
' open table, connection addb, all records , all fields
Set rst = DBEngine(0)(0).OpenRecordset("Select * From T_users Where T_users.LoginTime Is Not Null And T_users.logoutTime Is Null", dbOpenDynaset)
'rst.Open "Select * From T_users Where T_users.LoginTime Is Not Null And T_users.logoutTime Is Null", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
' loop recordset
Dim strUser As String
Do While Not rst.EOF
' read fields
'strUser = strUser & rst.Fields("nameUser").Value _
'& Chr(13) & rst.Fields("nameComputer").Value _
'& Chr(13) & rst.Fields("LoginTime").Value
strUser = strUser & rst.Fields("nameUser").Value _
& Chr(32) & rst.Fields("nameComputer").Value _
& Chr(32) & rst.Fields("LoginTime").Value & vbNewLine
' move next record
rst.MoveNext
Loop
MsgBox strUser, vbInformation, "Utenti connessi"
' close recordset
rst.Close
Set rst = Nothing
End Sub
ciao, Sandro.
**** edit *****
se vuoi gestire la cosa con un msgbox, potresti creare un pulsante ad invocare :
If MsgBox("si per msgbox, no per maschera", vbInformation + vbYesNo, "avviso") = vbYes Then
UtentiConnessi
Else
DoCmd.OpenForm "M_users", acNormal
End If
creando ovviamente una mschera M_users che ha come recordSource una query con questo sql statement :
SELECT t_users.nameUser, t_users.nameComputer, t_users.LoginTime, t_users.logoutTime
FROM t_users
WHERE (((t_users.logoutTime) Is Null));
NB :dovrebbe essere sufficiente controllare is null solamente su logout, e questo vale anche per il recordset