カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

ACCESS フィルター VBA

よく使うので覚書

Private Sub Search()
On Error Goto Exception

    Dim Coll  As Collection
    Dim SQL() As String

    Set Coll = New Collection


    If Not IsNull([検索テキスト]) Then
        Coll.Add "[フィールド1] Like '*" & [検索テキスト] & "*'"
    End If

    If [検索チェック] = -1 Then
        Coll.Add "[チェックフィールド] = " & [検索チェック]
    End If

    If [検索チェック2] = 0 Then
        Coll.Add "[チェックフィールド2] = 0"
    End If


    If Coll.Count > 0 Then
        For i = 1 To Coll.Count
            ReDim Preserve SQL(i - 1) As String
            SQL(i - 1) = Coll(i)
        Next i
        DoCmd.ApplyFilter , Join(SQL, " And ")
        'Debug.Print Join(SQL, " And ") '確認用
    Else
        Me.FilterOn = False
    End If

Exit Sub
Exception:
    MsgBox Err.Description
End Sub
2,155 views

CSVエクスポートでのテキストデータのNull値について ACCESS

AccessでCSVをエクスポートする際、テキスト型のフィールドがNullだった場合、
「,””,」とならず「,,」となってしまいます。
※前後にフィールドがあるとしています。

他のソフトやプログラムで該当ファイルを使用するときに、ダブルクォーテーション「”」が
必要な場合があります。

そういう時はNz関数を使います。
Nz関数はNullを別の文字列に置き換えしてれくる関数です。

データがNullだった場合、「,””,」という結果にするためには、Nullを長さゼロの文字列に置き換えます。

Nz([フィールド名],"")

もちろん、指定したフィールドのデータがNullでない場合はそのデータを返します。

14,941 views

複数のテーブルを一括で削除

Microsoft Accessにて、名前を指定して1つのテーブルを削除するだけであれば
DeleteObjectで削除することができます。

しかし、例えば任意の文字列が名前に含まれるテーブルを削除することができません。
その場合は以下のような方法で削除します。

例としてインポートでエラーが発生した際に作成されたエラーのテーブルを全て削除してみます。

Dim tbls As Object 'DAO.TableDefs
Dim tbl  As Object 'DAO.TableDef

'テーブル一覧取得
Set tbls = CurrentDb.TableDefs

Dim DelTables As Collection

Set DelTables = New Collection

For Each tbl In tbls

    If tbl.NAME Like "*インポート*エラー" Then
        DelTables.Add tbl.NAME
    End If

Next

For i = 1 To DelTables.Count
    'テーブル削除
    tbls.Delete (DelTables(i))
Next
15,121 views

C# コンソールアプリケーションのコマンドプロンプトを表示させない

Visual Studio C#で作成したコンソールアプリケーションを実行すると、
通常はコマンドプロンプトの画面が表示されます。

簡単な動作を行ってすぐに終了するアプリケーションだったとしても、
一瞬だけ表示されてしまいます。

これを全く表示されないようにするには、プロジェクトのプロパティを開き、
[アプリケーション]-[アプリケーションの種類]をWindowsフォームアプリケーションに変更することで表示されなくなります。
example

11,812 views

Listのコピー

List<string> list1 = new List<string> (){"test"};

参照渡し
list1の内容が変わるとlist2の内容も変わる

List<string> list2 = list1;

値渡し
list1の内容が変わってもlist3の内容は変わらない

List<string> list3 = new List<string>(list1);
1,883 views