goo blog サービス終了のお知らせ 

Excel Access VBA と スマホに一眼レンズ と 一眼カメラ

ExcelAccessのVBAの覚書とスマホに一眼レンズをつけて写真を撮ってみました 一眼カメラの写真もあります

テーブルまたはクエリーのデータを参照してメッセージボックスに表示します

2016-06-08 12:27:05 | AccessVbaの備忘録
MsgBox DFirst("フィールド名", "テーブル名またはクエリー名","条件")
MsgBox DMax("フィールド名", "テーブル名またはクエリー名","条件")
MsgBox DLast("フィールド名", "テーブル名またはクエリー名","条件")

目次へ

Access2000で動いていたMDBがAccess2010でエラーに

2016-06-02 11:43:03 | AccessVbaの備忘録
Access2000で動いていたMDBがAccess2010でエラーになってしまう

エラーメッセージが MSCAL.OCX version7を参照する・・・・の場合カレンダーコントロールが原因のようです

そこでAccess2000ランタイムをインストールした後に、Access2010ランタイムまたはAccess2010をインストールして正常に動作確認ができた事例が、2件あります(Access2016も動作確認できました)OSはWindows7、Windows10です

※他のアプリケーション、OSに影響がある可能性がありますので自己責任でお願い致します

目次へ


クエリをVBAで記述する

2016-05-31 16:15:03 | AccessVbaの備忘録

削除クエリ
Dim SQL As String
SQL = "DELETE * FROM テーブル名 where 絞り込むフィールド名='条件'"
DoCmd.RunSQL SQL

追加クエリ
Dim SQL As String
SQL = "INSERT INTO 追加先TB (フィールド名1,フィルド名2) SELECT 元TB.フィールド名1,元TB.フィールド名2 FROM 元TB where 絞り込むフィールド名='条件' "
DoCmd.RunSQL SQL

追加クエリで追加元テーブルを変数にする
テーブル名を入力するフォームをF001、テキストボックスをT001とします
Dim SQL As String
SQL = "INSERT INTO 追加先TB (フィールド名1,フィルド名2) SELECT table1.フィールド名1,table1.フィールド名2 FROM " & Forms!F001!T001 & " as table1 where 絞り込むフィールド名='条件' "
DoCmd.RunSQL SQL

更新クエリ
Dim SQL As String
SQL = "Update テーブル名 Set フィールド名 = '値' "
DoCmd.RunSQL SQL

結合クエリ RIGHT JOIN LEFT JOIN INNER JOIN
Dim db As DAO.Database
Dim Qdf As DAO.QueryDef
Dim SQL As String
Set db = CurrentDb()
SQL = "SELECT * FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.フィールド名 = テーブル2.フィールド名"
Set Qdf = db.CreateQueryDef("Q_テスト", SQL)
DoCmd.OpenQuery Qdf.Name
db.Close: Set db = Nothing

選択クエリで抽出条件を××を含む(文字列)を複数にした場合
SQL = "SELECT * FROM テーブル1 where テーブル1.フィールド名 like '*条件1*' or テーブル1.フィールド名 like '*条件2*' "

クエリを削除します
DoCmd.DeleteObject acQuery, "クエリ名"

目次へ


セル、行、列、範囲

2016-05-31 09:43:02 | ExcelVBAの備忘録
セル、行、列、範囲

cellsは行列ともに変数を指定出来ます

セル選択
Range("セル番地").Select
cells(行番号,列番号).select


範囲選択
Range("セル番地:セル番地").Select
Range(Cells(行番号, 列番号), Cells(行番号, 列番号)).Select


セル番地取得
セル番地 = Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False)  Falseなら$が付かない Trueなら$が付く


行列番号取得
行番号取得= ActiveCell.Row
列番号取得=ActiveCell.Column


目次へ

フォームを開くとき絞込み

2016-05-30 21:00:24 | AccessVbaの備忘録
開くフォームを F001 絞り込む条件が入力されているフォームを F002 とします
F001のフィールド フィールド名1 フィールド名2
F002のフィールド フィールド名A

特定のフィールドがNULL以外で絞り込み
stDocName = "F001 "
stLinkCriteria = "[フィールド名1] is not null"
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria

複数の条件で絞り込み
stDocName = "F001"
stLinkCriteria = "[フィールド名1]= forms!F002!フィールド名A and [フィールド名2]='条件'"
DoCmd.OpenForm stDocName, acNorma, , stLinkCriteria

絞り込み解除
  Forms.フォーム名.FilterOn = False

目次へ