アクセスかエクセルを利用して顧客の申し込み履歴を作りたいと思っています。
そこで、以下のことを行いたいのですが、どなたか知恵をお貸し下さい!
・フォームに入力するとデータが履歴として蓄積される。
履歴はできれば顧客毎に保存したいです。
・同時に顧客情報に最新のデータが反映される。
アクセス・エクセルとも2000を使用しています。
分かりづらい質問かとは思いますが、よろしくお願いします。

A 回答 (1件)

こんにちは。

maruru01です。
Accessで。
フォームの入力項目を含んだ履歴テーブルを別途作成しておきます。
とりあえず、普通に顧客情報テーブルを元にフォームを作ります。
そのフォームの適当なイベントで履歴テーブルに変更内容を書き込みます。
例えば、フォームに[登録]というコマンドボタンを置いて、それをクリックすると顧客情報テーブルと履歴テーブルに変更内容を書き込むようにします。
ちなみに履歴なので、同時に変更日付や備考なども履歴テーブルに記述することになるでしょう。
また、前回との差分を見て、まったく変更がなければ履歴を残さないということなら、フォームのLoadかCurrentイベントなどで、いったんその時のデータを変数などに残しておいて、登録時に比較するといったコードを書くことになります。
詳細は、本やネット上でADOなどの項を見て下さい。
では。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qアクセスで作業の履歴を蓄積する方法

育てているバラの管理表をアクセスで作成中です。
とりあえず作ってみましたが、作業の履歴の保存でつまずいてしまいました。
たとえば、施肥というフィールドを作ったとして、そこに施肥日時を入力すると前回のデータは消されてしまいますよね。
そうではなく、今まで行ってきた施肥の記録がすべて残るようにしたいのです。
多分、一鉢ごとにテーブルを作れば解決するのでしょうが、100鉢近くありこれからも増える予定なんです。また、すべての鉢に対してどの鉢がいつ施肥したかわかるように一覧でも見たいのです。
この場合、どういったデータベースの作成をしたらよいのでしょうか?
使っているヴァージョンは2000です。

Aベストアンサー

**Hauyneさんアクセスの森を探検してますね。**
>施肥の記録がすべて残るようにしたいのです
>一鉢ごとにテーブルを作れば解決するのでしょうが、100鉢近くあり・・
>すべての鉢に対してどの鉢がいつ施肥したかわかるように一覧でも見たい
>この場合、どういったデータベースの作成をしたらよいのでしょうか
まず1・2番目の「記録がすべて残る・・」「一鉢ごとにテーブルを・・」に関してですが一つのテーブルで色々な種別の花の手入れや施肥作業を管理します。それと育てている花の情報を保存するマスタになるテーブル。これには一鉢づつ管理するコード番号やID番号が必要です。という訳で最低2つのテーブルを作れば管理できます。
*花マスタ(花の鉢を管理するテーブル)
フィールドは
花ID(鉢No・花IDでもかまいません):他と重複しないように主キーとします。このフィールドでどの花・鉢か判断します。
品種名:花の名称(芳純とかヘリテージとか)
栽培開始日:種子を植えた日とか
発芽日:
  ・
などその花の情報を保存してキーによって管理します。
*作業テーブル(水を与えたとか施肥したとかの情報を保存するテーブル)
作業ID:オートナンバー型でOK。勝手に連番を振ってくれます。(作業テーブルはここがキーになります)
花ID:花マスタの主キー(このフィールドでどの花・鉢か判断します)
作業日:作業した日付
作業内容:施肥・水などの内容
テーブルの構築は最低でこのくらいです。
花マスタと作業テーブルの花ID同士を1対多のリレーションをすれば最小のデータベースが出来ます。
後は花マスタと作業テーブルを元にして作業の入力フォームを作れば入力も楽になります。
作業入力フォームは花マスタの情報を花マスタから花IDを使って表示する親フォームと作業を入力するサブフォームの形の場合と作業テーブルを元にしたフォームを作りそのまま作業テーブルに入力できるフォームとして品種名は花マスタから品種名を表示だけするフォームでも入力できます。
フォームの作業内容はコンボボックスで項目を作っても良いし作業内容のテーブルを別に作ってコンボボックスに表示してもOKだと思います。作業内容テーブルを作れば3つのテーブル構成になりますが。
作業入力フォームを使って作業テーブルに花を世話した作業をどんどん入力して蓄積していけば良いのです。

>すべての鉢に対してどの鉢がいつ施肥したかわかるように一覧でも見たい
これは作業テーブルの作業内容で"施肥"というレコードを抽出して花マスタから作業テーブルの花IDを元に品種名を持ってきて作業日付を見ればどの花に施肥をした作業日がいつか分かります。
これはクエリを使えば簡単にできます。抽出の仕方などはヘルプや参考書を見て応用すれば出来ますよ。

