基本情報
ランタイム
ランタイム 2003まで有償,2007から無償だ。
問題 - 解決
設定・確認
型のサイズ
データ型 | サイズ | 範囲 | |
バイト型 | Byte | 1 | 0~255 |
ブール型 | Bool | 2 | 真(True)偽(False) |
整数型 | Integer | 2 | -32,768~32,767 |
長整数型 | Long | 4 | -2,147,483,648~2,147.483,647 |
単精度浮動小数点数型 | Single | 4 | -3.402823E38~-1.401298E-45(負の数)1.401298E-45~3.402823E38(正の数) |
倍精度浮動小数点数型 | Double | 8 | -1.7976931348623E308~-4.94065645841247E-324(負の数)4.94065645841247E-324~1.79769313486232E308(正の数) |
通貨型 | Currency | 8 | -922,337,203,685,477.5808~922,337,203,685,477.5807 |
日付型 | Date | 8 | 西暦100年1月1日~西暦9999年12月31日 |
オブジェクト型 | Object | 4 | オブジェクトを参照するデータ型 |
文字列型 | String | 10+文字列の長さ | 0~2GB |
バリアント型 | Variant | 16 | すべてのデータを扱えるデータ型で0~2GB |
- Me.Repaint 画面を再描画する DoEventと組み合わせて
- メモリ不足エラー対策 (ミニミニ Access Tips)
メモリ不足とメッセージがでてクエリやテーブルの編集・更新ができない場合の対処方法
※ レジストリを触るので慎重にやること
<ファイル名を指定して実行>
「名前」欄に半角で regedit と入力し、<OK>ボタンを押す
↓
レジストリエディタが起動したら、左のウィンドウで
HKEY_LOCAL_MACHINE → Software → Microsoft → Jet → 3.5
→ Engines → Jet 3.5 と、キー(フォルダ)をたどって開く。
↓
右ウィンドウの MaxLocksPerFile アイコンをダブルクリックして開く
↓
基数(ベース)欄で「10進」にチェックを入れ、ここで数字を入力する。
※ 数値は初期状態では 9500 が入力されているので、これを
20000 などのより大きな数字に変更し、<OK>ボタンを
クリックし、レジストリエディタを終了する。
(念のため再起動し、アクセスで再度処理をやってみる)
Access VBAマクロ
設定
- 警告ダイアログをOFF/ON
DoCmd.SetWarnings False '警告ダイアログをOFF DoCmd.SetWarnings True '警告ダイアログをON
- マウスのカーソルの設定
Application.Screen.MousePointer = 11 'マウスを砂時計に切り替えます。 Application.Screen.MousePointer = 0 'マウスを元に戻します。
- 型変換 参考
CInt 整数型(Integer)へのデータ変換 CLng 長整数型(Long)へのデータ変換 CBool ブール型(Boolean)へのデータ変換 CByte バイト型(Byte)へのデータ変換 CCur 通貨型(Currency)へのデータ変換 CDate 日付型(Date)へのデータ変換 CDbl 倍精度浮動小数点実数型(Double)へのデータ変換 CSng 単精度浮動小数点実数型(Single)へのデータ変換 CVar バリアント型(Variant)へのデータ変換 CStr 文字列型(String)へのデータ変換
- DB最適化 参考
SetOption "Auto Compact", True ' 閉じる時に最適化する。
日付
- 先月の求め方 (DateSerial 関数)
Dim sDate As String sDate = DateSerial(Year(Now), Month(Now) - 1, 1) ' 先月を求める
- 先月末の求め方 (DateSerial 関数)
Dim sDate As String sDate = DateSerial(Year(Now), Month(Now), 1)-1 ' 先月末を求める
- 今月末の求め方 (DateSerial 関数)
Dim sDate As String sDate = DateSerial(Year(Now), Month(Now) + 1, 1)-1 ' 今月末を求める
DoCmd
クエリで更新クエリを実行
DoCmd.OpenQuery クエリ名 '例 DoCmd.OpenQuery "更新_WK_Hatyu" '
クエリをテキスト出力
DoCmd.TransferText acExportDelim, , "T_TokuiMD", "C:\Backup\得意先マスタ.csv", True
テキストをインポートしてテーブルに入れる
DoCmd.TransferText acImportDelim, "F_CM インポート定義", "F_CM_KM", "C:\F_CM_KM.CSV", True
※ 拡張子「txt,csv,tab,asc,tmp,htm,html」以外は利用できない,datファイルなどは使えない。レジストリをいじらない限り
EXCEL形式でテーブルをエクスポートする
DoCmd.TransferSpreadsheet acExport, 8, "Q_担任別名簿", "D:\クラス別名簿原本.xls", True, ""
※ Docmd.Outputto ~ でも、エクセル形式でエクスポートできるが。16,384 行を超えると出力できないの。
ただし、2007以降では解決しているかもしれない。参考
SQL文の実行
DoCmd.RunSQL "DELETE * FROM T_Tokui" ' テーブルのT_Tokuiを削除する。
クエリ
- Formの項目をクエリの抽出条件に使う。 参考
例 [Forms]![Sales By Category Form]![Category] のように書く。
追加クエリ
- 「数値フィールドがオーバーフローしました。」とメッセージがでる。
原因:数値型の項目にNULL値を入れようとしたため
対策:NULLなら0を入れることにして。追加クエリの数値項目のプロパティで書式を0とする。
更新クエリ
- 半角文字を全角文字にする場合, (クエリで関数を使う場合、定数を使う時)
レコードの更新に,StrConv([メーカー],vbWide) ----- NG StrConv([メーカー],4) ----- OK
※ クエリ全般に言える.定数はクエリーの中じゃ使えない 参考
選択クエリ
リンクテーブル
- これは便利かも
EXCELをインポートする際に、ユーザ定義の項目が崩れる場合があるので、リンクテーブルは有効かも。
- 注意点
通常のテーブルでは使えるクエリが使えない場合がある。
フォーム
- フォームの「作業ウィンドウ固定(Modal)」プロパティと「ポップアップ(PopUp)」プロパティが「はい(Yes)」の状態で開きます。
VB2005でいうところのShowDialog状態で開くDoCmd.OpenForm "frmMain", acNormal, , , , acDialog ' frmMain フォームをShowDialog状態で開く
- 指定オブジェクトが閉じるのを待つ 参考
フォームが閉じるまで待機する。 Public Sub WaitObjectClose(intObjType As Integer, strObjName As String) 'intObjType には acTable、acForm、acReportなどの定数を指定します 'strObjName にはそのオブジェクト名を指定します Do DoEvents 'SysCmdでオブジェクトが開いているか確認します Loop Until SysCmd(acSysCmdGetObjectState, intObjType, strObjName) = 0 End Sub
使用例:
DoCmd.OpenForm "フォーム1" WaitObjectClose acForm, "フォーム1" MsgBox "フォームが閉じられました!"
- フォームのLoadイベントで、テキストボックス・ラベルに値を代入
textではなく、Valueに代入する。
- フォームを最前面に表示する
フォームのプロパティ-->その他-->ポップアップを「はい」にする ポップアップ設定になっていると他のフォームを開いても別のフォームは後ろに表示される
レポート(印刷)
- 集計関数は,ページヘッター・ページフッターで使えない
Countなどの集計関数は、ページフッター/ヘッダーで使えない。レポートフッター/ヘッダーで使う
- プリンタの設定を他のPCでも引継ぐ方法,
ツール --> 全般 --> 名前の自動修正のチェックを全て外す。
※ 開発の時は自動修正がないとフォームやテーブル・クエリで項目の変更があった場合は、修正されない
PCに引継ぐ直前だけ、自動修正のチェックをはずし。開発時はチェックをつける
- 改ページ
並べ替え・グループ化の設定 --> フィールド/式に、並び替えの順番に設定していく 特定の項目で改ページしたい場合は、グループヘッダー = はい 、同一ページ印刷 = グループ全体 に設定する。
※ クエリでの昇順はレポートには反映されない。レポートの昇順を優先する
- 印刷時に印刷のダイアログを開く
サンプル'印刷プレビューモードで開きます。 DoCmd.OpenReport "rpt_sample", acPreview, "", "" 'キーボード操作 Alt + F + P と同様です。 SendKeys "%{F}{P}", True
- 数値の切上を行いたい場合
モジュール内で切上関数を作成する-->クエリで切上を反映した数値のフィールドを作成 -->
レポート内で、切上のフィールドを参照する。
※ 上手なやり方があるかもしれないが。レポート内でうまくやれなかった。
- Access のレポートを PDF ファイルに出力したい(ReportToPDF)
Microsoft Access 97-2003 のレポートを PDF ファイルに出力する方法
- 2007からはマイクロソフトのPDFアドオンを入れると、Docmdでやれるようになったらしい。参考
ファイル・フォルダ
- -ファイル選択ダイアログを開く};
'このサンプルを使うには、 VBAエディターで、ツール --> 参照設定 -&size(14){-> Micros};oft Office 12.0 Object Library にチェックを入れる。
※「Office 12.0」はofficeのバージョンにより異なる。
' ファイル選択ダイアログで開くフォルダを固定にしたい場合は下記の2行を追加する ChDrive "C:" ' 開くドライブを指定 ChDir "C:\Seikyu" ' カレントディレクトリを指定
Dim FileNM as string Dim dlgSaveAs As FileDialog Set dlgSaveAs = Application.FileDialog(msoFileDialogOpen) dlgSaveAs.Show ' ファイル選択 ダイアログを開く If dlgSaveAs.SelectedItems.Count = 0 Then MsgBox " ファイルが選択されませんでした!", vbCritical Exit Sub End If FileNM = dlgSaveAs.SelectedItems(1)
- ディレクトリの存在確認
If Dir("C:\PG", vbDirectory) = "" Then MkDir gDirLog End If
- ファイル削除(ワイルドカードを用いた)
例.拡張子がpdfのファイルを削除Dim FileDelete As String FileDelete = "C:\Data\*.pdf" Kill FileDelete
- ディレクトリの削除
RmDir "C:\Data\"
※ 削除したいフォルダにファイルが存在すると、削除できないので。あらかじめファイルを削除しておかないと駄目である。
インポート・エクスポート
- インポート定義の一覧取得
「MSysIMEXSpecs」テーブルの中に格納されている。見えてない場合は、ツール-->オプション-->表示の中のシステムオブジェクトにチェックを入れる。
- テキストファイルのインポートを行うと全角文字が文字化けする
対策:インポートする時の言語が西ヨーロッパ言語などの日本語以外の言語になっているから。 参考
- インポート時に「このフィールドに入力した値が正しくありません」とでる。
対処策:整数型のデータなのに上記メッセージがでる場合は、型を長整数型にする。
整数型の桁範囲が -32,768 ~ +32,767 のため。
- EXCEL(ユーザ定義)の項目のインポート
日付形式・時間形式・ユーザ定義の項目はそのままだと、形式が崩れるので。
リンクテーブルを使用するか、一度その形式のままテキストで保存してから取込む。
その他
エラー対処
- 追加クエリ、テーブル作成クエリで、"引数が無効です" というメッセージがでる
対策:データベースの最適化 参考
メッセージの一例
[ACC2003] サイズの大きな Access データベース ファイルで、追加クエリの実行、テーブル作成クエリの実行、またはデータのインポートを行うと、エラー メッセージ "引数が無効です" が表示される
- Access2002 と Windows7 では動かない場合がある。
Access2002のSP3をあてても駄目だった。
- クエリのUNIONの使い方
UNIONは、ハイスペックのマシンでないと処理が重くなり実用的でない。
- 指定された数値は、小数フィールドの精度と合致しません。
項目の「フィールドサイズ」を十進数から,倍精度浮動小数点型に変更した
未解決事件 ColdCase
参 考
サイト
サンプル・プログラム
参考書籍
- Accessのデータベースのツボとコツがゼッタイにわかる本―最初からそう教えてくれればいいのに!Access2007/2003対応
- 中小企業向けAccess 開発実践ノウハウ (DB Magazine SELECTION)
- Access VBAプログラミング開発工房 入門・基礎編
- 書籍案内
- Microsoft Office Access 2010
- Microsoft Office Professional 2010
サイト内リンク
Office系
OS系
DB系