質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

受付中

Access VBA SQL文 実行時エラー3075 日付の構文エラーについて

uokaokabebe
uokaokabebe

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

2回答

0評価

0クリップ

989閲覧

投稿2021/12/22 14:13

編集2022/01/12 10:55

現在Access VBAを勉強しております。
こちらのテーブルのレコードにSQL文のINSERT INTO VALUESを利用してレコードを追加しようとしております。
その際に下記のSQL文が表題にある通りエラーを起こしており、解決方法がよくわかりません。
問題のSQL文は下記のとおりです。

Private Sub Touroku()
Dim DB As DAO.Database
Dim strSQL As String

Set DB = CurrentDb

関連行 strSQL = "INSERT INTO G顧客情報(登録番号, 氏名, カナ氏名, 生年月日, 性別コード, 関係コード, 都道府県コード, 郵便番号, 住所, 勤務先, 電話番号, 携帯電話番号, PCメールアドレス, 携帯メールアドレス, 備考) " & _
"VALUES(" & _
DMax("登録番号", "G顧客情報") + 1 & " , " & _
" ' " & Me.Tx氏名.Value & " ' , " & _
" ' " & Me.Txカナ氏名.Value & " ' , " & _
エラー該当行 " # " & Me.Tx生年月日 & "#, " & _
Me.Cb性別コード.Value & " , " & _
Me.Cb関係コード.Value & " , " & _
Me.Cb都道府県コード.Value & " , " & _
" ' " & Me.Tx郵便番号.Value & " ' , " & _
" ' " & Me.Tx住所.Value & " ' , " & _
" ' " & Me.Tx勤務先.Value & " ' , " & _
" ' " & Me.Tx電話番号.Value & " ' , " & _
" ' " & Me.Tx携帯電話番号.Value & " ' , " & _
" ' " & Me.Txメールアドレス.Value & " ' , " & _
" ' " & Me.Tx携帯メールアドレス.Value & " ' , " & _
" ' " & Me.Tx備考.Value & " ' ) ; "
DB.Execute strSQL

DB.Close Set DB = Nothing

End Sub

全文はこれですが、実際のエラーを起こしている部分は上記のエラー該当行のみとなっております。
この部分と関連行と書かれている行の生年月日を削除すると問題なく追加が可能となっております。
エラー文は
実行時エラー"3075"
クエリ式 '# 'の日付の構文エラーです。
と表示されております。
お忙しいところ恐縮ですが、何卒エラーの原因と解決方法をご教授のほどよろしくお願いいたします

追記:

ご指摘を受けまして、イミディエイトウィンドウにstrSQLの中身を表示しました。
イミディエイトウィンドウには長いですが、
INSERT INTO G顧客情報(登録番号, 氏名, カナ氏名, 生年月日, 性別コード, 関係コード, 都道府県コード, 郵便番号, 住所, 勤務先, 電話番号, 携帯電話番号, PCメールアドレス, 携帯メールアドレス, 備考) VALUES(25 , ' 岡 ' , ' オカ ' , # 2021/12/04#, 1 , 1 , 1 , ' 1111111 ' , ' 東京 ' , ' かながわ ' , ' 000000 ' , ' 000000 ' , ' 000000 ' , ' 00000 ' , ' 00000 ' ) ;
と表示されました。
また、日付をフォームのコントロール(Me.Tx生年月日)の中に正しく入力してみたところ問題なく追加できました。
どうやら空欄のまま追加ボタンを押下して生年月日フィールドにnull値が入ったことがエラーの原因らしいです。

しかし私の中でなぜnull値が入るとエラーになるのかわからないことに加えて、null値であってもエラーなくそのまま空欄で先に進んでほしいのですがどうすればよろしいのでしょうか?

お時間ございましたら何卒ご教授のほどよろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

cx20

2021/12/22 14:23

まずは発行している SQL 文がどうなっているかを確認してみて下さい。 ----------------------- Debug.Print strSQL -----------------------
uokaokabebe

2021/12/22 14:38

cx20様 以前にも同じご指摘を受けておきながらまず一番先にやるべきことを忘れておりました。 申し訳ございません。 質問欄に内容を追記しました。 お時間ございましたら何卒ご確認のほどよろしくお願いいたします。
cx20

2021/12/22 14:50

質問欄の修正ありがとうございます。ただ質問文が重複していて読みづらいので再編集をお願いします。。
uokaokabebe

2021/12/22 14:54

cx20様 度々申し訳ございませんでした。 内容の重複修正しました。 ご指摘ありがとうございます。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。