またまたformat関数

四捨五入もしてくれるformatですが
VBAで
format(446/10,”0″)=45
なのですが
SQLserverでは
format(446/10,’0′)=44
なのです。

かなり慌てましたが
format(cast(446 as decimal)/10,’0′)=45 で 事なきを得ました。

データベース エンジンの復旧ハンドルの待機に失敗しました

Windows11にsqlserver2019をインストールすると上記のエラー
いろいろ原因はあるようですがわたしの場合はSSDのセクターサイズでした。

https://docs.microsoft.com/ja-jp/troubleshoot/sql/admin/troubleshoot-os-4kb-disk-sector-size

https://duke13.com/win11-locdb-problem

cmdでfsutil fsinfo sectorinfo SSDドライブ 
セクターサイズが32768byteもある
sqlserverは512と4096しか対応していならしい。

Windows7の時も4096のHDDが出てきてちょっと混乱したのを思い出しました。
修正あるまで待つか、レジストリいじるか、フォーマットからやりなおすか、HDDにインストか

その後SSDを

セクターあたりのバイト数 : 512
物理セクターあたりのバイト数 : 4096
クラスターあたりのバイト数 : 4096 (4 KB)
でフォーマットしてやり直しても同じエラー

さらにレジストリを追加してやっとインストできました

空文字の配列

array(“”,””)は配列
array(“”)も配列

split(“,”,”,”)は配列

なので
split(“”,”,”)=array(“”)
でこれも配列と思いきやさにあらず。

split(“”,”,”)は空配列

selectした結果でupdate; accessの場合

以前

update tableA set
columnA=tableB.columnB
from tableA
inner join tableB
on tableA.ID=tableB.ID

とクエリ書いたけど、これはaccessのクエリでは通用しなかった。
sqlserverとは違うようです。

accessでは

update tableA inner join tableB on tableA.ID=tableB.ID
set
columnA=tableB.columnB

こちらが自然な気がする

Bluetooth コード45

突如、pcからbluetoothが消えてデバイスマネージャーにも出なくなる。
エラーコードは45で結構みなさん遭遇しているようです。
いろいろ調べて試したけど復旧できず、OSクリーンインストールまでしたけど出てこない。
CMOSクリアでやっと解決しました。

簡単なのに、、、最初にやるべきでした。

XMLファイルを読み込むVBA

access VBA 遅延バインディング でとなると難しいです
https://vbaexcel.slavesystems.com/vba/?p=603 を参考にさせてもらい、accessのVBAなので二次元配列にノード名と値を入れ込む

再帰プロシージャ、難しい。

ヒントテキスト出ない件

accessフォームで動的ヒントテキストというものを使ったのですが、以前書いた通り開発機のみで表示されない件について。
その後フォームをよく見ているとカーソルが微妙に点滅しているのに気が付きました。
ひょっとしてと思って例の高DPI設定を変更すると表示されるようになりました。

WSUS WIDからSQL server expressへ移行 覚え書き

ドメコンのままでは難しくてできなかった
降格した後AD削除
SQL server express インスト
サーバ名 \\.\pipe\microsoft##wid\tsql\query のWIDからSUSDBデタッチ
expressの新しいインスタンスにアタッチ
新しいログイン NT AUTHORITY\NETWORK SERVICE サーバロール publicとsysadmin ユーザーマッピング SUSDBにpublicとwebservice

以下はregeditで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup
SqlServerName は インスタンス名
SqlDatabaseName は SUSDB
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\Installed Role Services
UpdateServices-WID を UpdateServices-Database に変更

なぜ移行したというとSSMSでデータ圧縮とかインデックス再構築とかやりたかったから。
ここまで来てexpressではできないことが判明

でもクエリではできるらしい。
クエリ例
dbcc shrinkdatabase(susdb,10)
exec sp_MSforeachtable @command1=’if object_id(”susdb.?”) is not null dbcc DBREindex(”susdb.?”);’

難しかった

recordsetclone

先日、accessのフォームを作成中
表示されたデータでテーブルを更新しようと・・。

ソースのクエリが複雑で面倒くさい。
フォームの値をそのまま使おうと、こういう時はme.recordsetだよなと・・

しかし動作時にカーソルが動きすぎてみっともない。で、この時ハッとrecordsetcloneてこういう時のためににあるのかな?と気が付きました。

違っているかもしれないですが書き留めておきます。