いつも助けて頂きありがとうございます。
今回は日付型のエラーについて質問があります。
dateserial関数を使って8ケタ数字を日付に変換したのですが、クエリやフィルタでの抽出の時にエラーになってしまいます。
受付日は8ケタの数字型(長整数)になっています。
dateserial(left([受付日],4),mid([受付日],5,2)+1,1)
これを日付でたとえば
#2011/1/1#等で抽出しようとすると型が一致しないエラーが出てしまいます。
isdate(dateserial(left([受付日],4),mid([受付日],5,2)+1,1)
を見ると-1で日付としては認識しているとは思うのですが。
何が原因か、ご助言お願いします。
)
No.1ベストアンサー
- 回答日時:
SELECT DateSerial(Left([テーブル1]![UDATE],4),Mid([テーブル1]![UDATE],5,2),1) AS 式1
FROM テーブル1
WHERE (((DateSerial(Left([テーブル1]![UDATE],4),Mid([テーブル1]![UDATE],5,2),1))=#1/1/2011#));
私のacc2000では上記のクエリは実行可能で該当レコードが選択されましたので、何らかの単純な記載間違いの可能性が高いと思います。
回答ありがとうございます。
皆さんが出来ているのでやはり私のミスでしょう。
それがどこかがなかなか見つかりません・・・
ありがとうございました。
No.4
- 回答日時:
> #2011/1/1#等で抽出しようとすると型が一致しないエラーが
> 出てしまいます。
クエリで、演算フィールドに抽出条件や並べ替えを指定したときに
型不一致エラーが出る場合、データが「Null」(空白)になっている
レコードがある、というパターンが(私の場合は)多いです。
ですので、まずは「空白」のデータがないか確認してみることを
お勧めします。
あった場合の対処法ですが・・・
a)「受付日」が空白のものを除外してよいなら、そのフィールドに
「Is Not Null」の抽出条件をつける
b)除外しては問題がある場合は、IIF関数で場合分け:
<一例>
IIF(IsNull([受付日]), Null, DateSerial(Left([受付日],4),Mid([受付日],5,2)+1,1))
c)希望の結果を返すユーザー関数をVBAで定義しておいて、
クエリではそれを使用
・・・といったところかと思います。
(「c」の利点は、IIF関数だと第1引数の結果に依らず、第3引数の
式が演算されるのに対して、ユーザー定義関数ならIf文の分岐を
使用することで、その演算自体を省略できる(はず)、と:
実際の処理時間に差が生じるかの確認は行っていないので、
事実誤認がありましたらご容赦願います(汗))
Public Function LongToDate(nDate As Variant) As Variant
On Error Goto エラー処理
Dim Rsl As Variant
If IsNull(nDate) Then
Rsl = Null
Else
Rsl = DateSerial(Left([受付日],4),Mid([受付日],5,2)+1,1)
End If
終了処理:
LongToDate = Rsl
Exit Function
エラー処理:
Rsl = "#エラー(" & Err.Number & ")"
Resume 終了処理
End Function
返答ありがとうございます。
現在、nullは無いはずです。
受付日には条件でisnotnullで8ケタの数字のみ抽出しています。
他の原因を探しているのですがなかなかわかりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Access(アクセス) accessの日付フィールドから前年度だけを取り出したい 3 2022/04/13 23:13
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Visual Basic(VBA) 過去日付、年の切り替え 6 2022/05/26 12:41
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) エクセルで一つのセル内の特定の数字のみ足す方法 6 2022/12/06 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
String""から型'Double'への変...
-
バッチファイルからVBA実行でエ...
-
「実行時エラー '3167' レコー...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VB.NET】 パワポ操作を非表示で
-
VBでSQL文のUPDATE構文を使った...
-
実行時エラー'-2147467259(8000...
-
ADO 「認証に失敗しました」
-
Excel2013で実行時エラー9...
-
python初心者です。
-
ActiveCell.FormulaR1C1の変数
-
VB.net 重複チェックがしたいです
-
日付書式のString型からData型...
-
お助けください!VBAのファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
On ErrorでエラーNoが0
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
VB.net 重複チェックがしたいです
-
ActiveCell.FormulaR1C1の変数
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
ApplicationとWorksheetFunctio...
-
フランスの生年月日(jj/mm/aaaa)
-
【マクロ】 IFERROR関数をマク...
おすすめ情報