ACCESSヒント集

 

ACCESS初心者のために、ヒント集を作りました。
細かい説明は市販の参考書に任せるとして、
実際に便利だったことをメモ帳的にまとめてみました。

開発環境
Access2000〜Access2010
終了は[×](閉じる)
 
ヒント集
Access/全体 Access/テーブル Access/フォーム
Access/クエリ Access/レポート Access/関数
Access/VBA デバッグのコツ
 
よくある質問 質問内容
Access/全体
Q:ACCESS完成後、ユーザーにリリースする時は。
Q:変数名、コントロール名等の付け方の規則
Q:起動時の設定(起動時にメニューを最初に表示し、余計なウィンドウを表示しない)
Q:起動時の設定変更(起動時にメニュー表示しない)
Q:リボンやツールバーを非表示にする(2007、2010)
Q:mde、accdeの作成
Q:AccessからSQL Serverのテーブルを参照する
Q:Access2003では動いていたがAccess2007では動かなくなった。
Q:Accessを実務用にリリースする作業手順
Q:「信頼できる場所」にユーザー指定の場所を指定したが「入力したリモートパス 〜」のエラー
Q:Accessを複数の人が使うようする方法(データーベースを分割する)
Q:Access2007の容量が増えたので、テーブルを特定の日付以下で削除したい。
Q: 
Q: 
 
Access/テーブル
Q:主キーを複数作るには
Q:テーブル項目の最後に、「更新日」を入れる理由は
Q:リンク付きテーブルのリンク先を確かめるには
Q: 
 
Access/フォーム
Q:フォームの見出し枠線
Q:西暦の4桁表示をするには
Q:表示するだけで入力しないフィールドの指定は
Q:画面に表示したくない時は
Q:消費税の計算は、金額、消費税のプロパティは
Q:別DB「共通」の[処理年月]をフォーム「処理DATE」に表示するには
Q:フォームのOPEN、CLOSEのイベント順序は
Q:数字項目で00000123と表示したい時は
Q:Me![テキスト1]のMeとは
Q:フォームの入力の入力チェック
Q:入力(カーソル)の動きをコントロールするには
Q:日本語入力モードIME
Q:画面がちらつく時は
Q:メニューバー、ツールバーを消す
Q:リストボックスとコンボボックスの違い?
Q:コンボボックスのID以外の住所も保存したい?
Q:コンボボックスの初期値の設定方法は?
Q:コンボボックスのドロップダウンはマウスですが、スペースキーでする方法は?
Q:コンボボックスのドロップダウンを自動的に表示する方法?
Q:コンボボックスの行数をダブルクリックで増やすには
Q:リストボックスの使い方
 
Access/クエリ
Q:いろいろな抽出条件
 
Access/レポート
Q:何も無い時、0を表示させたいが
Q:(XXXX)カッコを付けて表示したい
Q:B4用紙に印刷したい
 
Access/関数
Q:日付
 
Access/VBA
Q:VBAのコードにコメントを付けたいが
Q:VBAの「コード」が消えてしまった。
Q:If文 の Or条件の記入方法は
Q:EXCELとCSVファイルに出力するには
Q: DBが'20090831'と画面入力の開始日〜終了日が'2009/08/31'の時、抽出SQLはどちらに合わすか?
'20090831'にするか?、'2009/08/31'にするか?
 
デバッグのコツ
Q:Accessが動かなくて困った時にやる事は
Q: 
Q: 
Q: 
Q: 
 



 
■ Access/全体


Q:ACCESS完成後、ユーザーにリリースする時は
A:
1.起動時の設定
*起動時の設定 「ツール」--「起動時の設定」
  「フォーム/ページの表示」に起動フォームを入れる
  「データベースウィンドウの表示」のチェックを外す(必要な時はSHIFTを押しながら起動する)

2.MDEの作成
「ツール」--「データベースユーティリティ」--「MDEファイルの作成」
「MDEデータベースを作成できませんでした。」がでたら
VBAでエラーがある場合に上記のメッセージがでる。
VBEの画面で、「デバッグ」--「XXXXXのコンパイル」をしてから、エラーがあれば、そこを修正する。



Q:変数名、コントロール名等の付け方の規則
A:  

一覧リストオブジェクト名 命名(タグ名+名前) オブジェクト名 命名(タグ名+名前)
------------------------------------------------------
コンボボックス cbo +名前
リストボックス lst +名前
テキストボックス txt +名前
チェックボックス chk +名前
コマンドボタン cmd +名前
ラベル lbl +名前 Yes/No型
オプションボタン opt +名前

---以下参考-------------------------------------------
テーブル tbl +名前
クエリ qry +名前
フォーム frm +名前
レポート rpt +名前
マクロ mcr +名前
モジュール bas +名前
サブフォーム fsub +名前
サブレポート rsub +名前

アプリケーション app +名前
コレクション col +名前
コントロール ctl +名前
スクリーン scn +名前
データベース dbs +名前
ダイナセット dyn +名前
フィールド fld +名前

オートナンバー型 ids +名前 バイト型 byt +名前
通貨型 cur +名前
日付/時刻型 dtm +名前
Double型(倍精度浮動小数点数型) dbl +名前
Single型(単精度浮動小数点数型) sng +名前

長整数型 lng +名前
整数型 int +名前
メモ型 mem +名前
OLE型 ole +名前
テキスト型 chr +名前
Yes/No型 bln +名前
バリアント型 vra +名前
オブジェクト型 obj +名前
10進型 dec +名前
バイナリ型 bin +名前
インデックス idx +名前
プロパティ prp +名前
レコードセット rst +名前
リレーション rel +名前
------------------------------------------------------



Q:起動時の設定(起動時にメニューを最初に表示し、余計なウィンドウを表示しない)
A:  
-----------------------------------------------
Access2003
-----------------------------------------------

「ツール」--「起動時の設定」--
「フォーム/ページの表示」:(表示しない)     --->ABCシステムメニュー
「データーベースウインドウの表示」:チェックあり --->チェックなし
「ステータスバーの表示」:チェックあり      --->チェックなし

-----------------------------------------------
Access2007
-----------------------------------------------
Officeボタン
Accessのオプション
カレントデータベース
-------------------------
アプリケーションオプション
-------------------------
フォームの表示    --->ABCシステムメニュー

-------------------------
ナビゲーション
-------------------------
「ナビゲーションウィンドウを表示する」 --->チェックなし

-------------------------
リボンとツールバーのオプション
-------------------------
「すべてのメニューを表示する」    --->チェックなし
「規定のショートカットメニュー」   --->チェックなし




Q:起動時の設定変更(起動時にメニュー表示しない)
A:  

Shiftを押しながらACCESSのファイル名をWクリックして立ち上げる

