アプリ版:「スタンプのみでお礼する」機能のリリースについて

Windows NTでAccess2000を使っています。
クエリで関数の計算をさせてフォームで必要な数字を打ち込むと
計算結果が表示されるところまでは確認できましたが
その値をテーブルに収めることはできないのでしょうか?
計算させたクエリからテーブルを作るというやり方もありますが
それはもうひと手間ということになるので出来れば避けたいのです。
よろしくお願いします。

A 回答 (7件)

>同じフォームを何個か作って中身だけ替えたいのですが・・


>クエリで場合分けをしているので・・

場合分けの条件に合う各テーブルを基にクエリを各々作成してそのフォームに設定すれば良いんです。
フィールド名が同じなら同じフォームをコピーしてフォーム自体のプロパティの
レコードソースに作ったクエリを設定すれば出来ます。
    • good
    • 0
この回答へのお礼

プロパティのコントロールソースのビルダで=[クエリ名][フィールド名]で大丈夫なのでしょうか?
フィールド数×フォーム数が多いのでちょっと大変そうですがともかくやってみます。
ありがとうございましたm(_ _)mm(_ _)mm(_ _)m

お礼日時:2002/08/02 14:46

>現在表示されているレコードの伝票番号に飛んでしまいました


前の記述はレコードを保存するだけの記述です。保存後フォーカスを移動する
だけです。次のレコードに移る場合は下記の記述になります。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click
  Me![納品書金額] = Me![txt_納品書金額]
  Me![納品書1本単価] = Me![TXT_納品書1本単価]
DoCmd.GoToRecord , , acNext

Exit_コマンド1_Click:
Exit Sub

Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click
End Sub
新規レコードの入力はまた別になります。

>でもMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分を削除して・・
やはりTxt_納品書1本単価か納品書1本単価のフィールドに問題がありますね。
テーブルかフォームかどちらかを調べないとダメですね。
フォームのTxt_納品書1本単価フィールドが単に演算した結果のみ表示するフィ
ールドであり他になにか設定が無い限りテーブル側に問題があるのではないかと
考えられるのですが。
    • good
    • 0
この回答へのお礼

できましたぁ~(^O^)/(+感涙!)
本当にうれしいです。ありがとうございました。
そしてもうちょっとお世話になってもいいですか?
これと同じフォームを何個か作って中身だけ替えたいのですが
(クエリで場合分けをしているので項目は同じだけどデータ元が違う場合)
プロパティのコントロールソースをひとつひとつ変えていくしか方法はないのでしょうか?
項目名は同じなので「こっちではなくあっちのクエリから取ってきて」という
命令を一括でできると作業がはかどるのですが…。
迷惑かけついでに聞いちゃいます。よろしくお願いしますm(_ _)m

お礼日時:2002/08/02 13:40

試しに簡単にDBを作って動かしましたがエラーは出ません。


下記の記述でテーブルに納品書金額も納品書1本単価もレコードは保存されます。

Private Sub 保存ボタン_Click()
On Error GoTo Err_保存ボタン_Click

Me![納品書金額] = Me![txt_納品書金額]
Me![納品書1本単価] = Me![TXT_納品書1本単価]
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
伝票No.SetFocus

Exit_保存ボタン_Click:

Exit Sub

Err_保存ボタン_Click:
MsgBox Err.Description
Resume Exit_保存ボタン_Click

End Sub

記述に間違えとくにMe![納品書1本単価]=Me![Txt_納品書1本単価]のところ。
後はテーブルの納品書1本単価のデータ型など確認してください。

この回答への補足

ご迷惑おかけします。
色々と原因を探ってはいるのですが未だ脱出できません。
でもMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分を削除して
試してみるとなんとか保存はクリアできたのですが
次のタブが次のレコードの伝票番号にではなく、
現在表示されているレコードの伝票番号に飛んでしまいました。
あとMe![納品書1本単価]=Me![Txt_納品書1本単価]の部分の
「1」を半角にしたり色々書式をあわせてみたのですが
カーソルを別の行に移すと自動的に大文字に戻ってしまいます。
もうかなり八方塞がり状態で精神的にまいっております(*_*)
なにかお気づきの点がありましたら返信よろしくお願いします。

補足日時:2002/08/01 18:41
    • good
    • 0

