Viusalizzare tutti i dati in un MsgBox e poter decidere se stamparli oppure vederli in una maschera Dati.

Anonimo
2015-09-15T06:55:54+00:00

Buongiorno a tutti gli amici della community, ho creato il codice sottoriportato che mi permette di visualizzare gli utenti connessi al DB in rete.

Chiedo il vostro aiuto per poter innanzitutto visualizzare tutti i dati in un MsgBox e non uno ad uno cliccando ogni volta su OK.

Inoltre decidere sempre tramite Msgbox  se stampare quei dati oppure visualizzarli in una maschera Dati.

Ringrazio anticipatamente chi mi aiuta in questo.

Ciao Nicola.

Public Sub UtentiConnessi()

' set new recordset adodb

Dim rst As New ADODB.RecordSet

' open table, connection addb, all records , all fields

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

Do While Not rst.EOF

    ' read fields

    MsgBox rst.Fields("nameUser").Value _

    & Chr(13) & rst.Fields("nameComputer").Value _

    & Chr(13) & rst.Fields("LoginTime").Value

    ' move next record

    rst.MoveNext

Loop

' close recordset

rst.Close

Set rst = Nothing

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-09-15T08:42:58+00:00

Ciao,

If MsgBox(strMsg & vbCrLf & "Vuoi visualizzare la lista?", vbQuestion + vbYesNo) = vbYes Then

   DoCmd.OpenReport "nomeReport", acViewPreview, , , , strMsg

quindi su apertura della report 'nomeReport' puoi impostare il controllo txtElenco a me.openargs

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-09-15T08:35:54+00:00

    ciao Nicola,

    per visualizzare i dati crei una maschera come da post precedente nella parte edit.

    Per stampare, magari crei un report sulla query di cui sempre al post precedente.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-09-15T08:19:16+00:00

    Ciao Mimmo, ciao Sandro, grazie innanzitutto per il vostro gentile riscontro, benissimo le vostre due soluzioni, ho utilizzato la versione di Sandro, conservando gelosamente quella di Mimmo (cosi facendo ho capito come far uscire tutto in un MsgBox).

    Per poter stampare oppure visualizzare i dati come si vedono in una maschera Dati come fare?.

    Vi saluto con stima e affetto.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-09-15T07:38:39+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-09-15T07:10:29+00:00

    Ciao Nicola,

    invece di avere la MsgBox nel loop devi spostarlo alla fine:

    Dim strMsg as string

    strMsg=""

    Do While Not rst.EOF

          StrMsg=StrMsg & rst.Fields("nameUser").Value _

        & Chr(13) & rst.Fields("nameComputer").Value _

        & Chr(13) & rst.Fields("LoginTime").Value

         rst.MoveNext

    Loop

    MsgBox strMsg

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento