• 締切済み

Accessでのシステム情報所得について

Accessのデータベースを複数のユーザーで使用しています。 データの保持のため、変更履歴を作成したいのですが、 各端末のログオンユーザー名はAccessから所得できますか? 履歴を残したいフィールドの更新時に、 「日付」「フィールド名」「変更前内容」「変更後内容」「ユーザー名」を 保存したいと思っています。

  • oom
  • お礼率29% (26/87)

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3
参考URL:
http://www.vbvbvb.com/jp/gtips/0501/gGetUserName.html
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

サンプルを作ってみましたので、参考にしてください。 'GetUserName APIの宣言 (Declarations)に記述 Declare Function GetUserName Lib "advapi32.dll" Alias _   "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Sub DispUserName()   Const SIZE = 128   Dim UserName As String * SIZE   Dim StrLen As Long   StrLen = SIZE   If GetUserName(UserName, StrLen) <> 0 Then     MsgBox "ユーザー名は、 " & Mid(UserName, 1, (StrLen - 1)) & " です。"   Else     MsgBox "ユーザー名は、取得できません。"   End If End Sub

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ログオンユーザはWindowsへのログオンということでいいのでしょうか? それでしたらWindowsAPIのGetUserNameで取得できます。

oom
質問者

補足

回答ありがとうございます。 Windowsへのログオンになります。 WindowsAPIやGetUserNameは Accessについて調べているといろいろでてきましたが、 あまりわかりませんでした。 Accessのイベント内で行うにはどうすればいいでしょうか?