Me![伝票No].SetFocus


ではなく
伝票No.SetFocus でExit_保存ボタン_Click:の行の前に記述してみて下さい。

この回答への補足

訂正したものの、まだエラーが出ます。
かなり泣き入っておりますが諦めませんよ(: _ ;)
なにか気がついたことがあったら教えてください。
よろしくお願いします。

補足日時:2002/08/01 15:06
    • good
    • 0

>次のレコードにタブが進みません。


通常タブ順に進んでボタンにフォーカスが移動した際にクリックやEnterキーを
押しても次に移動はしません。Tabキーでの移動になります。
EnterキーをクリックかEnterキー押下した際に行われるイベント内に移動する
記述を追加すればクリックかボタン押下で次のタブ順へと移動できます。
例えば
 Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名]
に続けて
 Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名]
 コマンド2.SetFocus
とすればテーブルにフォーム上の計算結果を保存して次のコマンド2へ移動します。

Enterキーを押して保存したら次にどこのフィールドへ移動するか指定してくだ
さい。フィールド名に.SetFocusでフォーム上の好きなフィールドへ移動できます。

この回答への補足

Private Sub 保存ボタン_Click()
On Error GoTo Err_保存ボタン_Click

Me![納品書金額] = Me![txt_納品書金額]
Me![納品書1本単価] = Me![TXT_納品書1本単価]
Me![伝票No].SetFocus
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit_保存ボタン_Click:
Exit Sub

Err_保存ボタン_Click:
MsgBox Err.Description
Resume Exit_保存ボタン_Click

こんな感じでやって見ましたが
なぜか「フィールドを更新できません」というエラーが出てきてしまいます。
そしてMe![納品書1本単価] = Me![TXT_納品書1本単価]の部分は
値が入らないままなのです。
一体何が…(>_<)

補足日時:2002/08/01 13:47
    • good
    • 0

>この計算保存は1つのレコードに3つある場合「Me!…」を3回続けて書けば・・


計算して保存したいフィールドが3つあれば
 Me![テーブルのフィールド名A] = Me![フォーム上の計算結果フィールド名1]
 Me![テーブルのフィールド名B] = Me![フォーム上の計算結果フィールド名2]
 Me![テーブルのフィールド名C] = Me![フォーム上の計算結果フィールド名3]
のように必要分追加して記述すてください。

>保存ボタンを用意した場合にEnterキーで保存・・
保存ボタンのイベントに上記の記述を追加しタブ順に進めてEnterキーで保存でき
ます。

Private Sub コマンド1_Click()
On Error GoTo Err_コマンド1_Click

 Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名]
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, acMenuVer70

Exit_コマンド1_Click:
Exit Sub
Err_コマンド1_Click:
MsgBox Err.Description
Resume Exit_コマンド1_Click
End Sub

こんな感じに追加して記述すればOKです。

この回答への補足

丁寧な回答、ありがとうございます。
なかなかいい感じに仕上がってきました。
ただここに来て1つ問題が発生しました。
計算をさせて保存ボタンを押した後に
次のレコードにタブが進みません。
これはどういうことなのでしょうか??
お手数ですが返信よろしくお願いしますm(_ _)m

補足日時:2002/08/01 09:38
    • good
    • 0

フォーム上で計算した結果をテーブルに保存することはできます。



Private Sub コマンド1_Click()
 Me![テーブルのフィールド名] = Me![フォーム上の計算結果フィールド名]
End Sub

これはボタンをクリックしたイベントにテーブルに保存する記述です。
フォーム上の計算させている名前はテーブルのフィールド名とは別のものにして
下さい。例えばテーブルが[計算結果]というフィールドであればフォームのフィ
ールド名は[計算結果1]の様に。
Me![テーブルのフィールド・・ の行の記述をフォームの閉じるボタンやレコード
の保存などのボタンのイベントに書き加えても使えます。

この回答への補足

ありがとうございますm(_ _)m
早速挑戦してみます。
質問なのですが、この計算保存は1つのレコードに3つある場合
「Me!…」を3回続けて書けばよいのでしょうか?
そして、保存ボタンを用意した場合にEnterキーで保存できれば最高なのですが。
お手数ですが返信よろしくお願いします。

補足日時:2002/07/31 15:56
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A