MW211 EXIT

devlog
Smarty/変数未定義補填
2018年05月10日
┌──────────────────────────────────────┐
│{if $is他条件}{assign var="変数" value="0"}{/if}                            │
│                                                                            │
│{$変数}                                                                     │
└──────────────────────────────────────┘
上記のような場合、「$is他条件」が「false」だと、
「$変数」が未定義となりエラーとなる。
「Notice:  Undefined index: 変数 in ~」

こういった場合には、以下のように「isset()」で存在を判定して
補填してあげればよい。
┌──────────────────────────────────────┐
│{if !isset($変数)}{assign var="変数" value="0"}{/if}                        │
└──────────────────────────────────────┘

こんな感じになる
┌──────────────────────────────────────┐
│{if $is他条件}{assign var="変数" value="0"}{/if}                            │
│                                                                            │
│{if !isset($変数)}{assign var="変数" value="0"}{/if}                        │
│{$変数}                                                                     │
└──────────────────────────────────────┘
分類:Smarty
Smarty/変数
2018年05月09日
Smartyテンプレート中で変数を定義して使用する方法は以下の通り。
┌────┬─────────────────────────────────┐
│値の代入│{assign var="変数" value="値"}                                    │
├────┼─────────────────────────────────┤
│値の出力│{$変数}                                                           │
└────┴─────────────────────────────────┘
値を代入する時には「$」が要らない点に注意。

値を代入する際に、別変数を参照する場合には、{}をネストしてもよいし
そのまま変数を直書きしてもよい。
なお、{}の代わりに``も使える。
┌────┬─────────────────────────────────┐
│値の代入│{assign var="変数" value="$別変数"}                               │
├────┼─────────────────────────────────┤
│値の代入│{assign var="変数" value="{$別変数}"}                             │
├────┼─────────────────────────────────┤
│値の代入│{assign var="変数" value="`$別変数`"}                             │
└────┴─────────────────────────────────┘

なお、修飾子(escape修飾子など)をつける場合には、囲いが必要。
┌────┬─────────────────────────────────┐
│値の代入│{assign var="変数" value="{$別変数|escape}"}                      │
├────┼─────────────────────────────────┤
│値の代入│{assign var="変数" value="`$別変数|escape`"}                      │
└────┴─────────────────────────────────┘
囲わずに直書きすると、変数+「|escape」という文字列に解釈されてしまう。
分類:Smarty
Smarty/置換
2018年05月08日
下記のような感じで置換ができる。
┌──────────────────────────────────────┐
│{$変数|replace:'置換前':'置換後'}                                           │
└──────────────────────────────────────┘

他との併用も可能。
┌──────────────────────────────────────┐
│{$変数|replace:'置換前':'置換後'|escape}                                    │
└──────────────────────────────────────┘

なお、あくまでPHP上で置換するので、「\→\\」の置換は以下のように倍になる。
┌──────────────────────────────────────┐
│{$変数|replace:'\\':'\\\\'}                                                 │
└──────────────────────────────────────┘
分類:Smarty
Smarty/出力結果を変数に格納
2018年05月07日
┌──────────────────────────────────────┐
│$smarty = new Smarty;                                                       │
│$smarty->display('テンプレート.tpl');                                       │
└──────────────────────────────────────┘
通常は、上記のように出力するのだが、
どういう結果なのかログで確認したりしたくて変数に代入したい場合。

display()をfetch()に切り替えてあげればよい。
┌──────────────────────────────────────┐
│$smarty = new Smarty;                                                       │
│$変数 = $smarty->fetch('テンプレート.tpl');                                 │
└──────────────────────────────────────┘
分類:Smarty
JavaScript/setTimeout()とclearTimeout()
2018年05月01日
┌──────────────────────────────────────┐
│var gタイマID = false;                                                      │
│var g周期ミリ秒 = 1000;                                                     │
│$(function() {                                                              │
│    $('#停止ボタン').on('click', function() {                               │
│        if (gタイマID !== false) {                                          │
│            clearTimeout(gタイマID);                                        │
│            gタイマID = false;                                              │
│        }                                                                   │
│    });                                                                     │
│    $('#再開ボタン').on('click', function() {                               │
│        gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);            │
│    });                                                                     │
│    // タイマ起動                                                           │
│    gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);                │
│});                                                                         │
├──────────────────────────────────────┤
│function タイマイベント関数() {                                             │
│    // (処理)                                                               │
│    // 次の周期                                                             │
│    gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);                │
│}                                                                           │
└──────────────────────────────────────┘
分類:JavaScript
Excel/テキストボックスの印刷がずれる
2018年04月24日
この場合、以下をあたってみよう

