• ベストアンサー

アクセスのクエリで

あるテーブルはエクセルからインポートしていますが、全てのフィールドが空白というレコードが多数存在します。 これをクエリで(他に方法があればどの様な方法でもよいです)全てのフィールドが空白のレコードは表示しない様にする事はできますか? これを更新クエリにして、新しく全て空白のフィールドのレコードが無いテーブルを新たに作ろうと考えています。 教えて下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です 以下の方が少しは速いかも Public Function CheckNotNullData(ParamArray vF()) As Boolean   Dim i As Integer   CheckNotNullData = False   For i = LBound(vF) To UBound(vF)     If (Not IsNull(vF(i))) Then       CheckNotNullData = True       Exit Function     End If   Next End Function

doradora64
質問者

お礼

ありがとうございました。 助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

横の計算は苦手なので、標準モジュールにユーザ定義関数を作成し利用します。 Public Function CheckNotNullData(ParamArray vF()) As Boolean   Dim i As Integer   Dim iCount As Integer   iCount = 0   For i = LBound(vF) To UBound(vF)     If (IsNull(vF(i))) Then iCount = iCount + 1   Next   If (iCount = (UBound(vF) - LBound(vF) + 1)) Then     CheckNotNullData = False   Else     CheckNotNullData = True   End If End Function クエリからは、以下の様に呼び出します。 SELECT * FROM テーブル名 WHERE CheckNotNullData(F1,F2,F3,F4,F5); F1 ~ F5 は、NULLをチェックするフィールド名になります。 チェックするフィールド名を必要分書きます。 書かれたフィールドをチェックし、NULL でないのが1つでもあったら True を返します。 空白=NULL としていますが、空文字列も判別するのなら     If (IsNull(vF(i))) Then iCount = iCount + 1 ↓     If (Len(Nz(vF(i), "")) = 0) Then iCount = iCount + 1 になるのでしょうか 遅いと思います(が何度も実行するものではないと思うので) そのままテーブルを作成するのなら、 SELECT * INTO 新テーブル名 FROM テーブル名 WHERE CheckNotNullData(F1,F2,F3,F4,F5); になると思います。 ※関数名は適宜変更してください。

すると、全ての回答が全文表示されます。

関連するQ&A