**Hauyneさんアクセスの森を探検してますね。**
>施肥の記録がすべて残るようにしたいのです
>一鉢ごとにテーブルを作れば解決するのでしょうが、100鉢近くあり・・
>すべての鉢に対してどの鉢がいつ施肥したかわかるように一覧でも見たい
>この場合、どういったデータベースの作成をしたらよいのでしょうか
まず1・2番目の「記録がすべて残る・・」「一鉢ごとにテーブルを・・」に関してですが一つのテーブルで色々な種別の花の手入れや施肥作業を管理します。それと育てている花の情報を保存するマスタに...続きを読む

Qアクセス2007 フォームで入力したデータが検索フォームの結果に反映されません

アクセス2007を使用しています。

今顧客のデータベースを作成しています。
新規の顧客のデータを入力し、検索して顧客データを閲覧できるようにしたいです。

以下のような構成にしてあります。

○T顧客マスタ
○F新規入力
○F検索
○Q検索

新規の顧客データをフォーム【F新規入力】より入力して、入力したデータはテーブル【T顧客マスタ】に格納されます。

また、検索フォームとして顧客名や顧客住所から、該当する顧客データをあいまい検索できるような【F検索】を作成しました。(Q検索から作成)

しかし、サンプルデータとしてはじめにインポートしたデータ200件は検索対象となっているのですが、【F新規入力】から入力したデータ10件は検索に引っ掛かりません。【T顧客マスタ】には格納されているのですが・・・

当方、アクセスは初心者なので何か根本的に間違っているのかも知れませんが、どうにもこうにもわからないので質問いたしました。

質問内容がわかりづらいようでしたら申し訳ありません。都度補足いたしますのでよろしくお願いいたします。

アクセス2007を使用しています。

今顧客のデータベースを作成しています。
新規の顧客のデータを入力し、検索して顧客データを閲覧できるようにしたいです。

以下のような構成にしてあります。

○T顧客マスタ
○F新規入力
○F検索
○Q検索

新規の顧客データをフォーム【F新規入力】より入力して、入力したデータはテーブル【T顧客マスタ】に格納されます。

