MW211 EXIT

devlog
Excel関数/掛け算の合計
2023年11月15日
┌──┬──┬──────┐
│単価│数量│    金額    │
├──┼──┼──────┤
│A1  │B1  │=A1*B1      │
├──┼──┼──────┤
│A2  │B2  │=A2*B2      │
├──┼──┼──────┤
│A3  │B3  │=A3*B3      │
└──┼──┼──────┤
      │合計│=SUM(C1:C3) │
      └──┴──────┘
上記のようなことを一発で行う方法。
┌──┬────────────┐
│合計│=SUMPRODUCT(A1:A3,B1:B3)│
└──┴────────────┘
分類:Excel
PowerShell/実行ポリシー
2023年11月14日
【実行ポリシー】(スクリプトの許可禁止)
┌────────────────────┬─────────────────┐
│PowerShell -ExecutionPolicy Restricted  │全禁止          (クライアント既定)│
├────────────────────┼─────────────────┤
│PowerShell -ExecutionPolicy AllSigned   │署名が必要                        │
├────────────────────┼─────────────────┤
│PowerShell -ExecutionPolicy RemoteSigned│端末のものは許可      (サーバ既定)│
│                                        │ダウンロード分は署名が必要        │
├────────────────────┼─────────────────┤
│PowerShell -ExecutionPolicy Unrestricted│ダウンロード分のみ警告あり(非推奨)│
├────────────────────┼─────────────────┤
│PowerShell -ExecutionPolicy Bypass      │全許可                    (非推奨)│
└────────────────────┴─────────────────┘
  ダウンロードとは、インターネットからのダウンロードのこと
分類:PowerShell
MSSQL/インデックスをとなりのDB…にはできない
2023年11月01日
Q.インデックスをテーブルのあるDBとは別のDBにはることができるか?
    (インデックス領域を別DBに移し、領域の効率化をはかる)
A.できない
┌──────────────────────────────────────┐
│CREATE NONCLUSTERED INDEX [索引] ON [DB1].[dbo].[表] …                     │
└──────────────────────────────────────┘
    上記を[DB2]で実行して、[DB1]上でインデックスがはられる
    ([DB1]で実行したのと同じ結果になる)
    また、下記のような指定もできない
┌──────────────────────────────────────┐
│CREATE NONCLUSTERED INDEX [DB2].[dbo].[索引] ON [DB1].[dbo].[表] …         │
└──────────────────────────────────────┘
分類:MSSQL
MSSQL/インデックスの違い
2023年10月31日
┌────────────┬─────────────────────────┐
│クラスタ化インデックス  │(基本的に)主キー(*1)、テーブルに一つのみ設定可能  │
│                        │実データがその並びになるので検索は爆速            │
│                        │*1:敢えて主キーを非クラスタ化し                  │
│   PRIMARY KEY CLUSTERED│    他インデックスにクラスタ化を譲ることも可能    │
├────────────┼─────────────────────────┤
│非クラスタ化インデックス│一般的なインデックス(クラスタ化以外のインデックス)│
│                        │実データとは別に検索列と行ポインタの並びを保存する│
│      NONCLUSTERED INDEX│更新時に時間がかかり、インデックスサイズを消費する│
├────────────┼─────────────────────────┤
│カバリングインデックス  │インデックスに検索列以外に参照列も含めて          │
│複合インデックス(の活用)│行を参照することなくインデックス内で参照を完結させ│
│                        │検索を高速化する手法(参照列は検索列と相違なし)    │
│                  ON (,)│但し、その分インデックスサイズが肥大化する        │
├────────────┼─────────────────────────┤
│付加列インデックス      │カバリングインデックスのサイズを削減したもの      │
│             INCLUDE (,)│参照列を検索列と分ける(参照専門にする)ことで実現  │
└────────────┴─────────────────────────┘
分類:MSSQL
MSSQL/容量確認
2023年10月30日
┌──────────────────────────────────────┐
│EXECUTE sp_spaceused;                                                       │
└──────────────────────────────────────┘
上記をDBにて実行すると、以下の結果が取得できる。
┌─────────┬─────────┬─────────┐
│database_name     │database_size     │unallocated space │
├─────────┼─────────┼─────────┤
│(DB名)            │①       xxxx.xxMB│②       xxxx.xxMB│
└─────────┴─────────┴─────────┘
┌───────┬───────┬───────┬───────┐
│reserved      │data          │index_size    │unused        │
├───────┼───────┼───────┼───────┤
│③      xxxxKB│④      xxxxKB│⑤      xxxxKB│⑥      xxxxKB│
└───────┴───────┴───────┴───────┘

