MW211 EXIT

devlog
iPhone/favicon的なものを設定する
2014年11月04日
「apple-touch-icon.png」という名前のpngファイルを
ルートフォルダにおけばいい。

サイズはiOSのバージョンごとに適当に縮小してくれる。
透過は効かないらしい(黒扱いになる)。

なお、サブフォルダにおいてもすべて
ルートフォルダの「apple-touch-icon.png」が適用される。

個別に「apple-touch-icon.png」を変更したい場合には、
HTMLのヘッダに以下のような感じで画像の指定を記述すればよい。
┌──────────────────────────────────────┐
│<link rel="apple-touch-icon" href="images/apple-favicon.png">               │
└──────────────────────────────────────┘
分類:iPhone
MSSQL/自動採番トリガ
2014年11月03日
主キーが「ID,No」で、「ID」ごとに「No」を自動採番するトリガ。
#NULL以外に任意の指定があればそちらを優先
┌──────────────────────────────────────┐
│CREATE TRIGGER [dbo].[トリガNo自動採番] ON [データベース].[dbo].[表]        │
│    INSTEAD OF  INSERT                                                      │
│AS                                                                          │
│    INSERT INTO [データベース].[dbo].[表]                                   │
│        (                                                                   │
│            [ID],                                                           │
│            [No],                                                           │
│            [列]                                                            │
│        )                                                                   │
│        SELECT [ID],                                                        │
│               CASE                                                         │
│                 WHEN [No] IS NULL THEN                                     │
│                     ISNULL(                                                │
│                         (SELECT MAX([別表].[No])                           │
│                              FROM [データベース].[dbo].[表] AS [別表]      │
│                              WHERE [別表].[ID] = inserted.[ID]),           │
│                         0                                                  │
│                     ) + ROW_NUMBER() OVER(ORDER BY [列] ASC)               │
│                 ELSE                                                       │
│                     [No]                                                   │
│               END,                                                         │
│               [列]                                                         │
│            FROM inserted;                                                  │
└──────────────────────────────────────┘
INSERTされる行が一行のみであれば「ROW_NUMBER() OVER(ORDER BY [列] ASC)」は
「1」で代用できる(SELECTによるINSERTの場合は複数行も想定される)

「ROW_NUMBER() OVER(ORDER BY [列] ASC)」で並び順に困った場合には、
「ROW_NUMBER() OVER(ORDER BY (SELECT 1))」って指定でもいいみたい。

但し、SELECTによるINSERTの場合はORDER BY句が効かないので
意図した追加順になるとは限らない。
分類:MSSQL
ExcelVBA/Gotoの謎
2014年11月02日
「Application.Goto」が、Excelファイルを開き直すと
なぜか「Application.GoTo」(Tが大文字)になるファイルがある。

そのファイルは「Goto」と入力すると、ファイルを閉じるまでは
おとなしく「Goto」でいてくれるのだけど、ファイルを開き直すと「GoTo」になる。
「GoTo」と入力してもその瞬間は「Goto」になるくせにだ。

VisualStudioの誤認?いやいや参照設定の優先順位とかの問題?
分類:ExcelVBA
MSSQL/既定のインスタンスとは
2014年11月01日
MSSQLのインストールにおいて、以下の選択がある
・既定のインスタンス
・名前付きのインスタンス
→「既定のインスタンス」はPC一台につき、一つしか設定できない。

各種プログラムからは、サーバ名について「コンピュータ名\インスタンス名」で
接続を行うが、以下の場合、「コンピュータ名」のみで接続することも可能である。
(1) 「既定のインスタンス」がある場合
    (「名前付きのインスタンス」の有無に関わらずこちらが優先される)
(2) 「名前付きのインスタンス」が一つのみインストールされている場合
→「名前付きのインスタンス」が複数インストールされていると
  「コンピュータ名」のみでは接続ができなくなる
分類:MSSQL
ExcelVBA/更新系プレースホルダ
2014年10月31日
┌──────────────────────────────────────┐
│Dim データベース As New ADODB.Connection                                    │
│Dim キー As Long                                                            │
├──────────────────────────────────────┤
│データベース.Execute "UPDATE 表" _                                          │
│                   & "    SET 列 = 値" _                                    │
│                   & "    WHERE キー = " & キー & ";"                       │
└──────────────────────────────────────┘
上記のような更新処理をプレースホルダ処理に置き換えると以下のようになる。
┌──────────────────────────────────────┐
│Dim データベース As New ADODB.Connection                                    │
│Dim キー As Long                                                            │
├──────────────────────────────────────┤
│Const SQL文 As String = "UPDATE 表" _                                       │
│                      & "    SET 列 = 値" _                                 │
│                      & "    WHERE キー = ?;"                               │
│Dim SQLコマンド As New ADODB.Command                                        │
│With SQLコマンド                                                            │
│    .CommandText = SQL文                                                    │
│    .Parameters.Append .CreateParameter("キー", adInteger, adParamInput)    │
│    .ActiveConnection = データベース                                        │
│    .Parameters("キー") = キー                                              │
│    .Execute                                                                │
│End With                                                                    │
│Set SQLコマンド = Nothing                                                   │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/数値変換
2014年10月30日
┌──────────────────────────────────────┐
│数値か否か = IsNumber(変数)                                                 │
└──────────────────────────────────────┘
┌──────────────────────────────────────┐
│数値 = Val(変数)                                                            │
└──────────────────────────────────────┘
分類:ExcelVBA
ExcelVBA/ADODBの空セル
2014年10月29日
設定にもよるのだろうが、ADODBで値を代入する場合、
空のセルについて、「""」(空文字列)になるかと思いきや
「NULL(厳密にはEmpty)」になってしまう。
┌──────────────────────────────────────┐
│Private テーブル As New ADODB.Recordset                                     │
├──────────────────────────────────────┤
│テーブル.Fields("項目名").Value = Cells(y, x).Value                         │
└──────────────────────────────────────┘