*Wクリックして立ち上らない時は、ACCESSを立ち上げて「ファイル」から立ち上げる

*「セキュリティ警告」が出たとき Shiftを押しながら[開く]クリックして立ち上げる

開く
ビュー
データペースウインドウ
メニューバー(開く、デザイン)を右クリック
「起動時の設定」クリック

「ナビゲーションウィンドウの表示」はF11を押す

たまにWクリックしても立ち上がない時は、Accessを立ち上げてファイルを読むから立ち上げる



Q:リボンやツールバーを非表示にする(2007、2010)
A:  

実行画面でリボンやツールバーが邪魔な時は、リボンやツールバーを非表示にします。

■ツールバー等を非表示にする。

●オプション/カレントデータベースの表示設定変更

ファイル オプション カレントデータベース

アプリケーションオプション
□ステータスバーを表示する   →  画面の下のバーが消える

ナビケーション
□ナビケーションウィンドウを表示する   →  画面の左の画面が消える

リボンとツールバーのオプション
□すべてのメニューを表示する   →  画面の上のタブ(作成、外部データ、データベースツール ただしホームは残る)が消える

*リボンのタブのみ表示したい時は、
リボンのタブたとえば「ホーム」をWクリックすればリボンのタブのみ表示される
「ホーム」タブをクリックすればリボン全項目が出る
元に戻したい時は(リボン全項目表示)
再度「ホーム」をWクリックすれば戻る

*MDEやACCDEを作る時は、このリボンのタブのみ表示にしておいた方が良い


●フォームのプロパティ
レコードセレクタ    いいえ
移動ボタン       いいえ


*ここまでやれば実行時の余計な画面は消えますが、
もっと完璧にしたい時は事項の「リボン全体の非表示」を行います



■リボン全体の非表示

1.テーブル作成
テーブル名:USysRibbons
項目1:RibbonName     テキスト型
項目2:RibbonXml     テキスト型

2.システムオブジェクトの表示
USysRibbonsはシステムオブジェクトのため、 このまではテーブルにUSysRibbonsが表示されないので、USysRibbonsを表示させる

Accessのオプション → カレントデータベース → ナビケーション → 
ナビケーションオプション → 表示オプション/システムオブジェクトの表示をチェック
再立上
テーブルにUSysRibbonsが表示される

3.テーブルにデータを入れる
項目1:RibbonName:HideTheRibbon
項目2:RibbonXml :

4.リボン名をHideTheRibbonにする
Accessのオプション → カレントデータベース → リボンとツールバーのオプション → 
リボン名:▼をクリックしてHideTheRibbonを選択する
再立上
リボンが消える(ファイルタブは残る)



Q:mde、accdeの作成
A:  
mde、accdeの作成の前には、必ず最適化を行う事

-----------------------------------------------
Access2000、2003
-----------------------------------------------

 「ツール」-「データベースユーティリティ」-「最適化」
 「ツール」-「データベースユーティリティ」-「MDEファイルの作成」
 ABC.mdeができる

-----------------------------------------------
Access2007
-----------------------------------------------

 「Officeボタン」-「管理」-「最適化」
 「データベースツール」タブ→「ACCDEの作成」→保存先:xxxxx.accde [保存]
 ABC.accdeができる


-----------------------------------------------
Access2010
-----------------------------------------------

 「ファイル」→「データベースの最適化/修復」

 「ファイル」→「保存して発行」→「データベースに名前を付けて保存」→「ACCDEの作成」→「名前を付けて保存」

 mdbの時は「ACCDEの作成」ではなく「mdbの作成」です。


-----------------------------------------
使用可能でない(信頼されていない)データベースからaccdeファイルまたはmdeファイルを作成することはできません。
このデータベースの発行元が信頼できる場合は、メッセージバーを使用してデータベースを有効にして下さい。
-----------------------------------------
メッセージバーに以下が表示される セキュリティの警告 データベースの一部の内容が無効にされました。
-----------------------------------------

オプションをクリックする。
-----------------------------------------
セキュリティの警告
◎不明なコンテンツから保護する(推薦)
○このコンテンツを有効にする

○不明なコンテンツから保護する(推薦)
◎このコンテンツを有効にする
にする
-----------------------------------------



Q:AccessからSQL Serverのテーブルを参照する
A:  
---------------------------------------------------------------------
■ACCESSでSQLServerのテーブルを参照するため「SQLServer」のODBC設定をする。
---------------------------------------------------------------------
コントロールパネル → 管理ツール → データソース(ODBC)
「ODBCデータソースアドミニストレータ」の[システムDSN]タブ  [追加]
「データソースのドライバ」  下の「SQLServer」選択  [完了]

「MicrosoftSQLServer用のDSNの設定」
「新しいデータソースの名前を入力してください」:xit
「データソースについての説明:なし
「接続するSQLServerサーバー名を入力してください」:xit002
[次へ]

◎ユーザーが入力するSQLServer用のログインIDとパスワードを使う
[チェック]SQLServerサーバーに接続して追加の構成オプションの既定設定を習得する
ログインID:view
パスワード:password
[次へ]

そのまま[次へ]
チェックが付いているのは「ANSIの引用符付き〜」、「ANSIのNULL〜」

そのまま[完了]
チェックが付いているのは「文字データを変換する」

「以下のとおり」
そのまま[OK]

そのまま[OK]


---------------------------------------------------------------------
■SQLServerとテーブルのリンクをする。
---------------------------------------------------------------------
-------------------------------------------------------------
Access2003
-------------------------------------------------------------
●データベースサーバーに接続
ファイル 外部データの取り込み テーブルのリンク
ファイルの種類:ODBCデータベース()   ←一番下にある

「コンピュータデータソース」タブ  データソース名選択(xyz)  [OK]

●SQL Serverログイン
ログイン:vvww
パスワード:password

●テーブルのリンク
(注)この時「パスワードの保存」にチェックを入れる (チェックを入れないと実行時にパスワード入力がたくさんくる)

hinmoku    品目DB
koutei    工程DB
tokui     得意先DB

 選択(複数可)   OK

-------------------------------------------------------------
Access2007
-------------------------------------------------------------
●データベースサーバーに接続
「外部データ」タブ
「その他」  「ODBCデータベース」

◎リンクテーブルを作成してソースデータにリンクする   [OK]

「データソースの選択」 「コンピュータデータソース」タブ データソース名選択(xyz)  [OK]

「SQLServerログイン」
ログインID:vvww
パスワード:password
[OK]

アカウント情報を保存しますか?  名前「SQLServer ログイン-view」  [保存]

●テーブルのリンク

hinmoku    品目DB
koutei    工程DB
tokui     得意先DB

 選択(複数可)

