誕生日にもらった意外なもの

何度もお世話になります。
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

A 回答 (1件)

> SQL文 = SQL文 & """" & 利用者 & """," & 日付 & "," & 身体単位 & "," & 生活単位 & "," & 開始時刻



ここは、
「SQL文 = SQL文 & "利用者,日付,身体単位,生活単位,開始時刻"」
でよいはずです。
「利用者」等が文字列型なのに対し、「日付」は日付型だということで
「ダブルクォーテーション(")では括らない」と思われたのだと思いますが、
これだと「日付」コントロールの値が参照されるため、ご質問のようなエラーに
なったものと思います。
(ご質問中の形だと、「~values (利用者,11:00:00,~」といった形のSQL文に
 なってしまいます)

試しに、SQL実行前に「MsgBox SQL文」という命令を入れておけば、SQL文が正しく
作成されているかどうか確認できます。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

また、改行の方法としては、ご質問中のように分割するほかに、
「SQL文 = "insert into 介護メモ (利用者,介護日,身体単位,生活単位,開始時刻,年月)" _
  & " values (利用者 , 日付 , 身体単位 , 生活単位 , 開始時刻,年月)"」
というように、「_」(アンダーバー)を使って改行を挿入する方法もありますので、
参考までに。
(文字列とアンダーバーの間には、「 」(スペース)が必要)

なお、改行挿入時には、元の文にあったスペースを入れ忘れがちですが(私が(汗))、
以下のような手順を踏むと、間違いにくくなるかと思います;
「"~年月) values ~"」(分割前のSQL文)
→「"~年月)"" values ~"」(この時点ではエラー発生)
→「"~年月)" & " values ~"」(SQL文の分割終了)
→「"~年月)" _& " values ~"」(この時点ではエラー発生)
→「"~年月)" _
    & " values ~"」(改行の挿入終了)
 *改行後の「&」の前には、スペースやTabが任意の数だけ
  入れられますので、見やすいように調整できます。
    • good
    • 0
この回答へのお礼

ご回答感謝します
最初仰るとおり「SQL文 = SQL文 & "利用者,日付,身体単位,生活単位,開始時刻"」
としたのですが日付以下はテキストデータと処理してくれますが利用者だけは文字列? このままのレコードに書き込まれました。丁寧に見直せば間違いに気づいたかも

改行は _と&で9行に分解できました。 「」はACCESS2000で不用のようです。おかげで見直し訂正が楽になりました。

お礼日時:2007/07/07 16:18

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