これだと、NOT NULL属性の場合、エラーとなるのでその対策を考えた
「IsEmpty(Cells(y, x).Value, "")」とかで、Emptyの時に変換できたり
したらスマートなのだけど、残念ながら「IsEmpty()」はEmptyか否かの
結果を返すだけのBoolean関数なのだ。
かといって、いちいちIf文にするのもかっこ悪いし、
じゃユーザ関数作るかって考えたけど、いい案が浮かんだ。
┌──────────────────────────────────────┐
│テーブル.Fields("項目名").Value = Cells(y, x).Value & ""                    │
└──────────────────────────────────────┘
「Empty & "" = ""」なんだね。

なお、数値項目の場合は、以下でOK。
┌──────────────────────────────────────┐
│テーブル.Fields("項目名").Value = Cells(y, x).Value + 0                     │
└──────────────────────────────────────┘
「Empty + 0 = 0」なんだね。

【追記】
  文字列の場合、変数を間にかませば、NULLにはならないようだ。
┌──────────────────────────────────────┐
│Dim 変数 As String                                                          │
│変数 = Cells(y, x).Value                                                    │
│テーブル.Fields("項目名").Value = 変数                                      │
└──────────────────────────────────────┘
分類:ExcelVBA
Excel/ボタン等を印刷しない
2014年10月28日
Excelシート上のボタン等を印刷しない方法。

「デザインモード」にして、対象となるボタン等を右クリック。
┌──────────────┐
│コントロールの書式設定      │
├──────────────┤
│┌─┌─┌─────┐─┐  │
││  │  │プロパティ│  │  │
│┌───┘          └──┐│
││□オブジェクトを印刷する││
│└────────────┘│
└──────────────┘
「オブジェクトを印刷する」のチェックをはずす。
分類:Excel
ExcelVBA/入力イベントはマクロからのも反応します
2014年10月27日
セルのフォーカスが変わった時に
(というよりは特定のセルにフォーカスがあたった時に)
イベントを起こす、シートの関数に以下のようなものがある。
┌──────────────────────────────────────┐
│Private Sub Worksheet_SelectionChange(ByVal Target As Range)                │
│    …                                                                      │
│End Sub                                                                     │
└──────────────────────────────────────┘

これ、実は、マクロによってシートのフォーカスが変わったりした場合にも
起動してしまう。

基本手入力の捕捉なので、なんとかして欲しいものだと思う。

で、その回避方法。
「Application.EnableEvents」を無効にして、本関数自体が呼ばれないようにする。

イメージとしては以下のような感じ。
┌──────────────────────────────────────┐
│Application.EnableEvents = False                                            │
├──────────────────────────────────────┤
│Private Sub Worksheet_SelectionChange(ByVal Target As Range)                │
│    …                                                                      │
│End Sub                                                                     │
├──────────────────────────────────────┤
│Application.EnableEvents = True                                             │
└──────────────────────────────────────┘
あくまでイメージ
┌──────────────────────────────────────┐
│Application.EnableEvents = False                                            │
│Call Worksheet_SelectionChange()                                            │
│Application.EnableEvents = True                                             │
└──────────────────────────────────────┘
上記とかだったらわかりやすいのだが、いかんせん「Worksheet_SelectionChange」は
どのタイミングで呼ばれるか未確定なのだ。

ということで、イベントが起きそうな前後で、「Application.EnableEvents」を
切り替えてあげればよい。
→なお、最後に有効にしないと手入力イベントも捕捉できなくなるので注意
分類:ExcelVBA
PHP/PDOが効かなくなった
2014年10月26日
PHPのインストール時に、PostgreSQLのPDOをインストールしたのだが
何か拍子に(たぶん何かをインストールしたことによる影響と思われる)、
そのPDOが効かなくなった(「phpinfo()」で参照しても見えてこない)

再インストール(ChangeもしくはRepair)を行っても解消しない。
(インストール済みになる、一回削除してからやっても同じ)

で、Apacheのエラーログ「apache-error.log」を見たら以下のエラーが出ていた。
┌──────────────────────────────────────┐
│Warning:  PHP Startup: Unable to load dynamic library                       │
│ 'C:\Program Files (x86)\PHP\ext\php_pdo_pgsql.dll'                         │
│ - このオペレーティング システムでは %1 は実行されません。                  │
└──────────────────────────────────────┘

この解決方法は以下の通り。

Apacheの設定ファイル(httpd.conf)の末尾に、以下が自動で追加されるので
そこに以下の一行(★)を追加すれば解消された。
┌──────────────────────────────────────┐
│PHPIniDir "C:\Program Files (x86)\PHP\"                                     │
│Loadfile "C:\Program Files (x86)\PHP\libpq.dll"                 ←★これを追加
│LoadModule php5_module "C:\Program Files (x86)\PHP\php5apache2_2.dll"       │
└──────────────────────────────────────┘
「C:\Program Files (x86)\PHP」の部分はPHPのインストール先。

なんでだろう?
分類:PHP、Apache
前へ 1 … 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 … 156 次へ