関連するQ&A

  • ACCESS2003のシステムを2010で!!

    ACCESS2003で作られたシステム(ソフト)をACCESS2010で使いたいと思っています。 (会社の端末が新しくなったため。) しかし2010で開こうとすると、以下のメッセージが表示されます。 「オブジェクト“A”が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。“A”がローカルオブジェクトでない場合は、ネットワークの接続を確認するか、サーバ管理者に問い合わせて下さい。」 ここで「OK」をクリックすると、さらに以下のメッセージが表示されます。 「現在のユーザーアカウントでは、このデータベースを変換または有効にする権限がありません。 データベースを変換または有効にするには、次のいずれかの操作を行ってください。 ※このデータベースにアクセスするときに使うユーザーアカウントを定義しているワークグループに参加します。 ※データベースオブジェクトの[開く/実行]権限と[排他で開く]権限を持つようにします。 ※データベースのすべてのテーブルの[構造の変更]権限または[管理者]権限を持つか、データベースのすべてのテーブルの所有者になるようにします。 ※データベースのすべてのオブジェクトの[構造の読み取り]権限を持つようにします。 ※他のユーザーにデータベースを閉じるように要求します。」 私はACCESSの使用者であって、開発などはできない人間ですので、 分かりやすい用語などでご教示頂けましたら大変嬉しく思います。 ご多忙中大変恐縮ではございますが、何卒宜しくお願い申し上げます。

  • アクセスで、テーブルのデータが更新できない

    アクセスで、テーブルのデータが更新できない accessについての質問なのですが、テーブルの中のデータを(フォーム等を使わず)テーブルを開いて直接データを書き換えました。 フィールド名などの変更でなく、テーブルの中身の更新です。 そのあと、数日間はその変更された内容が保持されていたのですが、1週間もたたないうちに、またもとに戻っていたのです。(3回以上、同じことがありました) これは何か原因があるのでしょうか。それとも、このaccess自体が何かおかしくなっているのでしょうか??

  • Accessで書籍のデーターベースでも作ろうかと思います。

    Accessで書籍のデーターベースでも作ろうかと思います。 例えば、一つの本に対して著者が2名以上いるばあいにも対応するようにフィールドを作る場合はどのようにすればよいのでしょうか。 予め、「著者1」「著者2」・・・のように複数のフィールドを作っておく必要があるのでしょうか。 アクセス、およびデーターベースについてはほぼ初心者です。 よろしくお願いいたします。

  • ACCESS2007 DMaxについて

    WinVistaでACCESS2007を使っております。 顧客との取引履歴のデータベースを少しずつ作っております。 現在のデータベース構成は簡単に書きますと、 「顧客T」 ・顧客ID ・顧客名 ・ ・ ・ ・最終取引日 「取引T」 ・取引ID ・顧客ID(顧客Tの顧客IDとリレーション) ・取引日 ・取引内容 という感じです。 顧客Tをソースに「顧客フォーム」を作り、そのフォーム内にサブフォームで 取引履歴として「取引履歴サブフォーム」。「取引日」「取引内容」のみ表示して 入力しております。 やりたいことは、フォームを開いた際に、サブフォーム内の取引日の中で 最新の日付をメインフォームの「最終取引日」フィールドに入力して、データ を更新していきたいです。 非連結のフィールドを作って表示だけすればいいのかもしれませんが、 現状データとして格納していきたいです。 VBAでメインのフォーム「開くとき」にDMaxで最大の日付を拾えばいいかと思い 試してみましたが、エラーが出てしまいます。 いろいろ試してみましたが、記述はこんな感じです。 Me.最終取引日=DMax("日付",Me.取引履歴サブフォーム) としてみました。 どなたかお力を貸してください。

  • Access2000 ユーザー名の取得

    Access2000で、登録や編集した人をフィールドに記録したいのですが、 Windowsのログオンユーザーではなく、Access2000で登録しているユーザー名を取得することは可能なのでしょうか?(ツール→セキュリティ→ユーザー/グループのアカウントで登録したユーザー)

  • Accessの選択クエリーについて教えて下さい。

    Access2002です。 フイールド名DATEには01/01~12/31まで日付型(mm/dd)で入っています。 このデーターベースからクエリーで今日(MonthとDay)をクエリー実行で取り出すにはフイールドDATEの抽出条件はどのように書けばよいのでしょうか。よろしくお願いします。

  • アクセス2007で

    アクセス2007で、ある2つのフィールドが日付なのですが、テキスト型になっています(20091001の物と2009/10/1となっているがテキスト型のもの)。クエリでこの2つのフィールドを別々に日付型に変更したものを表示させたいのですがどうしたらいいですか?

  • アクセスで

    アクセスであるテーブルに日付付きの注文した品物の履歴一覧があります。フィールドは"日付""品物目""注文個数"で、このテーブルは毎日追加されていきます。 もう一つのテーブルに品物の単価一覧があります。フィールドは"品物名""単価"です。 クエリで1つ目のテーブルの"注文個数"に2つ目のテーブルの"単価"を掛け合わし"日付""品物名""注文個数*単価=注文金額"としています。 この履歴が3か月分ぐらいありますが、単価は期間関係なしに変更があるものと、変更が無いものとがあり、いきなり何品か変更になったりします。 ですから、単価が変更になった時に、単価一覧テーブルの単価を変更してしまと、変更前データまで影響してしまい、過去のデータを見たい時に困ってしまいます。 単価を変更しても、変更前のデータは残る様にできますか? 品物名は2000種類ぐらいあり、単価変更も何か月に1回ぐらいはあります。又、過去のデータを見る事も度々あり、その時に売上に対して、注文がどの程度あったかなど、非常に大事なデータになっています。 誰か教えて頂けませんか? よろしくお願いします。

  • C#でAccess2003データ更新時に発生するのエラーの内容がわからなくて困っています。

    お世話になります。 とある工場で使用されているデータベースの内容をC#で変更、更新を するプログラム改造を手がけています。データベースはAccess2003で 作成されていて、データベースの読込み、変更、更新はできるのですが、 一部のフィールド名に "DateTime" 、"String" と名前がつけられている箇所があり、この部分については"UPDATEステートメントの構文エラーです" となってしまします。他の部分については全く問題なく更新できています。例えば"Data01"など… プログラム概要は System.Data.OleDb.OleDbConnection cn; System.Data.OleDb.OleDbDataAdapter ap; System.Data.OleDb.OleDbCommandBuilder cb; DataSet ds; DataRow dr; DataTable dt; ---処理--- dt.Rows[n]["DateTime"] = DateTime.Now.ToString(); ap.Update(ds,"t_MINIDATATBL"); となっており、"DateTime" "String"フィールドのところだけアップデート実行のところで例外処理となってしまいます。 "DateTime"や"String"などのようにC#で使われているキーワードと同じ名前はまずいのでしょうか? しかし、データベースは客先の物なので勝手にフィールド名は変えられません。 一時的にフィールド名を変更して、処理終了時に元のフィールド名に戻すなどという手法などありますでしょうか? また、他の方法などもありましたらご教授願います。 環境: コンパイラ VisualStudio2008 C# データベース Microsoft Access2003 以上、よろしくお願い致します。

  • Access2000で困ってます

    お世話になります Access2000で困っています あるデータベース(A)でVBAをさわっていたら おかしくなってしまいました そこで一週間ほど前にBackupのつもりで ファイル名を変えて保存した同じデータベース(B)を 使おうと思うのですがこの一週間であるテーブルのデータを 変更しています どのレコードのどのフィールドを変更したのかわかりません そこでデータベース(A)のテーブルとデータベース(B)のテーブルを 比較照合したいのですがどうすればうまくできるでしょうか? アドバイスお願いします

専門家に質問してみよう