(注)この時「パスワードの保存」にチェックを入れる (チェックを入れないと実行時にパスワード入力がたくさんくる)

[OK]

「ファイルに保存する前にパスワードは暗号化できません」  [パスワードの保存] テーブルのリンク数出る



Q:Access2003では動いていたがAccess2007では動かなくなった。
A:  
---------------------------------------------------------------------
■現象
---------------------------------------------------------------------

いままでA帳票が正常に動いていたが、B帳票を追加したとたん動かなくなった。
B帳票は、A帳票をコピーして作成して見出しのリテラルと抽出条件を変えただけでほとんどA帳票と同じです

私の神奈川県にあるPCではエラーが出ないが、本社東京にあるPCでは実行エラーになった。

●実行エラー内容
....................................................
イベントプロパティに指定した式クリック時でエラーが発生しました。
クエリ式 'Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)' の この関数は式では使用できません
....................................................

●実行エラーのクエリー場所
生産日: Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)

クエリーはA帳票も、B帳票も同じにあります


---------------------------------------------------------------------
■原因
---------------------------------------------------------------------

Access2003で作成したPGを新パソコンAccess2007で実行ファイルを作成するとどうもダメらしい。(ネットで調査)

今まではAccess2003で開発していたが今回は新パソコンAccess2007で開発した。


---------------------------------------------------------------------
■対策
---------------------------------------------------------------------

●対策A.Access2007にバージョンUPする。(ファイル変換)

...................................
(1)Access2007のパソコンで立ち上げる
(2)Officeボタン→名前を付けて保存→データベースを他の形式で保存(Access2007データベース)
(3)保存先:xxxxx.accdb→保存
(4)このデータベースはAccess2007ファイル形式にアップグレードされました  →[OK] →閉じる

(5)xxxxx.accdbをWクリックして立ち上げる
(6)「データベースツール」タブ→「ACCDEの作成」→保存先:xxxxx.accde [保存] →閉じる
...................................

*xxxxx.accdeをWクリックして実行する

*結果
Access2007のファイル変換でバージョンUPしたが、A帳票も、B帳票も同じエラーでダメ
2007ファイル変換はダメか!!!

●対策B.Access2007にバージョンUPする。(インポート)

新規ファイルにインポートしてバージョンUPした。
...................................
(1)Access2007のパソコンで新規に立ち上げる xxxxx.accdb [作成]
(2)「外部データ」タブ→「Access」(Accessデータベースのインポート)
(3)インポート元ファイル名:xxxxx.mdb ◎現在のデータベースにテーブル〜  [OK]
(4)「オブジェクトのインポート」タブ
「テーブル」タブ→[すべて選択]
「クエリ」タブ→[すべて選択]
「フォーム」タブ→[すべて選択]
「レポート」タブ→[すべて選択]
「マクロ」タブ→[すべて選択]
「モジュール」タブ→[すべて選択]
[OK]
「インポート操作の保存」そのまま[閉じる]
(5)いったん閉じる(保存のため)

(6)xxxxx.accdbをWクリックして立ち上げる
(7)「データベースツール」タブ→「ACCDEの作成」→保存先:xxxxx.accde [保存] →閉じる

xxxxx.accdeをWクリックして実行する
...................................

*結果
B帳票は正常終了で解決!!と喜んだが、なな!!なんと私のPCでもA帳票がフリーズしてしまう。

●対策C.Access2007ではなくAccess2003で実行ファイルを作成する

*結果
やはりxxxxx.mdeではA帳票も、B帳票も正常に動く。
Access2003では問題なし。

だが、新パソコンはすべてAccess2007が入っているので、Access2007を動かさなければならない。トホホ!!

●対策D.そこで、初心に戻って、当初の実行エラーをつぶすことにした

....................................................
イベントプロパティに指定した式クリック時でエラーが発生しました。
クエリ式 'Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)' の この関数は式では使用できません
....................................................

これはクエリーのここで発生している

クエリー項目「生産日: Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)」

この生産日をクエリーに追加した理由は

DBの日付は'20090825'で/がない。 入力フォームの範囲指定日付は'2009/08/25'で/がある。
SQLで抽出するにはどちらかに合わす必要がある。

そのためクエリーに生産日を追加して('2009/08/25')にして抽出できるようにした。

だが
これもよく考えると良くないやり方だった データには項目を追加しない方が良い

そこで、
クエリーに追加するのではなく、入力フォームの範囲指定日付をワークにコピーして/をとることにした

変更前
..........................................
クエリー「生産日: Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)」
DoCmd.OpenReport _
"B帳票", acViewNormal, _
, "([生産日] BETWEEN #" & Me!txt開始日付 & "# AND #" & Me!txt終了日付 & "#) and (koujyo = '" & Me![cbo工場].Value & "') and (koutei = '" & Me![cbo工程].Value & "')"
..........................................

変更後
..........................................
クエリー「生産日」は削除した
*'2009/08/25'→'20090825'
str開始日付 = Mid(Me!txt開始日付, 1, 4) & Mid(Me!txt開始日付, 6, 2) & Mid(Me!txt開始日付, 9, 2)
str終了日付 = Mid(Me!txt終了日付, 1, 4) & Mid(Me!txt終了日付, 6, 2) & Mid(Me!txt終了日付, 9, 2)

DoCmd.OpenReport _
"B帳票", acViewNormal, _
, "([jymd] BETWEEN '" & str開始日付 & "' AND '" & str終了日付 & "') and (koujyo = '" & Me![cbo工場].Value & "') and (koutei = '" & Me![cbo工程].Value & "')"
..........................................

*結果
範囲指定の日付を'20090825'にしたら、問題なく正常に動いた。

*そもそもデータ側(クエリーで新項目)で対処ではなく、範囲指定側で対処するのが正解だった。

---------------------------------------------------------------------
■結論
---------------------------------------------------------------------

実行ファイル(mde、accde)を作るときはバージョン(ファイル形式)を合わす。

Access2007ではクエリーに
「生産日: Mid(aa.jymd,1,4) & "/" & Mid(aa.jymd,5,2) & "/" & Mid(aa.jymd,7,2)」
は指定できない




Q:Accessを実務用にリリースする作業手順
A:  
実際にユーザーが使用できるまでの手順。

■リンクテーブルの設定
■accessの作成
■起動時の設定変更
■mdeの作成
■起動用ショートカットの作成

■稼動後のaccessの修正

---------------------------------------------------------------------
■リンクテーブルの設定
---------------------------------------------------------------------

SQL Serverとテーブルのリンクを行う

-------------------------------------------------------------
1.テストで使用していたテーブル名を変更する。
-------------------------------------------------------------

テーブル名にXをつける

