Accessに関するブログ記事(Blog)
RepaintとRefreshの違い
2022/02/07
●Repaint
Repaint メソッドは、Access が他のタスクを実行している間に再描画が遅延した場合、画面を更新します。
●Refresh
フォームおよびデータシートに現在表示されているレコードに対してユーザーまたは他のユーザーが、基になるレコード ソースに対して行った変更を表示します。
関連するコマンド
●Echo
再描画をオンまたはオフにする
●DoEvents
クリックやキー入力や描画の処理を直ちに実行します。Repaintと似たような動作になりますが、ちらつきが少ないです。
Accessラインタイムの要否とインストールbit数判定スクリプト
2022/02/07
Microsoft-Accessは
accdb形式で実行するケースと
accde(コンパイル)形式で実行する場合で、実行可能環境が異なります。
accdb形式であれば、os及びofficeのbit数が32bitであろうと、64bitであろうと実行することが可能です。
ですがaccde形式の場合、MS-Accessの32bitがインストールしてあるマシンでコンパイルすると32bitモードでコンパイルされ、64bitがインストールされているマシンでコンパイルすると64bitモードでコンパイルされます。
64bitモードのaccdeファイルは32bitのofficeでは実行できませんし、32bitモードののaccdeファイルは64bitのofficeでは実行できません。
accdeファイルに変換するとどうなるかといいますと
・フォームの修正
・レポートの修正
・VBAコードの変更
ができなくなります。
OS及びインストールOfficeのbit数によって、アクセスランタイムとaccdeのbit数判定マトリックス
office
インストール
有無
|
access
バンドル有無
|
osの
bit数
|
officeの
bit数
|
Access
ランタイム
|
accdeファイル |
あり
|
あり
|
32bit版
|
32bit版
|
不要
|
32bit版
|
あり
|
あり
|
64bit版
|
32bit版
|
不要
|
32bit版
|
あり
|
あり
|
64bit版
|
64bit版
|
不要
|
64bit版
|
あり
|
無し
|
32bit版
|
32bit版
|
32bit版
|
32bit版
|
あり
|
無し
|
64bit版
|
32bit版
|
32bit版
|
32bit版
|
あり
|
無し
|
64bit版
|
64bit版
|
64bit版
|
64bit版
|
無し
|
無し
|
32bit版
|
-
|
32bit版
|
32bit版
|
無し
|
無し
|
64bit版
|
-
|
64bit版
|
64bit版
|
無し
|
あり
32bit版
|
32bit版
|
-
|
不要
|
32bit版
|
無し
|
あり
64bit版
|
64bit版
|
-
|
不要
|
64bit版
|
※Office 2019以降のバージョンのインストールでは、 明示的に 32 ビット版を選択しなければ、64 ビット版の Office が自動的にインストールされます。
●判定バッチファイル
予約管理システムをaccdeファイルと読み替えてください。
以下の内容をコピーして拡張子をbatにして実行すると、必要なプログラムのbit数が判定できます。
@echo off
set isAccessExist=0
set officebit=0
rem ===== OSのbit数判定(共通プログラムフォルダ変数が空ならx86、それ以外ならx64)=====
call :osBitCheck
rem 予約システム(tineyReserve)インストール往路グラムのBit数判定と必要なランタイムモジュールの判定 updatedate 2022/02/03
rem 下記の例では拡張子.docxで判断している(officeには必ずwordが付いているため)
rem 関連付け判定 Wordなら .docx Excelなら .xlsx Accessなら.accdb
rem assocでファイルタイプはWord.Document.12とわかり
for /f "tokens=2 delims==" %%a in ('assoc .docx') do @set workrel=%%a
rem ftypeでWord.Document.12に対応した起動アプリのフルパスがわかる"C:\Program Files (x86)\Microsoft Office\Root\Office16\WINWORD.EXE" /n "%1" /o "%u"
for /f "tokens=2 delims==" %%a in ('ftype %workrel%') do @set workpath=%%a
rem ==== Officeインストール判定 (wordが無ければofficeはインストール無しと見なす)=====
echo %workpath% | find /i "winword.exe" > nul
if %errorlevel% geq 1 goto notExistOffice
rem officeのbitcheck
call :officeBitCheck
call :accessCheck
if %isAccessExist%==1 (
goto existAccess ) else (
goto notExistAccess
)
:accessCheck
rem -------------------------------------------
rem accessがインストールされているかチェック
rem -------------------------------------------
for /f "tokens=2 delims==" %%a in ('assoc .accdb') do @set workrel=%%a
for /f "tokens=2 delims==" %%a in ('ftype %workrel%') do @set workpath=%%a
echo %workpath% | find /i "msaccess.exe" > nul
if %errorlevel%==0 (
rem Accessインストール
set isAccessExist=1
) else (
rem Access未インストール
set isAccessExist=0
)
call :officeBitCheck
exit /b
:osBitCheck
rem -------------------------------------------
rem OSビット数チェック
rem -------------------------------------------
echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul
if %errorlevel%==0 (
set bit=32
) else (
set bit=64
)
exit /b
rem -------------------------------------------
rem Officeビット数チェック
rem -------------------------------------------
:officeBitCheck
rem ===== OSが32bitなら強制的にofficebitも32bitに設定 =====
if %bit%==32 (
set officebit=32
exit /b
)
echo %workpath% | find /i "%ProgramFiles(x86)%" > nul
if %errorlevel%==0 (
set officebit=32
) else (
set officebit=64
)
exit /b
rem ===== OfficeがインストールされているがAccessは含まれない場合 =====
:notExistAccess
echo ====================================================================================
echo %officebit%bit版ランタイムモジュールををダウンロード&実行してから、予約管理システム(tinyReserve:%officebit%bit版)をダウンロード&実行してください。
rem 2022/02/02現在 access365ランタイムがダウンロードできないため Access2016ランタイムのページを表示
rem start https://www.microsoft.com/ja-jp/download/details.aspx?id=50040
echo ====================================================================================
pause
exit /b
rem ===== Officeがインストールされていない場合 =====
:notExistOffice
call :accessCheck
rem OfficeがインストールされていなくてAccess単体でインストールされている場合
if %isAccessExist% == 1 goto existAccess
echo ====================================================================================
echo %bit%bit版ランタイムモジュールををダウンロード&実行してから、予約管理システム(tinyReserve:%bit%bit版)をダウンロード&実行してください。
rem 2022/02/02現在 access365ランタイムがダウンロードできないため Access2016ランタイムのページを表示
rem start https://www.microsoft.com/ja-jp/download/details.aspx?id=50040
echo ====================================================================================
pause
exit /b
rem ===== Office&Accessがインストールされている場合 =====
:existAccess
echo ============================================================================
echo 予約管理システム(tinyReserve:%officebit%bit版)のみをダウンロード&実行してください。
echo ============================================================================
pause
exit /b