MW211 EXIT

devlog
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
ExcelVBA/特定文字以降を除去
2023年02月24日
例えば「(」以降を除去する方法。いくつかある。
┌──────────┬───────────────────────────┐
│正規表現を用いる方法│Dim REG As Object                                     │
│                    │Set REG = CreateObject("VBScript.RegExp")             │
│                    │REG.Global = True                                     │
│                    │REG.Pattern = "\(.*$"                                 │
│                    │文字列 = REG.Replace(文字列, "")                      │
├──────────┼───────────────────────────┤
│文字位置を調べる方法│Dim 位置 As Long                                      │
│                    │位置 = InStr(1, 文字列, "(", vbTextCompare)           │
│                    │If (位置 > 0) Then                                    │
│                    │    文字列 = Left(文字列, 位置 - 1)                   │
│                    │End If                                                │
├──────────┼───────────────────────────┤
│配列を用いる方法    │文字列 = Split(文字列, "(")(1)                        │
└──────────┴───────────────────────────┘
分類:ExcelVBA
JavaScript/日付の判定
2023年01月06日
┌──────────────────────────────────────┐
│if (文字列 && !isNaN(new Date(文字列).getDate())) {                         │
│    ' 日付である                                                            │
│} else {                                                                    │
│    ' 日付でない                                                            │
│}                                                                           │
└──────────────────────────────────────┘
分類:JavaScript
GETパラメータ(3)いろいろ
2022年12月17日
いろいろあるようだ。

GETパラメータを書き換える方法。
┌──────────────────────────────────────┐
│history.pushState(null, null, '?key1=val1&key2=val2');                      │
├──────────────────────────────────────┤
│history.pushState(null, null, location.pathname + '?key1=val1&key2=val2');  │
├──────────────────────────────────────┤
│history.pushState(null, null, '?' + new URLSearchParams({                   │
│    'key1'  :'val1',                                                        │
│    'key2'  :'val2',                                                        │
│}).toString());                                                             │
├──────────────────────────────────────┤
│history.pushState(null, null, location.pathname + '?' + new URLSearchParams({
│    'key1'  :'val1',                                                        │
│    'key2'  :'val2',                                                        │
│}).toString());                                                             │
├──────────────────────────────────────┤
│const url = new URL(location.href.replace(/\?.*$/, ''));                    │
│url.searchParams.set('key1', 'val1');  // .append()でもOK                   │
│url.searchParams.set('key2', 'val2');  // .append()でもOK                   │
│history.pushState(null, null, url);                                         │
└──────────────────────────────────────┘

GETパラメータをクリアする方法。
┌──────────────────────────────────────┐
│history.pushState(null, null, location.pathname);                           │
├──────────────────────────────────────┤
│history.pushState(null, null, location.href.replace(/\?.*$/, ''));          │
└──────────────────────────────────────┘
分類:JavaScript
JavaScript/GETパラメータ(2)生成
2022年12月16日
(jQueryを用いているが)「id="id"」の値が変わった場合に
表示中のURLに埋め込む方法。
┌──────────────────────────────────────┐
│$('#id').on('change', function() {                                          │
│    //----------------------------------------------------------------------│
│    //  (案1)リロードする場合                                               │
│    //----------------------------------------------------------------------│
│    if ($('#id').val() == '') {                                             │
│        location.href = location.href.replace(/\?.*$/, '');                 │
│    } else {                                                                │
│        location.href = location.href.replace(/\?.*$/, '')                  │
│                      + '?id=' + encodeURI($('#id').val());                 │
│    }                                                                       │
│    //----------------------------------------------------------------------│
│    //  (案2)URLだけ書き換える場合                                          │
│    //----------------------------------------------------------------------│
│    if ($('#id').val() == '') {                                             │
│        history.pushState(null, null, location.pathname);                   │
│    } else {                                                                │
│        history.pushState(null, null, `?id=${encodeURI($('#id').val())}`);  │
│    }                                                                       │
│    //----------------------------------------------------------------------│
│});                                                                         │
└──────────────────────────────────────┘
これで、値を変更した場合に、URLも変化するので
そのURLを用いることができる。
分類:JavaScript
JavaScript/GETパラメータ(1)読込
2022年12月15日
URLの「~?id=値」もしくは「~&id=値」を読み込む関数。
┌──────────────────────────────────────┐
│function GetGetParam() {                                                    │
│    const params = location.search.substring(1).split('&');                 │
│    for (let i = 0; params[i]; i++) {                                       │
│        let kv = params[i].split('=');                                      │
│        if (kv[0] == 'id') {                                                │
│            return decodeURI(kv[1]);                                        │
│        }                                                                   │
│    }                                                                       │
│    return null;                                                            │
│}                                                                           │
└──────────────────────────────────────┘
これを表示時(初期処理)にて読み込んで処理を行えばよい。(以下はjQueryの場合)
┌──────────────────────────────────────┐
│$(function() {                                                              │
│    const param = GetGetParam();                                            │
│    if (param) {                                                            │
│        // 処理(param);                                                     │
│    }                                                                       │
│});                                                                         │
└──────────────────────────────────────┘
分類:JavaScript
MSSQL/文字列をいい感じで数値変換
2022年11月29日
JavaScriptのparseInt()のように、文字列込みの数値の文字列を
数値にいい感じで変換するには、TRANSLATE()を使えば実現できる。
けど、ちとめんどくさい。(もっといい方法がありそうだが)
例)「1個」→「1」
┌──────────────────────────────────────┐
│SELECT [文字列],                                                            │
│       CONVERT([int],                                                       │
│               REPLACE(TRANSLATE([文字列],                                  │
│                                 [除外文字],                                │
│                                 REPLICATE(' ', LEN([除外文字]))            │
│                       ),                                                   │
│                       ' ',                                                 │
│                       '')                                                  │
│       ) AS [数値]                                                          │
│    FROM (                                                                  │
│        SELECT [文字列],                                                    │
│               TRANSLATE([文字列],                                          │
│                         '0123456789',                                      │
│                         REPLICATE(' ', 10)) AS [除外文字]                  │
│            FROM (                                                          │
│                VALUES                                                      │
│('1個'),                                                                    │
│('全23セット')                                                              │
│            ) AS [表]([文字列])                                             │
│    ) AS [表]                                                               │
└──────────────────────────────────────┘
分類:MSSQL
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 156 次へ