品目   db_m_hinmoku → xdb_m_hinmoku
工程   db_m_koutei  → xdb_m_koutei

-------------------------------------------------------------
2.リンクテーブルの設定
-------------------------------------------------------------
-------------------------------------
Access2003
-------------------------------------

●データベースサーバーに接続
ファイル 外部データの取り込み テーブルのリンク
ファイルの種類:ODBCデータベース()

コンピュータデータソース  ABC

●SQL Serverログイン
ログイン:vvww
パスワード:********

●テーブルのリンク
(注)この時「パスワードの保存」にチェックを入れる (チェックを入れないと実行時にパスワード入力がたくさんくる)

品目   db_m_hinmoku
工程   db_m_koutei

 選択(複数可)   OK
 
-------------------------------------
Access2007
-------------------------------------

●データベースサーバーに接続

「外部データ」タブ
「その他」  「ODBCデータベース」

◎リンクテーブルを作成してソースデータにリンクする   [OK]

「データソースの選択」 「コンピュータデータソース」タブ データソース名選択(ABC)  [OK]

「SQLServerログイン」
ログインID:vvww
パスワード:********
[OK]

アカウント情報を保存しますか?  名前「SQLServer ログイン-vvww」  [保存]


●テーブルのリンク

品目   db_m_hinmoku
工程   db_m_koutei

 選択(複数可)

(注)この時「パスワードの保存」にチェックを入れる (チェックを入れないと実行時にパスワード入力がたくさんくる)

[OK]

「ファイルに保存する前にパスワードは暗号化できません」  [パスワードの保存] テーブルのリンク数出る
---------------------------------------------------------------------
■accessの作成
---------------------------------------------------------------------

●ソースの場所:D:\00開発\ABCaccess\ABCdb2007.accdb

●立上げ方
ABCdb2007.accdbを選択して、Wクリックして立ち上げる

accessの作成(メニューフォーム、クエリー、フォーム、リスト)
ここでは具体的な作成方法は省略します

●バージョン日付を入れる

リリース日をフォーム、帳票の左上に入れておく
「v091215a」年月日 同一日の連番abc..

メニューフォーム、各フォーム、各帳票

●ショートカット

ALT+F11     コード表

【Shift】+【F2】  「ズーム」ウィンドウ

---------------------------------------------------------------------
■起動時の設定変更
---------------------------------------------------------------------

●起動時の設定を行う
起動時にメニューを最初に表示し、余計なウィンドウを表示しない

-------------------------------------
Access2003
-------------------------------------

「ツール」--「起動時の設定」--
「フォーム/ページの表示」:(表示しない)     --->ABCシステムメニュー
「データーベースウインドウの表示」:チェックあり --->チェックなし
「ステータスバーの表示」:チェックあり      --->チェックなし

-------------------------------------
Access2007
-------------------------------------

Officeボタン
Accessのオプション
カレントデータベース
-------------------------
アプリケーションオプション
-------------------------
フォームの表示    --->ABCシステムメニュー


-------------------------
ナビゲーション
-------------------------
「ナビゲーションウィンドウを表示する」 --->チェックなし


-------------------------
リボンとツールバーのオプション
-------------------------
「すべてのメニューを表示する」    --->チェックなし
「規定のショートカットメニュー」   --->チェックなし


-------------------------------------
access2003「起動時の設定」の編集の仕方
-------------------------------------
Shiftを押しながらWクリックして立ち上げる
開く
ビュー
データペースウインドウ
メニューバー(開く、デザイン)を右クリック
「起動時の設定」クリック

「ナビゲーションウィンドウの表示」はF11を押す

たまにWクリックしても立ち上がない時はAccessを立ち上げてファイルを読むから立ち上げる


---------------------------------------------------------------------
■mdeの作成
---------------------------------------------------------------------

-------------------------------------
Access2003
-------------------------------------

●ABCdb2007.mdbを最適化する。
 Shift+ABCdb2007.mdbをWクリックして立ち上げる
 「ツール」-「データベースユーティリティ」-「最適化」
 閉じる
 
●ABCdb2007.mdeの作成
 Shift+ABCdb2007.mdbをWクリックして立ち上げる
 「ツール」-「データベースユーティリティ」-「MDEファイルの作成」
 ABCdb2007.mdeができる
 閉じる


-------------------------------------
Access2007
-------------------------------------

●ABCdb2007.accdbを最適化する。
 Shift+ABCdb2007.accdbをWクリックして立ち上げる
 「officeボタン」-「管理」-「データベース最適化」実行中になるので「終了」


●ABCdb2007.mdeの作成
 Shift+ABCdb2007.mdbをWクリックして立ち上げる
 「データベースツール」-「ACCDEの作成」
 ABCdb2007.accdeができる


●以下のメッセージが出た時は、以下で対応する。
-----------------------------------------
使用可能でない(信頼されていない)データベースからaccdeファイルまたはmdeファイルを作成することはできません。
このデータベースの発行元が信頼できる場合は、メッセージバーを使用してデータベースを有効にして下さい。
-----------------------------------------
メッセージバーに以下が表示される
セキュリティの警告 データベースの一部の内容が無効にされました。
-----------------------------------------

オプションをクリックする。
-----------------------------------------

セキュリティの警告
◎不明なコンテンツから保護する(推薦)
○このコンテンツを有効にする

○不明なコンテンツから保護する(推薦)
◎このコンテンツを有効にする
にする
-----------------------------------------

バーコードで出たら下の有効にする

データベースツール--MDEの作成--保存


---------------------------------------------------------------------
■mdeをサーバーに転送する
---------------------------------------------------------------------

●Access2003
ABCdb2003.mde → \\svr001\ABC\ABCシステム\ABCdb2003.mde

●Access2007
ABCdb2007.accde → \\svr001\ABC\ABCシステム\ABCdb2007.accde


---------------------------------------------------------------------
■起動用ショートカットの作成
---------------------------------------------------------------------

場所
\\svr001\ABC\ABCシステム\ABCdb2007.accde

ショートカットの作成
W:\ABC\ABCシステム\ABCdb2007.accde


---------------------------------------------------------------------
■稼動後のaccessの修正
---------------------------------------------------------------------

●ソースの場所:D:\00開発\ABCaccess\ABCdb2007.accdb

●立上げ方
ABCdb2007.accdbを選択する

Shiftを押しながらWクリックして立ち上げる

accessの修正

変更箇所の修正

バージョン日付の修正
フォーム、帳票の左上に入れておく 「v091215a」年月日 同一日の連番abc..

メニューフォーム、各フォーム、各帳票

●ショートカット

ALT+F11     コード表

【Shift】+【F2】  「ズーム」ウィンドウ


---------------------------------------------------------------------


