ACCESSに張ったリンクテーブルを開くと中身が全部 #Deleted になる
起こった現象
サーバ側:SQLserver(たぶんバージョンはあんまり関係ないと思う)
クライアント側:ACCESS2010
サーバ側でテーブルを作り、ACCESSでリンクテーブルを作る。
ACCESS側でテーブルを開いてコピペでデータを突っ込む(どんなやり方で突っ込んだかはあんまり関係ないはず)。
そうすると全てのカラムで #Deleted と表示されてしまう。
SqlServerManagementStudioなどでサーバ側のデータを覗いてみるとデータはちゃんと入っている。
ACCESS側でも I/F 作って実行すると中身がちゃんと見えたりする(この辺は全てにおいてそうかは怪しい)。
なぜそうなったか
サーバ側でキーを bigint で作ったからと思われる。
ACCESS側は長整数型なのでサイズが合わない。
どうすれば直るか
サーバ側でキーをintで作る。
これで直った。
プロセスが存在しているか確認し、存在しなければ起動するコマンドラインバッチ
経緯
あるPCでDropboxがたまに落ちていることがある。
同期に使っているため困る。
どうしたか
下記のバッチを作り、タスクスケジューラで定期的に実行するようにした。
- 当該プロセスが存在しているか確認。
- 存在していなければ起動する。
ソース
@ECHO OFF ::tasklistコマンドからDropbox.exeをfind → ERRORLEVELで判定する TASKLIST | FIND "Dropbox.exe" > NUL IF NOT ERRORLEVEL 1 ( GOTO ProcessLaunched ) ELSE ( GOTO ProcessNotLaunched ) ::あれば何もしないで終了 :ProcessLaunched GOTO END ::なければ起動させる :ProcessNotLaunched "<フルパス>Dropbox.exe" /home GOTO END :END EXIT
「コマンドまたはアクション レコードの削除は無効です」と表示されてレコードが削除できない現象
何が起こったか
ACCESSで作ったアプリ。
削除ボタンを押すとレコードが削除される仕様。
やっていることは下記だけ。
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord
これが動作しなくなった。
表題のメッセージが出て削除されない。
原因
対象テーブルはリンクテーブルであり、リンクを張る時点でACCESS側で主キーを指定していた。
このアプリを修正する必要があり、テスト環境で検証を行うため、リンクテーブルのリンク先をプログラムで書き換えた。
その際、指定していた主キーの設定がはずれてしまったようだ。
対応
そのリンクをいったん削除し、再度(主キーを設定しつつ)作成したらアプリは正常に削除の動作を行った。
コードは一切修正していない。
エクセルでセル(セルの範囲)に名前をつける
コマンド
単一セルに名前をつける
Range("A4").Name = "範囲1"
範囲に名前をつける
Range("B4:H100").Name = "範囲2"
エクセルやアクセスで画面の描画を一時的に止める
どんな時に使う?
エクセルやアクセスで画面の描画を一時的に止めたい場合。
例えば以下のような場合が該当する。
- マクロ、VBA、クエリの処理時間が長い
- 大量のデータをループで読み込むなどで、描画の時間そのものが処理時間を長くしている
コード
エクセル
画面の描画を止める
Application.ScreenUpdating = False
画面の描画をする
Application.ScreenUpdating = True
アクセス
画面の描画を止める
Application.Echo False
画面の描画をする
Application.Echo True