
ACCESS 入力フォームでテーブルへデータを複数追加したいと考えているのですが、
自力で解決出来ないので、アドバイスお願いします。
現在、工数取得の為の入力フォームを作成しています。
工数の取得はまとめて取得し、かかった工数を台数で割ってクエリで抽出したいと考えています。
最大5台分までで、作業によっては1台や2台でもデータを保存できるように1つのテーブルに入れたいのですが、1台入力すると4台分が空白で保存されてしまいます。
また、保存した後に、次のレコードに進んで新規で入力したいのですが、保存したレコードが表示されたままで、次のレコードに進む事が出来ません。
当方、アクセス勉強して間もないので知識や定義を理解していない部分があるのですが、アドバイスお願いします。
例)
☆ 入力フォーム
________________________________________________________
本体シリアル [0001] [0002] [0003] [0004] [0005]
作業者 [山田太郎]
開始時間 [9:00]
終了時間 [9:30]
台数 [5]
[ 保存 ]
_______________________________________________________________
↓
☆ テーブルデータ
_______________________________________________________________
山田太郎 0001 9:00 9:30
山田太郎 0002 9:00 9:30
山田太郎 0003 9:00 9:30
山田太郎 0004 9:00 9:30
山田太郎 0005 9:00 9:30
_______________________________________________________________
コード
Dim rs As DAO.RecordSet
Set rs = CurrentDB.OpenRecordset("テーブル名")
For i = 1 to 5
rs.AddNew
rs!シリアル = Me("シリアル" & i).Value
rs!開始時間 = Me("開始時間").Value
rs!終了時間 = Me("終了時間").Value
rs!台数 = Me("台数").Value
If Me("シリアル" & i).Value = "" Then Exit For
rs.Update
Next
rs.Close
Set rs = Nothing
Me.Refresh
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord acDataForm, "工数フォーム", acNext
No.1ベストアンサー
- 回答日時:
シリアル欄が空白かどうかを判断する方法が間違っています。
Access のテキストボックスの場合、未入力だと値は Null になります。
場合によっては "" (空の文字列) の場合もあります。
従いまして以下のように Nz 関数を使って Null を空の文字列に変換してから判断してみてください。
If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For
そして、この判断を行う場所は For の直後 (AddNew する前) でいいと思います。
For i = 1 To 5
If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For
rs.AddNew
・・・
rs.Update
Next
ただし質問文のコードでは
[シリアル001] ← 入力した
[シリアル002] ← 空欄
[シリアル003] ← 入力した
という入力パターンがあった場合 [シリアル002] 以降は保存されません。
もしこのように歯抜け入力もあるのであれば、
For i = 1 To 5
If Not(Nz(Me("シリアル" & i).Value, "") = "") Then
rs.AddNew
・・・
rs.Update
End If
Next
というようにすると良いかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MA ACCESSデータベースに詳しい...
-
passwordが入れられません・・・・
-
Accessで小数の入力について
-
データベースのINT型項目にNULL...
-
アクセス2003 入力規則
-
Access2000 Len関数 フォーム...
-
Access(office)のマクロの「値...
-
フォームで入力しても反映されない
-
Access2000VBAでEscキーを禁止!
-
Access レポート印刷するときに...
-
レコードを保存するコード ア...
-
ACCESSのレポートで、指定した...
-
accessのフォームをレポートに...
-
エクセルをACCESSのレポ...
-
Access2007サブレポートの絞り...
-
ACCESSでコントロールソースの変更
-
iphoneのフルスクリーンの解除方法
-
新規レコード行を非表示にしたい
-
access ユーザによるフォーム...
-
ACCESS──メインフォームでサブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
passwordが入れられません・・・・
-
MA ACCESSデータベースに詳しい...
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
このオブジェクトに値を代入す...
-
Access(office)のマクロの「値...
-
アクセスのテキストボックスの...
-
Accessで小数の入力について
-
Excelで入力したデータを自動的...
-
Access2007、フォームのテキス...
-
Microsoft Accessのフォームで...
-
入力規則違反-任意のエラーメ...
-
ファイルメーカー 一ヵ月後の...
-
Access2007 textboxに入力でき...
-
SQLで構文を間違って入力して;...
-
Accessで西暦の年だけ表示したい
-
アクセス2007 フォーム入力で...
-
ユーザーフォームで数字にカン...
-
アクセス2003 入力規則
おすすめ情報
とても丁寧な説明ありがとうございます。
もう1つ質問なんですが、保存後に新規レコードに移動して、次のデータを入力したいのですが、次のレコードに移動してくれません。
コードに記述してある方法で、どこが間違いなのか教えて頂けないでしょうか。