空文字の配列

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

こちらが自然な気がする

XMLファイルを読み込むVBA

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

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

recordsetclone

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

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

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

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

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
知らなくても良さそうだが書いておきます。

VBAからExcelを操作2

前回の

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

VBAからExcelを操作

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

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

選択ソート 二次元配列

ついでに選択ソートも

QuickSort 二次元配列

もともとはDictionaryでソートする必要があったので配列のソートを調べたのでした
dictionaryに入っているkeyとitemを二次元配列にしてソートする
もっと良い方法があると思いますが・・とりあえず
関数化したけど要素で型変換必要なので意味がなかった

VBAで配列をソート テーブルを使う

テーブルに入れると言う手もあります
これが一番簡単
SQLserverとつながっているなら一時テーブルに入れ込む