ちょっと先の未来クイズ第4問

いろいろ試してやってみたのですが、VBA等がド素人の為に、応用がききません。
すみませんが、どなたか教えてください!

フォーム【社員データ(実績入力)】にテキストボックスで作った非連結の計算式があります。
「合計提案件数」コントロールソース=nz([参加賞])+nz([F賞])+nz([E賞])+nz([D賞])+nz([C賞])+nz([B賞])+nz([A賞])+nz([ア参加賞])+nz([ア提案賞])+nz([ア努力賞])+nz([アイデア賞])

それをテーブル【T社員データ】の「合計提案件数」(数値型)という場所にデータを反映させたいです。
いろいろやってみたのですが、エラーばっかりです(><)

ちなみに、このフォームは、【T社員データ】をクエリにして、職場検索をかけ、抜粋した職場のメンバーのみを、フォームで表示するようにしています。
質問内容をご理解いただけましたでしょうか。
すみませんが、宜しくお願い致します。

A 回答 (6件)

1.全件(全社員、全職場)一括でやるのか


2.フォームで表示している社員だけ計算して、職場ごとも選択的に計算させるのか、職場ごとは一括でもいいのか
3.そもそも頻度は?日次、週次、月次、四半期、年次?
等々、掘り下げていくと何にドライブさせるかによるっていう感じです。
よく分かりませんが更新クエリ(Update文)を掛けるときはWhrere条件もあった方がいいかもしれませんね。
更新したい社員だけを選ぶクエリーと、合計を出すクエリ等々、やりたいことの部分的なクエリーをまずは別々に作って、SQLビューでどういう文になるか見て、序々に組み合わせていくってしていけばなんとか思うようなSQL文が書けるのではないかと思いますよ。
がんばってください。
    • good
    • 0
この回答へのお礼

No.4の方法をとらせてもらいました。
今回は、"アクセスはこういうもの"という事が大変勉強になりました。ありがとうございました。
インターネットを見れる環境になく、今までお礼が遅れてしまったことをお詫び申し上げます。
また、宜しくお願い致します。

お礼日時:2004/01/05 15:54

Private Sub cmd79更新_Click()


 Dim stSQL as String

 strSQL = "UPDATE T社員データ SET 合計提案件数 =" & txt合計提案件数
 DoCmd.RunSQL strSQL

End Sub
で、やってみてください。txt合計提案件数は、フォームに非連結で表示されてる合計数ですよ。
    • good
    • 0
この回答へのお礼

お礼が遅くなりすみませんでした。
休み中、インターネットを見ることが出来なかったので、VBAによる算出はあきらめ、コントロールに計算式を入れてやる方法をとりました。
少し時間はかかりましたがなんとか算出することができました。
そして、No.5の方法もやってみたのですが、やはりダメでした。自分なりに本等で勉強してみます。
取り急ぎお礼まで。
ありがとうございました。

お礼日時:2004/01/05 15:50

> それらの個人実績から職場毎の合計をさらにフォームで出したい


→クエリで出せばいいのでは。個人実績クエリ、職場毎合計クエリとか。「合計」ってできますよ。
ますますテーブルに書き込む必要はなさそうです。
    • good
    • 0

strSQL = "UPDATE T社員データ SET 合計提案件数 =" & 「合計提案件数」コントロールソース


DoCmd.RunSQL strSQL

でできませんか?自宅なので検証はしてませんけど。

この回答への補足

あらかじめ設定しておいたボタンの「イベントのクリック時」に設定しました。
が、コンパイルエラー「変数が定義されていません」というエラーが出てしまいました。
PAPAさんに言われたとおりにやったものが、以下の通りです。
全く同様にしたつもりですが...
なにか違うのでしょうか??

Private Sub cmd79更新_Click()
strSQL = "UPDATE T社員データ SET 合計提案件数 =" & "=nz([参加賞])+nz([F賞])+nz([E賞])+nz([D賞])+nz([C賞])+nz([B賞])+nz([A賞])+nz([ア参加賞])+nz([ア提案賞])+nz([ア努力賞])+nz([アイデア賞])"
DoCmd.RunSQL strSQL
End Sub

補足日時:2003/12/23 17:40
    • good
    • 0

1.更新クエリーで計算式の値をテーブルに書き込む更新クエリーではどうですか?フォームにそのクエリーを実行するボタンを付けて。


2.そもそもテーブルで「合計提案件数」を持つ必要があるか再検討(計算で出るんですよね?)
3.それでもVBAでやろうとすると、ADOを使うことになると思います。やったことありますか?

この回答への補足

更新クエリで!と思い本をみてやってみたのですが、うまくいきませんでした。
やはり、テーブルで合計値を持つのはよろしくないんですね。
勉強になります、ありがとうございました。

補足日時:2003/12/23 17:49
    • good
    • 0

タイトルなどから仕様を想像するに、おそらくそのフォームで参加賞やらF賞のデータを入力して、その合計が合計数としてテキストボックスに表示されているんですよね??



おそらく他のテーブルに参加賞やらF賞のデータが入っているんではないかと想像するのですが。もしその値が必要ならそれらをその都度引っ張ってくればよいだけかと。
計算で出てくるデータは極力テーブルには入れないというのが基本です。

この回答への補足

そうです、その通りです!
そうなんですか、そのような方法が基本なんですね...
ただ、それらの個人実績から職場毎の合計をさらにフォームで出したいのです。
だとすると、職場ごとのフォームで別途、合計値を非連結で作成したほうがいいということでしょうか?
でも、勉強になります、ありがとうございました。

補足日時:2003/12/23 16:57
    • good
    • 0

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