Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


984 / 2272 ツリー ←次へ | 前へ→

【9250】日付がNullだから? いんぱら 07/4/3(火) 18:44 質問[未読]
【9253】Re:日付がNullだから? kohji 07/4/5(木) 13:56 回答[未読]

【9250】日付がNullだから?
質問  いんぱら  - 07/4/3(火) 18:44 -

引用なし
パスワード
   WinXP
Access2002です

受注日にはNullデータはありませんが
工完日にはNullデータがあります。

strSQL1は実行されるのですが
strSQL2は「抽出条件でデータ型が一致しません」
とのメッセージが出て実行されません。
strSQL2を追加クエリオブジェクトにして実行すると実行できるようです。
工完日にNullデータがあることからくるものかと推測しますが
デバッグ方法がわかりません。
おわかりになる方の助言をお待ちしています。


Dim strA As String  '始日
Dim strB As String  '締日
Dim VarC As Variant '営業所コード

strA = Format(DLookup("A", "WT_設定マスタ", "pk='1'"), "yyyymm")
strB = Format(DLookup("B", "WT_設定マスタ", "pk='1'"), "yyyymm")
VarC = Trim(Nz(DLookup("C", "WT_設定マスタ", "pk='1'")))

'--------------------------------------------------------
'WT_工事台帳を初期化する
'--------------------------------------------------------

Dim strSQL0 As String

strSQL0 = "DELETE WT_工事台帳.* FROM WT_工事台帳;"

DoCmd.RunSQL strSQL0

'--------------------------------------------------------
'工事番号を追加する
'--------------------------------------------------------
Dim strSQL1 As String
Dim strSQL2 As String

strSQL1 = "INSERT INTO WT_工事台帳 ( 工事番号 ) " & _
     "SELECT 工事番号 " & _
     "FROM T_工事台帳 " & _
     "WHERE Format([受注日],'yyyymm')>=" & strA & " And Format([受注日],'yyyymm')<=" & strB & " AND 営業所コード Like '*" & VarC & "*';"

strSQL2 = "INSERT INTO WT_工事台帳 ( 工事番号 ) " & _
     "SELECT 工事番号 " & _
     "FROM T_工事台帳 " & _
     "WHERE Format([受注日],'yyyymm')<" & strA & " AND Format([工完日],'yyyymm')>=" & strA & " And Format([工完日],'yyyymm')<=" & strB & " AND 営業所コード Like '*" & VarC & "*';"


DoCmd.RunSQL strSQL1
DoCmd.RunSQL strSQL2

【9253】Re:日付がNullだから?
回答  kohji  - 07/4/5(木) 13:56 -

引用なし
パスワード
   いんぱらさん こんにちは

>工完日にはNullデータがあります。
これは「T_工事台帳」の「工完日」にNullが存在するという意味ですよね?

ということであれば…
>strSQL2 = "INSERT INTO WT_工事台帳 ( 工事番号 ) " & _
>     "SELECT 工事番号 " & _
>     "FROM T_工事台帳 " & _
>     "WHERE Format([受注日],'yyyymm')<" & strA & " AND Format([工完日],'yyyymm')>=" & strA & " And Format([工完日],'yyyymm')<=" & strB & " AND 営業所コード Like '*" & VarC & "*';"

の箇所で「FROM T_工事台帳」の部分
直接テーブルを参照していますが
クエリ参照にするのもひとつの方法かと思います

「Q_工場台帳_WT_工事台帳作成用」みたいなクエリを作成して
「工完日」がNot Nullを抽出しておく

そのクエリを利用して上記のINSERT文を実行するみたいな感じにすれば
エラーが発生しないような気がするのですが…

一度 試してみてくだされ〜

984 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free