Q:「信頼できる場所」にユーザー指定の場所を指定したが「入力したリモートパス 〜」のエラー
「入力したリモートパスまたはネットワークパスは、現在のセキュリティ設定では使用できません。」
A:  
下段にある
「プライベートネットワーク上にある信頼できる場所を許可する(推薦しません)」にチェックを入れると処理されます。



Q:Accessを複数の人が使うようする方法(データーベースを分割する)
A:  

accessのデータベースを分割して処理します。

データベースを分割すると「テーブルのみのAccess」と「テーブルがリンクされたAccess」ができます。
バックエンドデータベース(データDB)とフロントエンドデータベース(プログラムDB)ができます

この2つのファイルをサーバーに置けば複数のユーザーがAccessを共用できます。
昔のAccessは共用で使うとDBが良く壊れましたが、最近のAccessは共用で使用してもサクサク動きます。

●DBの確認
ABCNN原本2003.mdb

1.コンパイルをする
ALT+F11て゜VBA画面をだす
デバッグ→デバッグ→「ABCのコンパイル」(ここは薄地になっている)
どこか適当にスペースを入力して、消して更新作業をすると「ABCのコンパイル」は表示される

「ABCのコンパイル」クリック
すぐに終わるが、エラーがあるとエラーメッセージが出る

Accessを閉じる
「オブジェクトの保存」次のオブジェクトの変更を保存しますか?  「はい」

*最初から「ABCのコンパイル」が表示されていれば、以前からコンパイルが未完といえる
コンパイルが未完だと、MDEが作成できなかったり、MDEを実行しても空処理になり不思議な現象が起きる
私はこれで半月悩みました  ここは重要!! 必ずコンパイルは完了させる事

2.Accessを再度立ち上げて最適化をする
[Officeボタン]画面(左上の丸ボタン)→管理→データベースの最適化/修復


●DBの分割
1.原本をコピーしてファイル名称を変える
ABCNN原本2003.mdb → ABCNN2003.mdb

2.Access分割
ABCNN2003.mdb読込 →
「データベースツール」タブの「データ移動」で、「Accessデータベース」をクリック
[データベースの分割] ファイル名に「_be」が付いて、「ABCNN2003_be.mdb」になる
ネットワーク上に置きたいので、保存先をネットワーク上にする「\\ABC03\ABC業務」

[分割]
データベースが分割されました [OK]
閉じる

------------------------
[処理前]
ABCNN2003.mdb:テーブル、クエリ、フォーム、レポート、モジュール

[処理後]
\\ABC03\ABC業務\ABCNN2003_be.mdb  バックエンドデータベース(データDB、テーブルのみ)
d:\ABC処理\ABCNN2003.mdb    フロントエンドデータベース(プログラムDB、テーブルはリンク、フクエリ、フォーム、レポート、モジュール)
------------------------


●起動時の設定 2007用

d:\ABC処理\ABCNN2003.mdb
Officeボタン→Accessのオプション→カレントデータベース

□アプリケーションオプション
フォームの表示    --->ABCシステムメニュー

□ナビゲーション
「ナビゲーションウィンドウを表示する」 --->チェックなし

□リボンとツールバーのオプション
「すべてのメニューを表示する」    --->チェックなし
「規定のショートカットメニュー」   --->チェックなし

●最適化

●MDEの作成
「データベースツール」タブの「データベースツール」で、「MDEの作成」をクリック
d:\ABC処理\ABCNN2003.mdeができる

●MDEをサーバーにコピーする
d:\ABC処理\ABCNN2003.mde →\\ABC03\ABC業務\ABCNN2003.mde

●ユーザーのパソコンにショートカットを作る
Explorerをたちあげる
アドレス(D):\\ユーザーのコンピュータ名\c$\Documents and Settings\ユーザー名\デスクトップ
右クリック
新規作成
ショートカット
項目の場所を入力してください:\\ABC03\ABC業務\ABCNN2003.mde   次へ
このショートカットの名前を入力してください:ABC処理     完了


●完成

○プログラムの場所
\\ABC03\ABC業務\ABCNN2003.mde

○データベースの場所
\\ABC03\ABC業務\ABCNN2003_be.mdb




Q:Access2007の容量が増えたので、テーブルを特定の日付以下で削除したい。
A:  
---------------------------------------------------------------------
■やる事
---------------------------------------------------------------------
1.抽出クエリーを作成して、削除データを確認する。
2.抽出クエリーをコピーして、テーブル作成クエリー(削除データの保存用)を作成する。
3.抽出クエリーをコピーして、テーブル削除クエリーを作成する。

---------------------------------------------------------------------
■抽出クエリー作成
---------------------------------------------------------------------

作成タブ →その他 →クエリウィザード →OK

新しいクエリ
選択クエリウィザード →OK

テーブル:手配
>> (すべて対象)  →次へ

◎各レコードのすべてのフィールドを表示する  →次へ

クエリ名を指定してください:手配抽出  →完了

*テーブルの総件数をメモる  500000件

デザインビュー →表示

ホーム →表示 

----------------------------
フィールド:生産日
テーブル :手配
抽出条件:<=#2000/12/31#  (2000年以下のデータを削除する)
----------------------------


実行  件数確認  抽出件数をメモる  100000件

保存


---------------------------------------------------------------------
■抽出テーブル作成
---------------------------------------------------------------------

抽出クエリーをコピーする
クエリー名:手配抽出作成

手配抽出作成をデザインビューで開く

デザイン →テーブルの作成

テーブルの作成
テーブル名:手配年月日 (手配20101201)
◎カレントデータベース →OK

クエリーの種類が変わる →作成

保存

実行  100000件のレコードが新規テーブルにコピーされます  →はい

閉じる

テーブルの確認

テーブルを見る

テーブル作成件数  100000件 →OK


---------------------------------------------------------------------
■テーブル削除
---------------------------------------------------------------------

抽出クエリーをコピーする
クエリー名:手配抽出削除

手配抽出作成をデザインビューで開く

デザイン →削除

クエリーの種類が変わる →削除

デザインビューの「並び替え」と「表示」が無くなり、「レコードの削除」が追加される

----------------------------
フィールド:生産日
テーブル :手配
レコードの削除:Where
抽出条件:<=#2000/12/31#
または:
----------------------------

保存

実行  100000件のレコードが指定したテーブルから削除されます。  →[はい]

閉じる

テーブルの確認

最初に作った「抽出クエリー:手配抽出」を実行する

削除されて何も表示されない

テーブルの総件数を確認する 500000件 - 100000件 = 400000件




Q:
A:  



Q:
A:  




 
■ Access/テーブル


Q:主キーを複数作るには
A:「SHIFT」+で主キーを複数作成できる 
  


