次の方法で共有

Access2007 履歴管理で[バージョン:日付 時間]を表示させないようにする方法

Anonymous
2012-10-07T13:46:45+00:00

Access2007 について教えてください。

Accessは初心者なのですが、仕事でAccess2007を使って案件を管理するDBを作成しなくてはなりません。

テンプレートを見たら”案件管理”というテンプレートがまさにぴったりだったので、そのテンプレートを少し編集しながら作成しています。

このテンプレートの”案件詳細フォーム”の”コメントタブ”に”新しいコメント”と”履歴”という項目があり、”新たしいコメント”に入力した情報が”履歴”に反映されていくようになっているのですが、反映された情報の最初に[バージョン:日付 時間]が追加されます。

たとえば ”新しいコメント”に”テスト1”と入力すると”履歴”の欄には

[バージョン: 2012/10/06 16:17:50 ] テスト1

と表示されます。

履歴のところには”新しいコメント”で入力した文字だけ追加していきたいのですが、[バージョン: 2012/10/06 16:17:50 ] を表示しない方法があったら教えていただけますか。

デザインビューで開いてみると”履歴”の欄には

=ColumnHistory([RecordSource],"コメント","[ID]=" & Nz([ID],0))

と書かれています。

”新しいコメント”に入力した文章だけが”履歴”の欄に順次追加されていくようにできればどのような方法でもかまいません。

Accessが不慣れなため、なるべく簡単な方法でできたらうれしいです。

よろしくお願いします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-10-08T05:45:09+00:00

hatena19です。

MukkuMukuさんがすでに完璧な回答をされていますが、せっかく作成したので発表しておきます。

考え方は、MukkuMukuさんの第2案とおなじです。正規表現は使わずにVBAの関数だけ作成しました。

標準モジュールに下記の関数を作成します。

Public Function MyColumnHistory(TableName As String, ColumnName As String, queryString As String) As String

Dim aryHistory, i As Long

aryHistory = Split(ColumnHistory(TableName, ColumnName, queryString), "[バージョン: ")

For i = 1 To UBound(aryHistory)

aryHistory(i) = Split(aryHistory(i), " ] ")(1)

Next

MyColumnHistory = Join(aryHistory, "")

End Function

フォームのテキストボックスのコントロールソースを下記のように設定します。

=MyColumnHistory([RecordSource],"コメント","[ID]=" & Nz([ID],0))

やることは2つです。

上記の関数を標準モジュールにコピーして貼り付ける。

コントロールソースの=の後に My を挿入する。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-10-08T03:05:33+00:00

MukkuMukuです。

今のところ、目からウロコ的な方法は思いついていない。

さらっと考えると、2通り思いつきます。

  1. 案件詳細フォーム/案件テーブルを調整してコメントを積み上げていく
  2. 履歴表示するとき、関数を追加して本文部分のみ表示する
  3. で必要な手段

案件テーブル/コメントフィールド/追加のみプロパティを "いいえ" にして履歴を収集しない

テキストボックス:Comments を非連結にする

テキストボックス:txtComments のコントロールソースを "コメント" にする

コメント追加用のコマンドボタン:cmdAddComment を追加する

コマンドボタン:cmdAddComment クリック時イベントでコメントフィールドに値の代入マクロアクションなどを使って追記させる感じ

VBAでよいならこんな感じ

Private Sub cmdAddComment_Click()

    If Len(Me.Comments & "") > 0 Then

        Me.txtComments = Me.txtComments & vbCrLf & Me.Comments

        Me.Comments = ""

    End If

End Sub

  1. で必要な手段

表示させる履歴から"[バージョン: ・・・・]" という文字列を置き換えてしまう。

表示される日付時間のフォーマットはOSの設定に左右されるので、正規表現つかった関数が一番シンプルかなと。

Function Sample(txtInput As String) As String

    Dim RE As Object

    Set RE = CreateObject("VBScript.RegExp")

    RE.Global = True

    RE.Pattern = "[バージョン:\s\s.*?\s]\s" '完全ではないから調整してください。

    Sample = RE.Replace(txtInput, "")

End Function

テキストボックス:txtComments のコントロールソースを 修正する

いずれの方法であっても、なにかしらの理解を深める必要があるのはやむを得ないかなと思います。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-10-11T07:00:53+00:00

    こんにちは。

    MukkuMuku さん、hatena19 さん、いつもアドバイスありがとうございます。

    (とても勉強になります)

    yurittago さん、マイクロソフト コミュニティ への投稿ありがとうございます。

    MukkuMuku さんのコメントの 1 の方法でカスタマイズしたんですよね。

    それであれば、「案件詳細表レポート」 の [Comments] のコントロールソースも 「コメント」 に変更すれば大丈夫ですよ。

    手元の PC (Windows Vista + Access 2007) で試したところ、複数入力したコメントもきちんとレポートに表示されていました。

    あと一歩のところまで行っていると思うので頑張ってください。

    あわせて、画像投稿の方法も書いておくので参考にしてくださいね。

    マイクロソフト コミュニティ 上で質問や返信で画像を貼り付ける方法を教えてください。

    結果などがわかりましたら、ぜひ書き込みをお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2012-10-09T12:03:53+00:00

    MukkuMukuさん、hatena19さん、

    丁寧な回答ありがとうございます。

    MukkuMukuさんの1.のやり方で”案件詳細フォーム”の”コメントタブ”の”履歴”にコメントだけ追加することに成功しました。^-^

    しかし、初心者ゆえその履歴がレポートに反映されていることに気がつかず、1.の変更に成功したもののレポートでエラーが出てしまいました。

    T-T

    ずうずうしくてすみません。こちらも教えていただけないでしょうか。m_ _m

    ”案件テンプレート”には”案件詳細表”というレポートがあるのですが、1.の方法で変更を加えたのちこのレポートを確認するとコメント欄が ”#エラー” と表示されてしまいます。

    それもそのはず、このレポートをデザインビューで開いてみると”コメント”のところに 

    =ColumnHistory([RecordSource],"コメント","[ID]=" & Nz([ID],0))

    と書かれています。

    (スクリーンショットを張ろうとしたのですが、うまくいきませんでした。T-T)

    これが間違っているのはわかるのですが、どのように書き直したらよいのかわかりません。。。。。

    たびたびすみません。

    どのように書き換えたらレポートの”コメント”欄にフォームの”履歴”の内容が反映されるか教えていただけますでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2012-10-08T04:56:00+00:00

    ありがとうございます!

    2つも方法をご提案くださってありがとうございます。

    初心者の私にはハードルが高そうですが1.の方法ならがんばれるかも。

    明日早速、会社で挑戦して結果を報告します。

    ^-^

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません