Symbols

最近のwindowsはsymbolなしでdebugできると書いたけど違っていました。

巨大なデータはどこに?と見てみるとちゃんと C:\symbols が知らぬ間にできてました

format関数(3回目ぐらい)

format関数はvba、SqlServer、VB.netにありますが少し入力値に違いありです

vbaは文字でも数字でも日付型でも良いみたい
format(“41″,”000”) は041
だけど
SqlServer、VB.netの入力値は数字または日付型のみ許されるようです。
sqlserverでは
format(cast(’41’ as int),’000′)
としないと思った通りに返ってこない

知らなかったがVBAで
strconv(“abc”,vbUpperCase) は ABC だけど
format(“abc”,”>”)  も ABC
知らなくても良さそうだが書いておきます。

Sqlserverエラー行番号

ストアドでエラー行とSSMSのストアド編集画面の行番号にズレがある。
その前に、表示はv17.5でツール、オプション、ダイアログ中の、テキスト エディタ、全ての言語、全般の中の行番号をチェック

話戻って、SSMSでクエリ発行 sp_helptext ストアドプロシージャ名
の行番号を見る

値が合格でも明示的変換できないこともある

SqlServerのトリガーをいじって大失敗

select columnA= case when columnA is null and columnB(datetime)>cast(columnC(decimal) as datetime) then

として大失敗。columnCの値は20200101などdate型として通用するんですがなぜかdecimal型なんです。
一度文字型にしてから日付型へ変換が必要でした。

https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/data-type-conversion-database-engine?view=sql-server-ver15 からです
decimalからdatetimeは暗黙的変換なら可能になっているけど明示的変換はできない?
まあ、いくら値の評価が合格でも不可能な型変換がある事を学びました。

ACCESSのレコードロック

バックエンドSQLserver リンクテーブルでaccessのクエリでフォーム作成している。
クエリのレコードロックを全部にすると他者はレコードを見ることもできない。
編集レコードロックはロックしないと同じ挙動。

Accessのエディターのフォント

MSACCESSのツール、オプションからエディタの設定でフォントを変えようとすると

フォントを選ぶコンボボックスの矢印が隠れて出てこない。
4Kディスプレイの高DPIスケーリング問題が原因のようです。解像度を一度落とすか、MSACCESS.EXEのプロパティ、互換性、高DPI設定の変更、スケーリングを上書きのところシステムにしてチェック入れる。

VB.NETのイミディエイトウィンドウのインテリセンスが不安定?

ソリューションを開く、イミディエイトウィンドウを開く、入力してもインテリセンスは出ない。
ブレークポイントなど置いてステップイン、エディターがデバッグモードになるとインテリセンスが出る。
その後はデバッグ中止して、普通の状態でも出る。
一度ソリューションを閉じて開く、デバッグ開始しなくても出る。
もう一度閉じて開くと出なくなる。
IDE再起動はもちろん出なくなる。

シンボルをローカルに置いても同じ症状。
4Kモニターのスケーリングを変えても同じ。

あまり困ることはないけど気になります。
visual studio2019で win10でもwindows server2019でも同様です。 

VBAからExcelを操作2

前回の

この部分耐えがたい遅さです。
vb.netの二次元配列はまあまあ我慢できますがVBAはデータが多くなるとだめです。
一次元目の要素(項目数)が少なければ一次元配列を並べた方が速いです。
さらに速いのはレコードセットから直接ループさせつつ書き込む。
すごく速いのでvb.netもデータテーブルから直接書き込むようにしました。
プロセスも今の所残っていません。コードが冗長になりますけど。

VBAからExcelを操作

VBAからもできるでしょうと思ったけど・・

今までは意識してなかったけどVBAではオブジェクト解放は要らない?
プロセスは残らないが・・
とりあえずset=nothingで安心することに。

vb.net から Excel を操作 2

前回の続きです。
excelを開いて、あるワークシートのコピーを最前列に追加、
適当なセルから順に配列の値を流し込んで保存して閉じる。

難しい