Q:テーブル項目の最後に、「更新日」を入れる理由は
A:「更新日」によってトラブル時の追跡に役立つ
  テーブルの規定値にNow()を入れる
  Date()より時間の入ったNow()が良い


Q:リンク付きテーブルのリンク先を確かめるには
A:ツール(T)-データベースユーティリティ(D)-リンクテーブルマネージャ(L)


Q: 
A:




 
■ Access/フォーム


Q:フォームの見出し枠線
A:
  高さ:0.7
  背景スタイル:透明
  背景色:-2147483633
  立体表示:枠組み
  境界線スタイル:実践
  境界線色:0
  境界線幅:3
  フォント名:MSPゴシック
  フォントサイズ:14
  


Q:西暦の4桁表示をするには
A:   「ツール」−「オプション」−「4桁で表示」にチェック


Q:表示するだけで入力しないフィールドの指定は

A:   「使用可能」   :いいえ
  「編集ロック」  :はい
  「タブストップ」 :いいえ
  「背景色」    :14737632(例 薄いグレー)


Q:画面に表示したくない時は

A:   「可視」   :いいえ
又は
  Me.金額.Visible = False


Q:消費税の計算は、金額、消費税のプロパティは  

A:   金額税込=int([金額]*0.05)
  書式:通貨

       金額(入力可) 消費税(入力可飛ばす) 合計金額(入力不可)
使用可能  :はい      いいえ        いいえ
編集ロック :いいえ     はい         はい
タブストップ:はい      はい(手でクリック)  いいえ



Q:別DB「共通」の[処理年月]をフォーム「処理DATE」に表示するには

A:
  Private Sub Form_Open(Cancel As Integer)
  '開く時
   Me.処理DATE = DLookup("[処理年月]", "共通")
  End Sub
  


Q:フォームのOPEN、CLOSEのイベント順序は  

A:
OPENは
@開く時Open--A読み込み時Load--Bサイズ変更時Resize--Cアクティブ時Activate DCurrent
CLOSEは
@読み込み解除時Unload--A非アクティブ時Deactivate--B閉じる時Close   


Q:数字項目で00000123と表示したい時は
A:書式に「00000000」
  


Q:Me![テキスト1]のMeとは
A:フォーム上の[テキスト1]を指す  
  


Q:フォームの入力の入力チェック
A:
1.その項目のチェック
「入力規則」に条件を、「エラーメッセージ」にそのエラー表示を入れる
   1〜10  :Between 1 And 10
   2005/01/01〜2005/12/31:Between #2005/01/01# And #2005/12/31#
   A、B、C :In("A","B","C")  又は "A" or "B" or "C"
   今日以降:>=Date()    Aで始まる5桁の文字列:Like "A????"
2.複数項目のチェック
  「表示」−「プロパティ」−「テーブルプロパティ」−「入力規則」
   項目Aは項目Bより大きい:[項目A]>[項目B]

3.必須入力チェック
   「値要求」:はい
   「空文字列の許可」:いいえ(空白を入れない)

4.重複入力チェック    


Q:入力(カーソル)の動きをコントロールするには
A:  
1.データの入力順の変更
  「表示」−「タブオーダー」−「詳細」−「自動」又は手でドラッグ

2.初期画面で「タブ」がへんな所を指している
  「タブオーダー」の順序がおかしい

3.フォーム内だけでカーソルを移動させる
  「フオームプロパティ」の「Tabキー移動」を「カレントレコード」にする

4.表示のみの項目
  「タブストップ」:いいえ
  *入力項目以外は全て「タブストップ」を「いいえ」にする
  テキスト、コマンドボタン、オプショングループなど

5.入力しないと先に進めない
  「値要求」:はい  、「規定値」:空欄
  「値要求」:はい  、「空文字列の許可」:いいえ



Q:日本語入力モードIME

A:  
1.IME入力モード保持:いいえ(デフォルト)   コントロールがフォーカスを失う直前の IME 入力モードを保持するかどうかを示す。

2.IME入力モード:コントロールなし(デフォルト)
  フォーカスがコントロールに移動したときの IME 入力モードを示す。
設定値 内容 Visual Basic
No Controlコントロールなし IME 入力モードを指定しません。(既定値) 0
Onオン IME 入力モードをオンにします。 1
Offオフ IME 入力モードをオフにします。 2
Disable使用不可 IME 入力モードを使用できなくなります。 3
Hiraganaひらがな 全角ひらがなを指定します。 4
Full pitch Katakana全角カタカナ 全角カタカナを指定します。 5
Half pitch Katakana半角カタカナ 半角カタカナを指定します。 6
Full pitch Alpha/Num全角英数 全角英数を指定します。 7
Half pitch Alpha/Num半角英数 半角英数を指定します。 8

3.IME変更モード:一般(デフォルト)
フォーカスがフォームのコントロールまたはテーブルのフィールドに移動したときに切り替わる IME 変換モードを示します。

  


Q:画面がちらつく時は
A:  
'画面の更新を停止
  DoCmd.Echo False

  〜〜処理〜〜

'画面の更新を開始
  DoCmd.Echo True
  


Q:メニューバー、ツールバーを消す
A:  
1.メニューバーのみ消す
フォームのプロパティのメニューバーに「=-1」と記入する
その下のツールバーはきかない

2.メニューバーとツールバーを消す
VBAでForm_Openに入れる
   
Private Sub Form_Open(Cancel As Integer)
    
    CommandBars("Menu Bar").Enabled = False    'メニューバー消す
    CommandBars("Database").Enabled = False    'ツールバー消す
    CommandBars("Web").Enabled = False       'ツールバー消す
    
End Sub

(注)デバッグ用に隠しボタンで、Enabled = True 表示 を作成した方が良い



Q:リストボックスとコンボボックスの違い?

A:  
コンボボックス
 一行表示でドロップダウンするので、Formのスペースがいらない。
 キーボードからも入力できる
 選択する項目が多く、全て表示できない時に使う。

リストボックス
 選択する項目が限られている時に使う。
 開かれた一覧表から選択するので、すばやく選択できる
 キーボードからは入力でない


Q:コンボボックスのID以外の住所も保存したい?

A:  
Private Sub cbo住所_AfterUpdate()
 住所1 = Me![cbo住所].Column(1)  コンボボックスの2列目のデータ
 住所2 = Me![cbo住所].Column(2)  コンボボックスの3列目のデータ
End Sub



Q:コンボボックスの初期値の設定方法は?
  前回のデータをコンボボックスに表示するには?

A:  
Me![cbo運送業者].DefaultValue = "='" & Me![cbo運送業者].ItemData(0) & "'"   一番上のデータが表示される

