MW211 EXIT

devlog
MSSQL/数値項目を文字列に変換する
2014年12月07日
【案1】キャストする
┌──────────────────────────────────────┐
│CAST([数値項目] AS varchar)                                                 │
└──────────────────────────────────────┘
  一番オーソドックスなやり方か。

【案2】型を変更する
┌──────────────────────────────────────┐
│CONVERT(varchar, [数値項目])                                                │
└──────────────────────────────────────┘
  これもオーソドックスなやり方か。

【案3】文字列に変更する
┌──────────────────────────────────────┐
│LTRIM(STR([数値項目]))                                                      │
└──────────────────────────────────────┘
  STR()で変換するのだが、左側に余計なスペースも入ってしまうので
  LTRIM()でこれを除去する。
分類:MSSQL
ExcelVBA/プルダウンで入力可不可
2014年12月06日
プルダウンメニュー(ComboBox)で、直接入力を可とするか否かの設定
┌────┬─────────────────────────────────┐
│入力可  │UserForm.ComboBox.Style = fmStyleDropDownCombo                    │
├────┼─────────────────────────────────┤
│入力不可│UserForm.ComboBox.Style = fmStyleDropDownList                     │
└────┴─────────────────────────────────┘
分類:ExcelVBA
WSH/実行パスにスペースが混じった場合
2014年12月05日
┌──────────────────────────────────────┐
│Dim objShell                                                                │
│Set objShell = WScript.CreateObject("WScript.Shell")                        │
│objShell.Run "~.exe"                                                       │
└──────────────────────────────────────┘
「WScript.Shell」の「Run」メソッドで実行ファイルのパスにスペースが
混じっていた場合、エラーとなってしまう。

画一的な解決策。
「""""」で囲う(実質「"」で囲ってことになる)。
┌──────────────────────────────────────┐
│objShell.Run """" & "~.exe" & """"                                         │
└──────────────────────────────────────┘
これなら、変数を介した時とかも画一的に対応できる。
分類:WSH・VBS
ExcelVBA/起動直後のブレークポイント
2014年12月04日
ExcelVBAでデバッグする時にブレークポイントを設定するが
「ThisWorkbook」などで起動直後に動作するプログラムに設定するのが難しい。
なぜなら、ブレークポイントは保存されず
エディタで設定しようとすると、エディタを起動するまでに動作済みとなるため
捕捉ができないからだ。

そんな時に便利なのが「Stop」命令。
┌──────────────────────────────────────┐
│Stop                                                                        │
└──────────────────────────────────────┘
プログラム中に記述して、保存すれば、起動時にそこで止まってくれるのだ。
いわば、ブレークポイントを保存する機能のようなもんだ。
分類:ExcelVBA
MSSQL/ユーザ関数の引数省略の罠
2014年12月03日
┌──────────────────────────────────────┐
│CREATE FUNCTION [dbo].[ユーザ関数] (@引数1 int,                             │
│                                    @引数2 int = 1)                         │
│:                                                                          │
└──────────────────────────────────────┘
上記(引数2)のように、引数を省略して既定値を活かす指定をした場合
「ユーザ関数(1)」でOKかと思いきやエラーとなる。
「ユーザ関数(1,DEFAULT)」と「DEFAULT」を明記してあげなければならないらしい。
分類:MSSQL
MSSQL/BULK INSERTによるCSV取込
2014年12月02日
一発でできる。すごい。
┌──────────────────┬───────────────────┐
│BULK INSERT [DB].[dbo].[表]         │                                      │
│    FROM 'ファイルフルパス'         │                                      │
│    WITH                            │                                      │
│    (                               │                                      │
│        FIELDTERMINATOR   = ',',    │区切り文字                            │
│        ROWTERMINATOR     = '\r\n', │改行文字                              │
│        FIRSTROW          = 2,      │明細開始行(ヘッダ行の有無)            │
│        LASTROW           = 0,      │明細終了行(フッタ行の有無) 0は末尾まで│
│        CHECK_CONSTRAINTS,          │制約をチェックする                    │
│        FIRE_TRIGGERS               │トリガを起動させる                    │
│    );                              │                                      │
└──────────────────┴───────────────────┘
分類:MSSQL
SQL/連続するデータにグループ番号
2014年12月01日
同じ属性が連続するものをグルーピングしたい場合のSQL。
  ○→1
  ○→1
  ×→2
  ×→2
  ○→3
┌──────────────────────────────────────┐
│SELECT 表.並び順,                                                           │
│       表.属性,                                                             │
│       COUNT(*) AS グループ番号                                             │
│    FROM 表                                                                 │
│        LEFT JOIN (                                                         │
│            SELECT 基準表.*                                                 │
│                FROM 表 AS 基準表                                           │
│                    LEFT JOIN 表 AS 直前表                                  │
│                      ON  直前表.並び順 = (SELECT MAX(並び順)               │
│                                               FROM 表                      │
│                                               WHERE 並び順 < 基準表.並び順)│
│                      AND 直前表.属性 <> 基準表.属性                        │
│                WHERE 基準表.並び順 = (SELECT MIN(並び順) FROM 表)          │
│                   OR 直前表.並び順 IS NOT NULL                             │
│        ) AS 境界                                                           │
│          ON 境界.並び順 <= 表.並び順                                       │
│    GROUP BY 表.並び順,                                                     │
│             表.属性                                                        │
│    ORDER BY 表.並び順 ASC;                                                 │
└──────────────────────────────────────┘
分類:SQL
前へ 1 2 3 次へ