• ベストアンサー

ACCESSについて教えて下さい。

データベースにログオンしているユーザーを Microsoft Jet UserRoster で調べる方法 http://support.microsoft.com/kb/285822/ を調べたのですが、この方法だとDebug.Printでイミディエイト ウィンドウに値を返していますよね?? これをフォームを作成しテキストBoxなどに返す方法を教えて下さい。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

ただ見せるだけでよいのですよね? フォーム名を、F1 テキストボックス名を、TX1 としたら下記の感じで如何でしょ。 テキストボックスのフォントは、Pの付かない当幅フォントにして下さい。 Sub ShowUserRosterMultipleUsers2()   Dim cn As New ADODB.Connection   Dim rs As New ADODB.Recordset   Dim i, j As Long   Dim s As String   Set cn = CurrentProject.Connection   ' The user roster is exposed as a provider-specific schema rowset   ' in the Jet 4.0 OLE DB provider. You have to use a GUID to   ' reference the schema, as provider-specific schemas are not   ' listed in ADO's type library for schema rowsets   Set rs = cn.OpenSchema(adSchemaProviderSpecific, _   , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")   'Output the list of all users in the current database.   s = Format(rs.Fields(0).Name, String(20, "@")) _     & Format(rs.Fields(1).Name, String(20, "@")) _     & Format(rs.Fields(2).Name, String(20, "@")) _     & Format(rs.Fields(3).Name, String(20, "@"))      While Not rs.EOF     s = s & vbCrLf _       & Format(Left(rs.Fields(0), Len(Trim(rs.Fields(0))) - 1), String(20, "@")) _       & Format(Left(rs.Fields(1), Len(Trim(rs.Fields(1))) - 1), String(20, "@")) _       & Format(rs.Fields(2), String(20, "@")) _       & Format(Nz(rs.Fields(3), "Null"), String(20, "@"))     rs.MoveNext   Wend   Forms!f1!tx1 = s   rs.Close   Set rs = Nothing   cn.Close End Sub 説明 Format(rs.Fields(0).Name, String(20, "@")) 文字の桁数を20に揃える為に行っています。20は適当に変えて下さい s = s & vbCrLf は改行 Format(Left(rs.Fields(0), Len(Trim(rs.Fields(0))) - 1), String(20, "@")) Trim(rs.Fields(0)) で余分なスペース削除 さらに私の環境に依存するかもしれませんが、文字の最後ににごみが付くので Left で一文字削っています。 上記モジュールを適当なコマンドボタンとか何かで Call ShowUserRosterMultipleUsers2 してあげればよいと思います。 注 提示されたリンク先では、参照設定に Microsoft ActiveX Data Objects 2.6 Library とありますが、2.6 にチェックを入れると、ADO のヘルプが見られなくなります。 (中身が真っ白なヘルプしかでてこない) なので、2.5 にチェックを入れておいた方が良さそうです。 当方Access2002 ですが、2.5でも動きました。

AKI78
質問者

お礼

"-1"がポイントみたいですね、有難うございました。

その他の回答 (1)

  • Bickyon
  • ベストアンサー率41% (42/101)
回答No.1

テキストボックスの名称がText1だとして、 Text1.Text = 「Debug.Printしている項目名称」 という書き方でいけるはずですよ。

AKI78
質問者

お礼

有難うございます。

関連するQ&A