また、検索フォームとして顧客名や顧客住所から、該当する顧客データをあいまい検索できるような【F検索】を作成しました。(Q検索から...続きを読む

Aベストアンサー

う~ん、午前中にも、見かけた質問ですね^^;

まずですよ
こう言う質問を出された場合、同じ症状が起こるか?を、質問者さま以外の回答者側のPCで、質問内容の再現を試行錯誤して、同じ症状を作り出します

で、質問者さまの質問内容から、同じ状況の検索されない状況が作れるか?となれば、判りますよね
再現が出来ません・・・それが、回答が付かない理由です

ぱっと、読んでですよ
すべてが怪しいw

まずは、Q検索あたりから、見直すのが最初かな?

Q顧客管理はアクセスかファイルメーカーか

似たような質問があるのですが、少し条件が違いますので質問させてください。

顧客管理をデータベースでやろうと思います。
内容は、整体・鍼灸・マッサージ等のカルテ管理になります。
顧客の住所・氏名・写真・症状・施術履歴等が一覧で見れて、
それぞれ個人のカルテのような1枚に情報が収まる様式にして、
見やすく表示することもでき、さらに条件で絞り込むこともできる。
ありきたりですが、そのようなものをイメージしています。

専用のソフトでは弥生顧客などあるようですが、みたところそれなりの
価格がしますし、レイアウトデザインがあまり好みではありません。
アクセスやファイルメーカーならレイアウトも自由に変更できるようですし、今後拡張したい場合対応しやすいのかと思いました。

アクセスやファイルメーカーがあれば専用ソフトと同等のものを
作ることは可能ですか?

また、このような用途の場合はどのソフトがおすすめでしょうか?
一長一短あると思いますが個人的な感覚で構いませんので意見を聞かせてください。
よろしくお願いします。

Aベストアンサー

個人的な感想ですが

ファイルメーカーの方が意外と柔軟ですし
直感で作れたような気がします

アクセスは何となく決まった物には便利かも知れませんが

但し書籍があるので悩ましいかも
後は値段もするし

逆にファイルメーカーは安いけど
書籍が少ない
それでもLAN上でブラウザから閲覧できるのは
優れている

QEXCELでSheetにデータを蓄積したい

Sheet1に入力シートを作成し、Sheet2に蓄積シートを作成しました。
Sheet1で作成されたデータをSheet2に蓄積させておきたい。
Sheet1のA2の値が入力された場合に実行するとすると
Sheet1のデータ数は、毎回異なります。
他を参考に以下のように作ってみたのですが、
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, lastB As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("入力シート")
Set ws2 = Sheets("蓄積シート")
With Target
If .Address <> "$A$2" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:s1")) <> 19 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
lastB = ws1.Range(("a2:s2"), Selection.End(xlDown)).Select
ws2.Range("a" & lastA + 1).Resize(1, 19).Value = _
ws1.Range("a2:S2").Resize(1, 19).Value
End With
End Sub
'ws1.Range("a2:S2").Resize(1, 19).Value の部分で
'上記ws1の範囲の内、Row2の値しかws2へ反映されません
どなたか教えて頂けないでしょうか。

Sheet1に入力シートを作成し、Sheet2に蓄積シートを作成しました。
Sheet1で作成されたデータをSheet2に蓄積させておきたい。
Sheet1のA2の値が入力された場合に実行するとすると
Sheet1のデータ数は、毎回異なります。
他を参考に以下のように作ってみたのですが、
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, lastB As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("入力シート")
Set ws2 = Sheets("蓄積シート")
With Target
If .Address <> "$A$2" Or ...続きを読む

Aベストアンサー

#1産の補足説明を拝見しました。
質問者さんのロジックに矛盾を感じるのですが多分下記で出来ると思います。
シート1にコントロールツールボックスのコマンドボタンを作成しそのボタンを押下すると下記のロジックを動かすようにして下さい。

Public La, Lb
Private Sub CommandButton1_Click()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets(1)
Set ws2 = Sheets(2)
La = ws2.Range("a65536").End(xlUp).Row
Lb = ws1.Range("a65536").End(xlUp).Row
For j = 1 To Lb
For i = 1 To 19
ws2.Cells(La + j, i).Value = ws1.Cells(j, i).Value
Next
Next
End Sub

Q顧客IDを入力すると顧客名や住所が表示されるように

Accessで、フォームから顧客テーブルにある顧客IDを入力すると、同じフォーム内にある「顧客住所」や、「電話番号」など、顧客テーブルに登録してある情報が表示されるようにするには、どうすれば良いでしょうか?

環境は
WindowsXP
Access2003
です。

Aベストアンサー

顧客番号を入力すると、テーブルにある情報(顧客住所)を表示したい,
ということは検索(選択)の要素があることは判りますね。
形式にこだわらなければ、選択クエリのパラメータクエリで本件は
出来ることも知ってますか。
フォームの場合、質問で言うテーブルを新規の段階で指定すると、連結してしまって
旨く顧客番号を指定することが難しくなる。
ーー
其れで、フォームに非連結で、3つのテキストボックスを設ける。
検索スタート用のコマンドボタンを設ける方が良いだろう。
ボタンをクリックしたとき、ということなので「イベント」を使わざるを得ない。
1つは顧客番号入力等のテキストボックス、あと2つは顧客番号でテーブルを
検索し情報を表示する。今のところは、1顧客番号で、テーブルで1レコードとする。
ーー
例データで説明。
社員2 テーブル
ID氏名住所電話番号
1山田 三郎東京都大田区03-2345-6543
2大島 義男東京都品川区042-2345-2345
3下田 茂     仙台市青葉区0720-34-3456
4小出 健二名古屋市緑区042-345-2345
5中田 卓    福岡市北区07523-23456
6山田 三郎大阪市北区
7中田 卓    東京都豊島区
8今村 三郎奈良市西大寺075-234-1234
9木見 明    和歌山市    076-111-1111
10木見 研    新宮市    083-123-1234
ーー
フォーム

     テキスト3

     テキスト1

     テキスト5
            コマンド0(ボタン)
3,1,5は私の場合であって、実際質問者の場合の名前で下記コードの
テキスト3 などの数字を変えてください。
ーーー
ボタンのクリックイベントに
Private Sub コマンド0_Click()
テキスト3.SetFocus
Dim SQL As String
SQL = "SELECT 氏名,住所 "
SQL = SQL & "FROM 社員2 "
SQL = SQL & "where 社員2.ID = " & テキスト3.Text
Me.RecordSource = SQL
Me.テキスト5.ControlSource = "氏名"
Me.テキスト1.ControlSource = "住所"
End Sub
----
テキスト3に7
と入れてボタンをクリックする。
ーー
フォームの結果は
  7
  東京都豊島区
  中田 卓



なります。
ーーー
VBAを使っていますが、使わない回答が出るかどうか。
本質問は、基本的なことで、たやすいようで難しいと思う。

顧客番号を入力すると、テーブルにある情報(顧客住所)を表示したい,
ということは検索(選択)の要素があることは判りますね。
形式にこだわらなければ、選択クエリのパラメータクエリで本件は
出来ることも知ってますか。
フォームの場合、質問で言うテーブルを新規の段階で指定すると、連結してしまって
旨く顧客番号を指定することが難しくなる。
ーー
其れで、フォームに非連結で、3つのテキストボックスを設ける。
検索スタート用のコマンドボタンを設ける方が良いだろう。
ボタンをクリックしたとき、と...続きを読む


人気Q&Aランキング

おすすめ情報