命令文が長文になります 行を分割入力出来ますか
何度もお世話になります。
QNo.3140739 の続きです。
以下はレコード挿入のルーチンです
Function 介護メモ挿入()
on Error GoTo レコード挿入_Err
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into 介護メモ (利用者,介護日,身体単位,生活単位,開始時刻,年月) values (利用者 , 日付 , 身体単位 , 生活単位 , 開始時刻,年月)", -1
DoCmd.SetWarnings True
レコード挿入_Exit:
Exit Function
レコード挿入_Err:
MsgBox Error$
Resume レコード挿入_Exit
End Function
これで実行は出来たのですが、文中の介護メモは実際にはフィールド数が38ある介護記録というテーブルです。長い命令文になります。
画面内に表示できるように命令文の分割をしたいのですが
以下のように変更したのですが「クエリ式'11:00:00'の構文エラー」と時刻項目は文字列扱いのようです
同様に日付項目は分数式扱い?
Function 介護メモ挿入()
DIM SQL文 as String
SQL文 = "insert into 介護メモ (利用者,介護日,身体単位,生活単位,開始時刻,年月) values ("
SQL文 = SQL文 & """" & 利用者 & """," & 日付 & "," & 身体単位 & "," & 生活単位 & "," & 開始時刻
SQL文 = SQL文 & "," & 年月 & ")"
On Error GoTo レコード挿入_Err
DoCmd.SetWarnings False
DoCmd.RunSQL SQL文, -1
DoCmd.SetWarnings True
レコード挿入_Exit:
Exit Function
レコード挿入_Err:
MsgBox Error$
Resume レコード挿入_Exit
End Function
お礼
お忙しい中、たびたびご回答いただき ありがとうございます。 ご指示いただいた方法に従い、エラー発声後『イミディエイト ウィンドウ』で 詳細を確認してみましたところ、下記のように表示されました。 Insert Into T_MAIN ([受付日],[受付時間],[キュウリ],[トマト],[ナス]) Values('130130','9','','1',''); Insert Into T_MAIN ([受付日],[受付時間],[キュウリ],[トマト],[ナス]) Values(130130','9','','1','','130130','10','','7',''); valuesする値の先頭にアポストロフィ「'」が抜けていることに気付き、 下記のように単純なコードを追加してみました。 '先頭の余分な「,」を削除 sFields = Mid(sFields, 2) '追加した分 If n >= 10 Then sFields = "'" & sFields End If 実行後、狙い通りにアポストロフィは追加され、今まで表示されていたエラー表示は なくなったたのですが…… Insert Into T_MAIN ([受付日],[受付時間],[キュウリ],[トマト],[ナス]) Values('130130','9','','1',''); Insert Into T_MAIN ([受付日],[受付時間],[キュウリ],[トマト],[ナス]) Values('130130','9','','1','','130130','10','','7',''); 二行目のValues実行時にエラーになっています。 「実行時エラー3346 クエリと値と出力するフィールドの数が一致しません。」 一行目のValues実行はテーブル登録されていますが、ご覧のとおり二行目はフォームとValuesのデータ数が 一致しないため登録不能となります。 For NextのStepで設定している分だけのデータを 二行目の先頭で削除しなければいけないことは、なんとなくわかるのですが…… 実際の運用で、登録文字数が定数になるとは限らないのため、バイト数でざっくり減らすという ことはできそうにありません。 また、現在は確認のため、9時台と10時台のみで実行していますが、 こちらも実際の運用では9時~21時までのデータを入力して実行するため、 別な解決方法が必要になりそうです。 お忙しいと思いますので、何か良い解決方法があれば、お時間あるときにでも ご回答いただければと存じます。 毎回、貴重なお時間を割いていただき、本当にありがとうございます。
補足
いまさらですが…… 質問時に不足していた情報を下記に追記いたします。 Access:2003および2007 使用OS:WindowsXP、Vista、7 実際にテキストボックスへ入力されるデータは、 日付、時間 …… 日時 他、実運用では、担当者名がはいるため、テキストタイプで設定。 他は数値タイプで設定しています。