Access VBA 帳票レコード削除

フォームの帳票表示のレコードを消したい場合
下記のVBAにて対応可能。帳票の各レコードに削除ボタンを設置する。

Private Sub Bレコード削除_Click()

If MsgBox(“削除しますか?”, vbCritical + vbOKCancel) = vbOK Then
DoCmd.RunCommand acCmdDeleteRecord
MsgBox “削除を完了しました。”
Else
MsgBox “削除を中止しました。”
End If

End Sub

SQLserver リレーションシップ

SQLserverのリレーションシップってどうやるの?

調べると、リレーションシップという言葉自体が違くて、「データベースダイヤグラム」ってところに設定するらしい。

その上で右クリックして、「新しいデータベースダイヤグラム」ってのをやると、テーブルを選択する画面が出現する。

あとは、Accessとにている。テーブルを追加して、キーとなる項目を結合させる。

ところが、Accessでテーブルをフォームから接続して、追加はできたが、削除ができない。つまり、SQLserverの方で拒否っているようだ。

ということで調べると、データベースダイヤグラムのテーブル同士を接合している線上で、プロパティで開き

[INSERT および UPDATE の指定] ってのがあるので、そこで、更新ルール、削除ルールってのがあるので、削除ルールの方を「重ねて表示」に選択したら、メインテーブルのレコードを削除したら、リレーションされている子テーブルのレコードも削除することができた。

削除ルールの設定内容は、下記のようなことです。ちょっと説明自体が分かりにくい。

[動作なし] 削除操作が許可されていないことをユーザーに通知するエラー メッセージが出力され、DELETE がロールバックされます。
[重ねて表示] 外部キー リレーションシップに関係するデータを含む行がすべて削除されます。
[Null に設定] テーブルのすべての外部キー列が null 値を使用できる場合、null 値が設定されます。 SQL Server 2005 および SQL Server 2008 にのみ適用されます。
[既定値の設定] テーブルのすべての外部キー列に既定値が定義されている場合、既定値が設定されます。 SQL Server 2005 および SQL Server 2008 にのみ適用されます。

更新ルールの設定内容は、

[動作なし] 削除操作が許可されていないことをユーザーに通知するエラー メッセージが出力され、DELETE がロールバックされます。
[重ねて表示] 外部キー リレーションシップに関係するデータを含む行がすべて削除されます。
[Null に設定] テーブルのすべての外部キー列が null 値を使用できる場合、null 値が設定されます。 SQL Server 2005 および SQL Server 2008 にのみ適用されます。
[既定値の設定] テーブルのすべての外部キー列に既定値が定義されている場合、既定値が設定されます。 SQL Server 2005 および SQL Server 2008 にのみ適用されます。

バッチファイルで、” を削除する

CSVファイルからSQLserverにインポートするときに、ダブルコーテーションが邪魔をする場合がある。

その時、下記のバッチファイルを実行させれば、すべてのダブルコーテーションを削除して整えてくれる。

@echo off
if “%1″==”” goto end
set fname=%1
copy %fname% org >nul
type nul >%fname%
for /f %%a in ( org ) do (set line=%%a&& call :sub)

del org
goto end

:sub
set l=%line:”=%
>>%fname% echo %l%
goto :EOF

:end

バッチファイル後ろに変換したいファイルを入れてDOSプロンプトから実行させると変換される。

Access 重複レコードの削除

111 せんべい 塩
222 飴    コーヒー
333 アイス  チョコ
111 せんべい 塩
111 せんべい 塩
333 アイス  チョコ

などのデータの重複を削除したい場合がある。

111 せんべい 塩
222 飴    コーヒー
333 アイス  チョコ

どうしたらいいのか?

(1)普通に選択クエリーで作成
(2)クロス集計を選択 ※いちど選択すると集計でグループ化という項目がでる。
(3)クロス集計から、普通の選択クエリーにもどす。

これで、重複がなくなる。直接元データをいじる事ができないので、いったん、テーブル作成クエリにして、テーブルとして吐き出してから、元テーブルデータを変更するなり、その新テーブルを利用するなりした方がいい。

強制パーテーション削除(DELL)

「ファイル名を指定して実行」に “diskpart” と入力
“list disk[Enter]”と入力し、ディスク一覧を表示。EISA領域が存在するディスクの番号を確認する。
“select disk 番号[Enter]”でディスクを選択。
“list partition[Enter]”と入力し、今度はEISA領域のパーティション番号を確認。
“select partition 番号[Enter]”でEISA領域のパーティションを選択
“delete partition[Enter]”でパーティションを削除

実際はこれで回復しました。
BIOS の Drives -> SATA Operation 内の
RAID Autodetect/AHCI を RAID Autodetect/ATA に変更

SQL Server2014 Expressインストール

まったくSQLサーバーの事など知らない私が、数か月で社内のシステムを構築できるのだろうか?

しかし、やらなければならない状況なら人間は何だってできるはず。やってやりますよ。プロになってやる。
ってなことで、無料版のSQL Server2014 Expressってのマイクロソフトサイトからダウンロードしてインストールした。
ファイルも4タイプ程あり、SQL Server2014 Express  with toolってを選んだ。

OSは、Windows1032bit です。まったく訳もわからず、とにかくインストール。最初に、仕様で、.NET Framework 4が必要とのことで、インストール後、SQLサーバーの方をインストール。途中、

●インスタンスIDってのを聞かれたので、デフォルトで、「SQLEXPRESS」って入っていたので、JOYってのをくっつけて、SQLEXPRESSJOYにした。

●認証モードってのも聞かれたので、Windows 認証モードのままインストールした。
しかし、後になぜか、SQLサーバーに接続できなかったので、SQL Server Management Studioから、認証モードを変更して、混合モードに変えた。

この違いは何なのか?

Windows認証の方は、簡単にSQLサーバーに接続できる分、たぶん、WindowServerを構築して、ドメインコントローラーってところから、ユーザーを許可するようだ。

ところが、混合モードでは、SQL Server認証(IDとPW)で接続可能になる為、クライアント側も、Windows Professional版などのOSじゃなくても接続可能になるようだ。

もしかしたらもっと深い違いがあるかもしれないので、違ったら後ほど修正をします。とにかく今回は、動くまでのインストール

 

インストール後、データベースが動いているかどうかのチェック コマンドプロンプトで

C:¥>sqlcmd
1>

これがでれば接続されているらしい。

途中、PC(サーバーPC)のコンピュータ名を変えてしまったら、実験で作った新規のデータべースが削除できなくてゴミになってしまったのが気に食わなく時間を費やした。

 

●次に新規にデータベースを作成しようとして、オブジェクトエクスプローラーのデータベース上で右クリックして、「新しいデータベース」をクリックして、適当なデータベース名をつけて、作成するとエラーがでる。どうも権限が違うとおこられているようだ。(エラー262)

調べてみると、Windows認証でログインするとできるというので、ログインしなおすとできた。また、その時に、saのパスワードも設定して、SQL server認証時にsaでログインしても問題なく作成できることがわかった。でも、新規に作成したログインユーザーでは、ログインできず。後日調査することにする。

下の画像は、2014じゃないけど、同じような画面なので参考に。

KB101201_01_2 KB101201_01_3 KB101201_01_4 KB101201_01_5 KB101201_01_7