Kazuki.io

プログラミングやITガジェットなどの備忘録だよ。人の役に立てばいいな。

SQL Server DECIMALの型定義外の数値扱いについて

久々にSQL ServerのDECIMAL型を使用したのでメモ。
特に型外の数値がDECIMAL変数に入ったときの挙動について

小数点桁数が大きい場合(下の最後の桁が5)

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 987654.565 --小数第三位が5
SELECT @decimal

四捨五入される。
987654.57

小数点桁数が大きい場合(下の最後の桁が4)

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 987654.564 --小数第三位が4
SELECT @decimal

同様に四捨五入される。
987654.56

DECLARE @decimal AS DECIMAL(8,2)
SET @decimal = 9876543.564 --整数部が7桁ある!
SELECT @decimal

算術オーバーフローが発生する。
f:id:kazukisaito:20180611112840p:plain

とにかくVBAでSQLのクエリを実行したい

「もうとにかく、VBAでSQL Serverのクエリ発行したんじゃ!」

 本当に時間がないけど、簡易ツールとしてVBAでクエリ発行したい時のメモ書き。

 

とりあえず次の手順を行えばOK。ある程度きれいな設計にしています。(本当か)

 

 

 

Visual Basicを開く

f:id:kazukisaito:20180526003633p:plain

 

DBAccessクラスモジュールを作る

Visual Basicの画面左側にあるプロジェクト上で右クリック > 挿入 > クラスモジュールを選択。

f:id:kazukisaito:20180526003900p:plain

 

作るとClass1ができる。F4キーでプロパティ開いて、「DBAccess」という名前にしておく。※お好きなお名前でどうぞ。

f:id:kazukisaito:20180526003728p:plain

 

DBAccessクラスのコードを書く

DBAccessのコードは次のようにする。

Execute Query from VBA

 

ボタンを配置

Excelシートに戻って…

開発タブ > 挿入 > ActiveXコントロールのボタンを選択!

f:id:kazukisaito:20180526005002p:plain

 適当な場所に配置!(マウスでお好きな場所をクリック)

f:id:kazukisaito:20180526005103p:plain

 

ボタンクリック時の動作を書く

ボタンをダブルクリック! するとVisual Basicの画面に遷移して、以下のコードが自動生成。

f:id:kazukisaito:20180526005310p:plain

 

さらにこう書く!

ExecuteQuery from VBA

 10行目のExecuteQuery()の中に実行したいクエリを書こう!

例えば、

ExecuteQuery("SELECT userId, userName FROM tblUser")

 

参照設定 

これはよく忘れるので注意!

Visual Basicのツール > 参照設定を選択。

f:id:kazukisaito:20180526010513p:plain

「Microsoft ActiveX Data Objects 2.8 Libary」を選択して、OKボタンをクリック。

f:id:kazukisaito:20180526010319p:plain

 以上で、SQL Serverにアクセスし、クエリを実行できるだろう。

とりあえず、今回はクエリを実行することだけに焦点をおき、その結果を変数に返すところまでは書いていない。

 

時間があったら書いておきます(^^)

 

 

 

 

Windows 10 April 2018 Updateでキーボード・マウスシェアUSBケーブルが使えなくなった

 今更ながら、本日開発メインで使用Windows10のWindows Updateを行いました。

更新前のWindows10のバージョンは以下の通り。Fall Creater Update 2017です。

f:id:kazukisaito:20180525234235p:plain

April 2018 Updateに必要な更新ファイルは知らないうちにダウンロードされており(記憶にないだけ?)、あとはインストールするだけでした。

f:id:kazukisaito:20180525234417p:plain

インストール自体はすぐに終わり、いざ使おうとすると2つの大きな問題にぶち当たりました。

 

アクティブなウィンドウから外れる

メールやインターネット検索、コーディングなんでもですが、文字を打っているとアクティブ(操作中)の画面から外れます。一時的にキー入力が無効になります。

 

以下のYahoo知恵袋にもありますが、高速スタートアップを無効にしても効果はありませんでした。そもそもWindows 10 の高速スタートアップは使用していなかったので。

detail.chiebukuro.yahoo.co.jp

 

キーボード・マウスシェアUSBケーブルが使えなくなった

これは私にとっては大打撃。

会社支給のPCと開発用PCとをこのケーブルでつないでおり、キーボードとマウス、クリップボードを共有しています。

これがないと仕事にならないのですが、チャタリング(有効になったり無効になったりを連続で何回も繰り返す)を起こし、使い物にならない状態になりました。

再起動などを試みても結果はダメでした。

 

結果

もとの1709のバージョンに戻しました。

以下の方法でWindowsをもとのバージョンに戻せるのですね。そういえばCドライブ直下にWindows_oldとかいうフォルダがあったような…

blogs.technet.microsoft.com

結果として、更新を断念したのですが、Windowsのバージョンを前に戻す機能があるとは知りませんでした。

それを知ることができただけでも良しとしますか。(^^)