実体ファイル(のサイズ)との関係は以下の通り
・データ「(DB名).mdf」  =②+③  (なお、③=④+⑤+⑥)
・ログ「(DB名)_log.ldf」=①-(②+③)

つまり
・①=データ「(DB名).mdf」+ログ「(DB名)_log.ldf」
  →プロパティに表示される「サイズ」も①である
分類:MSSQL
VBScript/VBS自身の位置
2023年09月07日
WSHのCurrentDirectoryでもいけそうなのだが…
┌──────────────────────────────────────┐
│Dim objWSH                                                                  │
│Set objWSH = WScript.CreateObject("WScript.Shell")                          │
│MsgBox objWSH.CurrentDirectory                                              │
└──────────────────────────────────────┘
他から呼ばれた場合(*1)に、呼ばれた場所が採用されてしまう。

そのファイル自身の位置を取得するには以下がよい。
┌──────────────────────────────────────┐
│Dim objFSO                                                                  │
│Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")             │
│MsgBox objFSO.getParentFolderName(WScript.ScriptFullName)                   │
└──────────────────────────────────────┘

*1:コマンドプロンプトから実行した場合など
┌──────────────────────────────────────┐
│cscript //nologo VBSCriptファイル.vbs 引数                                  │
└──────────────────────────────────────┘
分類:WSH・VBS
PowerAutomate/VBScriptファイルの実行
2023年09月03日
(「アクション」の)「スクリプト」における
「VBScriptの実行」よりも「DOSコマンドの実行」の方がよさそうだ。
(「VBScriptの実行」はファイル実行というよりも直接コードを書く場合向け)

内容的には以下のようなコマンドを記述すればよい。
┌──────────────────────────────────────┐
│cscript 絶対パス\VBScript.vbs 引数1 引数2…                                 │
└──────────────────────────────────────┘
「cscript」コマンドでVBScriptファイルを実行する感じだ。
なお、事前にコマンドプロンプトで直接実行してみて動作確認しておいた方がよい

なお、「VBScript.vbs」(仮名)のある位置(パス)を
VBScript上で取得する場合には注意が必要

┌──────────────────────────────────────┐
│Dim gWSH: Set gWSH = WScript.CreateObject("WScript.Shell")                  │
│gWSH.CurrentDirectory                                                       │
└──────────────────────────────────────┘
上記だと、直接VBScriptファイルを実行した場合には問題ないが、
「cscript」コマンドで実行した場合だと
それを実行したフォルダの位置となってしまう

こっちだと、VBScriptファイルのある位置(つまり絶対パス)が取得できる
┌──────────────────────────────────────┐
│Dim gFSO: Set gFSO = WScript.CreateObject("Scripting.FileSystemObject")     │
│gFSO.getParentFolderName(WScript.ScriptFullName)                            │
└──────────────────────────────────────┘
分類:PAD(RPA)
VBScript/ArrayListが使えない
2023年08月30日
配列を簡単に使えるArrayListだが、一部の環境では使えない場合がある。
#「.Net Framework 3.5」が必要だったりするようだが

使えるかどうかを確認するのは以下のような感じのVBScriptを実行すればよい。
┌──────────────────────────────────────┐
│Dim theArray                                                                │
│Set theArray = CreateObject("System.Collections.ArrayList")                 │
│Call theArray.Add("Array")                                                  │
│Call theArray.Add("List")                                                   │
│Call theArray.Add("が使えるよ!")                                           │
│MsgBox Join(theArray.ToArray(), "、")                                       │
└──────────────────────────────────────┘
使えない場合はエラーが発生する。
分類:WSH・VBS
MSSQL/ストアドプロシージャでSQL文出力
2023年05月17日
ストアドプロシージャでSQL文を出力する方法。