右クリックメニュー「図形の書式設定」を起動
「プロパティ」を左メニューより選択し(その上部で)以下を選択
┌──────────────────────────────────────┐
│オブジェクトの位置関係  ──────────────────────────│
│  ●セルに合わせて移動やサイズを変更する                                    │
│  ○セルに合わせて移動するがサイズ変更はしない                              │
│  ○セルに合わせて移動やサイズ変更をしない                                  │
│──────────────────────────────────────│
└──────────────────────────────────────┘
分類:Excel
数学/様々な値の総称
2018年04月06日
?の部分はなんというのだろう?
┌───┬───┬───┬───┐
│現在値│      │      │      │
├───┼───┼───┤      │
│平均値│      │      │      │
│中央値│      │      │      │
│最頻値│      │      │  ?  │
├───┼───┤代表値│      │
│最小値│      │      │      │
├───┤ 極値 │      │      │
│最大値│      │      │      │
└───┴───┴───┴───┘
分類:設計
プログラムのインストール
2018年03月28日
【インストールレベル】
  (a) 実行ファイルを置くだけ(設定ファイルも近くに置く)
  (b) パス(環境変数PATH)を書き換える
  (c) レジストリを書き換える(コンテキストメニューの追加など)
【インストール先】
  標準的なインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │C:\Program Files      │64bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  ├───────────┼────────────────────────┤
  │C:\Program Files (x86)│32bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  └───────────┴────────────────────────┘
  任意のインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │D:\Program Files      │64bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │D:\Program Files (x86)│32bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │C:\(プログラム名)     │独自のプログラム配置先                          │
  │                      │・セキュリティを気にしたくない場合              │
  ├───────────┼────────────────────────┤
  │C:\apps               │ちょっとしたプログラムの配置先                  │
  │C:\tools          など│                                                │
  └───────────┴────────────────────────┘
  ちなみにアンインストール時にインストール先のフォルダが
  まるごと削除される場合があるので、
  異なるプログラム同士でのフォルダの共用は避けた方がよい
分類:Windows
ExcelVBA/範囲の値コピー最速
2018年03月24日
配列を介するのがよいようだ。
配列は二次元配列となるが、Variant型配列にすれば手軽に使える。

「入力」シートの左上3×3を、「出力」シートの左上3×3に値コピーする処理は
以下のような感じになる
┌──────────────────────────────────────┐
│Dim 配列 As Variant                                                         │
│With ThisWorkbook.Worksheets("入力")                                        │
│    配列 = Range(.Cells(1, 1), .Cells(3, 3)).Value                          │
│End With                                                                    │
│With ThisWorkbook.Worksheets("出力")                                        │
│    Range(.Cells(1, 1), .Cells(3, 3)) = 配列                                │
│End With                                                                    │
└──────────────────────────────────────┘

配列を介さず直接値コピーすることも可能。
┌──────────────────────────────────────┐
│Range(.Cells(4, 4), .Cells(6, 6)) = Range(.Cells(1, 1), .Cells(3, 3)).Value │
└──────────────────────────────────────┘
この方式では、異なるシート間でもコピーは可能だが
記述が煩雑となるので、異なるシート間の場合は、
配列を介した方がわかりやすいであろう
┌──────────────────────────────────────┐
│Range(出力シート.Cells(4, 4), 出力シート.Cells(6, 6)) _                     │
│= Range(入力シート.Cells(1, 1), 入力シート.Cells(3, 3)).Value               │
└──────────────────────────────────────┘
なお、配列に代入する際には「.Value」を省略できるが
範囲から範囲へ代入する場合には省略すると
値がコピーされない(何も起きない)ので注意。
分類:ExcelVBA
PowerBI/複合キーの結合
2018年03月19日
たぶん、VLOOKUP関数が複合キーに対応していないように
PowerBIのリレーションシップも複合キーに対応していないようだ。

ひとまず、VLOOKUP関数で複合キーに対応する方法に則って対処すると
各キーを文字列結合した新たな列を設けて、それを主キーとして扱うという形になる。
→「(C2)=A2&" "B2」からの「=VLOOKUP(C2,…」

では、これをPowerBIでどうやって実現するか。

まず、データを取得等で、テーブルを呼び出しておく。
その後、「クエリを編集」を実行する。

「クエリエディター」が起動するので、「列の追加」タブより
当該テーブルを選択の上、「カスタム列」を押下する。

そこで「新しい列名」に「複合キー」とか任意の列名を入力し、
「カスタム列の式」に以下のような感じで入力する。
┌──────────────────────────────────────┐
│= Number.ToText([キー1])&" "&Number.ToText([キー2])                         │
└──────────────────────────────────────┘
→「Number.ToText()」は数値文字列変換の関数

後は、「リレーションシップ」画面にて、その列(「複合キー」とか)を
単一主キーの場合と同様に、ドラッグ&ドロップしたりして紐づければOK。
分類:PowerBI
前へ 1 … 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 … 156 次へ