A:
  変数設定:Private 前回IDX  As Integer
  インデックス保存:前回IDX = Me.cbo運送業者.ListIndex
  コンボボックス表示: Me![cbo運送業者].DefaultValue = "='" & Me![cbo運送業者].ItemData(前回IDX) & "'"



Q:コンボボックスのドロップダウンはマウスですが、スペースキーでする方法は?

A:  
コンボボックス右クリック--プロパティ--「すべて」タブ--「キークリック時」-- [イベント プロシージャ]選択--右「...」クリック--
Private Sub cbo部門コード_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
Me!cbo部門コード.Dropdown
End If
End Sub

−−−参考−−−
**選択もスペースキーでする方法は?
  スペースキーで下に移動する
Private Sub cbo部門コード_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeySpace Then
Me!cbo部門コード.Dropdown
KeyCode = vbKeyDown
End If
End Sub




Q:コンボボックスのドロップダウンを自動的に表示する方法?

A:  
コンボボックス右クリック--プロパティ--「すべて」タブ--「フォーカス取得時」-- [イベント プロシージャ]選択--右「...」クリック--
Private Sub cbo部門コード_Enter()
Me!cbo部門コード.Dropdown
End Sub




Q:コンボボックスの行数をダブルクリックで増やすには
A:  
コンボボックス右クリック--プロパティ--「すべて」タブ--「ダブルクリック時」-- [イベント プロシージャ]選択--右「...」クリック--
Private Sub cbo運送業者_DblClick(Cancel As Integer)
'運送業者コンボボックスのダブルクリック時
With Me!cbo運送業者
If .ListRows = 8 Then
'リスト行数がデフォルトの8なら16に変更
.ListRows = 16
Else
'リスト行数が変更済みならデフォルトに戻す
.ListRows = 8
End If
'再度ドロップダウン
.Dropdown
End With
End Sub



Q:リストボックスの使い方

A:  
1.リストボックス5番目の値を選択する

ListBoxName.Selected(4) = True  (0、1、..)

2.複数行選択リストボックスの選択行を変数に代入

Dim i As Integer
Dim c() As String
Dim varItem As Variant
Dim idx As Integer

i = ListBoxName.ItemsSelected.Count
ReDim c(i - 1)
idx = 0
For Each varItem In ListBoxName.ItemsSelected
c(idx) = ListBoxName.ItemData(varItem)
idx = idx + 1
Next varItem

3.リストボックスの金額を等間隔にして右詰に表示する
  フォント:MSゴシックする
  Space(10 - Len(txt金額)) & txt金額
  (例)
Me.lst運搬一覧.RowSource = "SELECT Q運搬入力.運搬NO, Q運搬入力.日付,Q運搬入力.運送業者名,Q運搬入力.部門名称,Space(10 - Len(Format([運搬費],'@@@@\,@@@'))) & Format([運搬費],'@@@@\,@@@') as 運搬金額,Q運搬入力.備考 " & _
"FROM Q運搬入力 where Q運搬入力.処理年月 = '" & txt処理DATE & "'"
Me.lst運搬一覧.Requery

  



 
■ Access/クエリ


Q:いろいろな抽出条件
A:   
●3を抽出
 ="3"

●3以外を抽出
 Not ="3"
 <>"3"

●スペース1以外を抽出
 <>Space(1)

●私立と公立
 "私立" Or "公立"

●***学校
 Like "*学校"

●私立***学校
 Like "私立*" And Like "*学校"

●頭1桁9を抽出
Like "9*"

●頭1桁9以外を抽出
Not Like "9*"

●頭1桁8と頭1桁9を抽出
Like "8*" Or Like "9*"

●頭1桁8と頭1桁9以外を抽出
Not Like "8*" And Not Like "9*"

●10以上で15未満 (10、11、12、13、14)
 >=10 And <15
 Between 10 And 14

●カ行とサ行 (カ、キ、ク、ケ、コ、サ、シ、ス、セ、ソ)
 >="カ*" And <"サ*"

●2010年03月01日 (2010年03月01日のデータ)
 =#10/03/01#

●2010年**月**日 (2010年のデータすべて)
 Like "10/*/*"   又は Year([出荷日付])=2010

●2010年05月**日 (2010年05月のデータすべて)
 Like "05/10/*"   又は Between #05/10/01# And #05/10/31#
●今日の日付
 Date()

●今日を含めて、30日前のデータ
 Between DateAdd("d",-30,Date()) And Date()

