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
MSSQL/文字列照合
2014年11月30日
┌──────────────────────────────────────┐
│SELECT 列                                                                   │
│    FROM 表                                                                 │
│    WHERE 列 = '値';                                                        │
└──────────────────────────────────────┘
文字列で照合をかけると意外にゆるいことに気づく。

厳密に比較するには「COLLATE」をつける。
┌──────────────────────────────────────┐
│SELECT 列                                                                   │
│    FROM 表                                                                 │
│    WHERE 列 = '値' COLLATE JAPANESE_CS_AS_KS_WS;                           │
└──────────────────────────────────────┘

パラメータの意味は以下のような感じ。
┌─┬───────────────┬─┬──────────────────┐
│CS│大文字・小文字を区別          │CI│大文字・小文字を区別しない          │
├─┼───────────────┼─┼──────────────────┤
│AS│アクセント・濁音・破裂音を区別│AI│アクセント・濁音・破裂音を区別しない│
├─┼───────────────┼─┼──────────────────┤
│KS│ひらがな・カタカナを区別      │  │                                    │
├─┼───────────────┼─┼──────────────────┤
│WS│全角・半角を区別              │  │                                    │
└─┴───────────────┴─┴──────────────────┘
分類:MSSQL
MSSQL/sqlcmdでファイル出力
2014年11月28日
sqlcmdでSQL結果をファイル出力するには、以下のような感じで実行すればよい。
┌──────────────────────────────────────┐
│sqlcmd -S . -Q "SET NOCOUNT ON SELECT * FROM 表;" -h -1 -W -o "出力先.txt"  │
│                                                                  >> log.txt│
└──────────────────────────────────────┘

特にポイントとなるのが以下の点。
┌───────┬──────────────────────────────┐
│-h -1         │列名見出しの抑止                                            │
├───────┼──────────────────────────────┤
│SET NOCOUNT ON│「(x行処理されました))」の抑止                              │
├───────┼──────────────────────────────┤
│-W            │固定長右端余白の除去                                        │
└───────┴──────────────────────────────┘
余計な装飾は除去しておこう。
分類:MSSQL
設計/横棒
2014年11月27日
数字の一とマイナスの違いぐらいはわかるけど、
他にもいろいろ紛らわしい文字があるのやら(文字コードはUTF-8)。

【全角半角変換ができるもの】(VBAの「StrConv(,vbNarrow)」「StrConv(,vbWide)」)
┌────┬─┬──────────┐  ┌────┬─┬──────────┐
│0xEFBC8D│-│全角ハイフンマイナス│⇔│    0x2D│- │半角ハイフンマイナス│
├────┼─┼──────────┤  ├────┼─┼──────────┤
│0xE383BC│ー│全角長音            │⇔│0xEFBDB0│ー │半角長音            │
└────┴─┴──────────┘  └────┴─┴──────────┘

【全角のみのもの】(半角変換ができないもの)
┌────┬─┬──────────┐
│0xE28090│‐│全角ハイフン        │
├────┼─┼──────────┤
│0xE28095│―│ホリゾンタルバー    │
├────┼─┼──────────┤
│0xE29480│─│罫線(細)            │
├────┼─┼──────────┤
│0xE29481│━│罫線(太)            │
├────┼─┼──────────┤
│0xE4B880│一│漢字(壱)            │
└────┴─┴──────────┘

【シフトJISにはないもの】(UTF-8)
┌────┬─┬──────────┐
│0xE28092│‒ │フィギュアダッシュ  │
├────┼─┼──────────┤
│0xE28094│— │半角ダッシュ        │
├────┼─┼──────────┤
│0xE28093│– │二分ダッシュ        │
├────┼─┼──────────┤
│0xE28892│− │半角マイナス        │
└────┴─┴──────────┘
分類:設計
前へ 1 … 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 … 156 次へ