例えば、以下のような感じでSQL文を編集して、実行できたりする。
┌──────────────────────────────────────┐
│CREATE PROCEDURE [dbo].[PROCEDURE_テスト]                                   │
│AS                                                                          │
│BEGIN                                                                       │
│    DECLARE @sql    [nvarchar](max);                                        │
│    SET @sql = 'SELECT ' + CHAR(39) + '結果' + CHAR(39) + ';';              │
│    EXECUTE (@sql);                                                         │
│END;                                                                        │
│--→出力されるのは「結果」一行                                              │
└──────────────────────────────────────┘
EXECUTE()のところを、直接SQL文に置き換えてもOK

以下のような感じで実行する。
┌──────────────────────────────────────┐
│EXEC [dbo].[PROCEDURE_テスト];                                              │
└──────────────────────────────────────┘

スドアドファンクションのように、他SQL文との連携に融通は利かないが
Power BIでもSQL文指定でテーブルに値をひっぱってきたりできるし
PHPでもPDOで連想配列にひっぱってきたりできる。
分類:MSSQL
SQL/FULL JOINの並列と直列
2023年03月29日
┌──┬───────────────────────────────────┐
│並列│SELECT COUNT(*)                                                       │
│    │    FROM 表1                                                          │
│    │        FULL JOIN 表2                                                 │
│    │          ON 表2.キー = 表1.キー                                      │
│    │        FULL JOIN 表3                                                 │
│    │          ON 表3.キー = 表1.キー                                      │
├──┼───────────────────────────────────┤
│直列│SELECT COUNT(*)                                                       │
│    │    FROM 表1                                                          │
│    │        FULL JOIN 表2                                                 │
│    │            FULL JOIN 表3                                             │
│    │              ON 表3.キー = 表2.キー                                  │
│    │          ON 表2.キー = 表1.キー                                      │
└──┴───────────────────────────────────┘
FULL JOINで2つ以上の表を上記のように、
並列につないだ場合と直列につないだ場合の違いについて。

以下のように違ってくる。
┌──┬───────────────────────────────────┐
│並列│WITH [表1] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (1, 'A'),                                     │
│    │                        (2, 'B')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     ),                                                               │
│    │     [表2] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (3, 'C'),                                     │
│    │                        (4, 'D')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     ),                                                               │
│    │     [表3] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (1, 'E'),                                     │
│    │                        (2, 'F')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     )                                                                │
│    │SELECT *                                                              │
│    │    FROM [表1]                                                        │
│    │      FULL JOIN [表2]                                                 │
│    │        ON [表2].[キー] = [表1].[キー]                                │
│    │      FULL JOIN [表3]                                                 │
│    │        ON [表3].[キー] = [表1].[キー]                                │
│    │--→4件                                                               │
├──┼───────────────────────────────────┤
│直列│WITH [表1] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (1, 'A'),                                     │
│    │                        (2, 'B')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     ),                                                               │
│    │     [表2] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (3, 'C'),                                     │
│    │                        (4, 'D')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     ),                                                               │
│    │     [表3] AS (                                                       │
│    │         SELECT *                                                     │
│    │             FROM (                                                   │
│    │                 VALUES (1, 'E'),                                     │
│    │                        (2, 'F')                                      │
│    │             ) AS [表]([キー], [値])                                  │
│    │     )                                                                │
│    │SELECT *                                                              │
│    │    FROM [表1]                                                        │
│    │      FULL JOIN [表2]                                                 │
│    │          FULL JOIN [表3]                                             │
│    │            ON [表3].[キー] = [表2].[キー]                            │
│    │        ON [表2].[キー] = [表1].[キー]                                │
│    │--→6件                                                               │
└──┴───────────────────────────────────┘
分類:SQL
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 156 次へ