●偶数日抽出
 (Day([出荷日付]Mod2)=0

●奇数日抽出
 (Day([出荷日付]Mod2)=1




 
■ Access/レポート


Q:何も無い時、0を表示させたいが
A:プロパティのコントロールソースに「=NZ([営業費],0)」 
  名前も変える:「txt営業費」   名前を変えないと、#Errorが表示される   


Q:(XXXX)カッコを付けて表示したい
A:  
 コントロールソース:処理年月
 書式       :(@@@@@@@)
  


Q:B4用紙に印刷したい

A:「ページ設定」でB4用紙を指定する  
 「ファイル」--「ページ設定」--「ページ」タブ--「用紙」--「B4(257×364mm)」
 「ファイル」--「ページ設定」--「余白」タブ--「左:20、右:10」
  



 
■ Access/関数


Q:日付
A:日付
今日の日付:Date()、 今日の日付と時間:Now()

何日先
今日から1週間後:DateAdd("d",7,Date())
今日から2年後:DateAdd("yyyy",2,Date())
今日から3ヶ月後:DateAdd("m",3,Date())

今日の前日:DateSerial(Date())-1
売上日の月末:DateSerial(Year([売上日]),Month([売上日])+1,1)-1
売上日の翌月の月末:DateSerial(Year([売上日]),Month([売上日])+1,1)-1
売上日から翌月の月末:DateSerial(Year([売上日]),Month([売上日])+2,1)-1

一部取得
年:Year([生年月日])
月:Month([生年月日])
日:Day([生年月日])
曜日漢字1文字 :Format([生年月日],"aaa")
曜日漢字 :Format([生年月日],"aaaa")
曜日英字3文字 :Format([生年月日],"ddd")
曜日英字 :Format([生年月日],"dddd")

誕生日から年齢計算
年齢:iif(Format([生年月日],"mm/dd") > Format(Date(),"mm/dd"),
DateDiff("yyyy",[生年月日],Date()) -1, '今年の誕生日を迎えていない
DateDiff("yyyy",[生年月日],Date()))

DateDiff("yyyy",[生年月日],Date())
DateDiff("m",[月],Date())
DateDiff("d",[日],Date())
DateDiff("ww",[週],Date())

比較 '過去月度のチェック
If Format(DateAdd("m", -1, Date), "yyyy/mm") > Format(Me!txt処理年月, "yyyy/mm") Then
MsgBox "処理年月が過去日付です???"
Else
' MsgBox "OKです"
End If

入力
=Format([txt開始入力],"yyyy年mm\月dd\日")

抽出
2005年抽出:Like "05/*/*" 又は Year([日付])=2005
2005/12/31以前抽出:<=#05/12/31#
現在の日付抽出:Date()
今日から90日前抽出:Between DateAdd("d",-90,date()) And Date()
偶数年抽出:(Year([日付]Mod2)=0
奇数年抽出:(Year([日付]Mod2)=1

  



 
■ Access/VBA


Q:VBAのコードにコメントを付けたいが
A:「コメントブロック」、「非コメントブロック」をツールバーに入れる
  「ツールバー」右クリック−「ユーザー設定」−「コマンド」−「分類」の「編集」−「コマンド」の「コメントブロック」、「非コメントブロック」をツールバーにドラッグする。


Q:VBAの「コード」が消えてしまった。
A: ブレークポイントを設定して、実行時に「コード」を変更すると、VBA「コード」が消えるときがある。
実行を終了してから「コード」をいじる。
常に他に保存しておく(保存していないとえらいことになる)。



Q:If文 の Or条件の記入方法は
A:
 誤
   If str月 = "01" Or "02" Or "03" Then
     str期 = 1
   End If

 正
   If str月 = "01" Or _
    str月 = "02" Or _
    str月 = "03" Then
      str期 = 1
   End If



Q:EXCELとCSVファイルに出力するには
A:
  
Private Sub EXCEL出力_Click() 
'クリック時−;EXCEL出力を実行する 
Dim TabelQuery As String   'テーブル/クエリー名 
Dim Ename As String      'EXCEL出力ファイル名 
Dim Cname As String      'CSV出力ファイル名 
 
If MsgBox("EXCEL出力を実行してよろしいですか?" & _ 
vbCrLf & "出力ファイル名=e:\temp\在庫.xlsと在庫.csv", & _ 
vbYesNo, "実行確認") = vbYes Then 
tb = "Q在庫"              'クエリー名 
fname = "e:\temp\在庫.xls"       'EXCEL出力ファイル名 
Cname = "e:\temp\在庫.csv" 'csv出力ファイル名 
 
'EXCEL形式で出力 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, tb, fname 
 
'CSV形式で出力 
DoCmd.TransferText acExportDelim, , tb, Cname, False 
 
MsgBox "経費のEXCEL出力を完了しました" 
End If 
End Sub 
 



Q: DBが'20090831'と画面入力の開始日〜終了日が'2009/08/31'の時、抽出SQLはどちらに合わすか?
'20090831'にするか?、'2009/08/31'にするか?
A:
--------------------------------------------------------
●画面入力の'2009/08/31'に合わすやり方。

クエリで別項目[生産日]を作って、'2009/08/31'の形式で抽出する。

クエリ
生産日: Mid(dbo_t_jssagyo.jituseiymd,1,4) & "/" & Mid(dbo_t_jssagyo.jituseiymd,5,2) & "/" & Mid(dbo_t_jssagyo.jituseiymd,7,2)

20090810 →  2009/08/10

画面入力 開始日〜終了日
開始日2009/08/01   終了日2009/08/31

実行  日付抽出は/付き 2009/08/31

DoCmd.OpenReport "R生産日報", acViewNormal, _ , "([生産日] BETWEEN #" & Me!txt開始日付 & "# AND #" & Me!txt終了日付 & "#)"

*このやり方は良くない。クエリではあまり別項目を作らない方が良い。
データ形式を2003から2007に変換した時、このやり方だとエラーになる

--------------------------------------------------------

●DBの'20090831'に合わすやり方。

クエリ
dbo_aaa.jituseiymd そのまま   20090810

画面入力 開始日〜終了日
開始日2009/08/01   終了日2009/08/31

実行
str開始日付 = Mid(Me!txt開始日付, 1, 4) & Mid(Me!txt開始日付, 6, 2) & Mid(Me!txt開始日付, 9, 2)
str終了日付 = Mid(Me!txt終了日付, 1, 4) & Mid(Me!txt終了日付, 6, 2) & Mid(Me!txt終了日付, 9, 2)

DoCmd.OpenReport "R生産日報", acViewNormal, _ , "([jituseiymd] BETWEEN '" & str開始日付 & "' AND '" & str終了日付 & "')"

*このやり方が正しい。画面入力のデータを加工した方が良い。

--------------------------------------------------------
 




 
■ デバッグのコツ


Q:Accessが動かなくて困った時にやる事は
A: Accessが動かない、エラー原因が分からない、壁にぶち当たった時には、以下の事をやると直る事がある。

●最適化をする
 「officeボタン」-「管理」-「データベース最適化」

●コンパイルをする
ALT+F11でVBA画面をだす
デバッグ→「ABCのコンパイル」(ここは薄地になっている)
どこか適当にスペースを入力して、消して更新作業をすると「ABCのコンパイル」は表示される

「ABCのコンパイル」クリック
すぐに終わるが、エラーがあるとエラーメッセージが出る

Accessを閉じる
「オブジェクトの保存」次のオブジェクトの変更を保存しますか?  「はい」

*最初から「ABCのコンパイル」が表示されていれば、以前からコンパイルが未完といえる
コンパイルが未完だと、MDEが作成できなかったり、MDEを実行しても空処理になり不思議な現象が起きる
私もこれで半月悩みました。

●空DBを作成して、テーブル、フォームなどすべてインポートし直す
新しいDBにして全て取り込む。バージョン違いなどの時は効果がある

●バージョンを統一する
バックエンドデータベース(データDB)、フロントエンドデータベース(プログラムDB)に分けている時はバージョンを統一した方が良い。
Accessの「データベース分割」機能を使えばこのようなことはないが。

●バージョンを上げる
バージョンを上げるには「名前を付けて保存」→「データベースを他の形式で保存」だが、
別のやり方で新規DBを作ってテーブル、フォームなどをインポートした方が良い。

●テーブルとフォームを分割している時は、いったんすべて取り込んで分割をやめてNetかVBAかの切り分けをする。
トラブルはネットワーク障害か、権限が無いか、などいろいろ要因があるので、おかしい時は別DBを作ってテーブル をインポートして調査した方が的を絞れる。

●クエリーが結構臭い所があるので、クエリーの抽出条件など見直す
クエリーの抽出条件はデータ側でデータ変換をしなくて、固定値側でデータ変換をする。など


  


Q: 
A:   


Q: 
A:   


Q: 
A:   


Q: 
A:   



 
このページTOPへ
ACCESSエラー対処         メインフレームヒント集 

SEプログラマー・ヒント集メニューへ

Copyright © 2006-2013 s-kitagawa acchint