2010年10月15日金曜日

UNION

mysql> select * from ((select * from (select 1,2,3,null as C4,null as C5, null as C6) A) U
NION ALL (select * from (select null as C1,null as C2,null as C3,4,5,6) B)) AS C;
+------+------+------+------+------+------+
| 1    | 2    | 3    | C4   | C5   | C6   |
+------+------+------+------+------+------+
|    1 |    2 |    3 | NULL | NULL | NULL |
| NULL | NULL | NULL |    4 |    5 |    6 |
+------+------+------+------+------+------+
2 rows in set (0.00 sec)

+ と array_merge の差

php -r "$a=array('10'=>array('b','c'),'sum'=>20);$b=array('10'=>array('b','d'),'count'=>100);var_dump($a+$b);"
array(3) {
  [10]=>
  array(2) {
    [0]=>
    string(1) "b"
    [1]=>
    string(1) "c"
  }
  ["sum"]=>
  int(20)
  ["count"]=>
  int(100)
}

━━━━━━━━━━━━━━━━━━━━━━━━━━━━

php -r "$a=array('10'=>array('b','c'),'sum'=>20);$b=array('10'=>array('b','d'),'count'=>100);var_dump(array_merge($a,$b));"
array(4) {
  [0]=>
  array(2) {
    [0]=>
    string(1) "b"
    [1]=>
    string(1) "c"
  }
  ["sum"]=>
  int(20)
  [1]=>
  array(2) {
    [0]=>
    string(1) "b"
    [1]=>
    string(1) "d"
  }
  ["count"]=>
  int(100)
}

2010年10月11日月曜日

wordで変更履歴またはコメントがあるページだけprintするマクロです

'wordで変更履歴またはコメントがあるページだけprintするマクロです
'******************************************************************************
' Function     :  printPagesHavingChangesOrComments
' Description  :  メイン処理
' Parameter    :  なし
' Example      :
' Return Value : なし
' Author:  kagen88@gmail.com/ 2010/10/10
'******************************************************************************
Sub printPagesHavingChangesOrComments()
Dim pageNum As Integer
Dim pageArray() As Variant

ReDim Preserve pageArray(0)

'ここはポイント、「'文章の先頭から検索を続けますか?」がPOPUPされる
Application.DisplayAlerts = True

'カーソルを最初に移動
Selection.HomeKey Unit:=wdStory

'無限ループにならないように保険
Dim i As Integer
i = 1

'文章の先頭から検索を続けますかに「いいえ」をクリック、エラーを起こす
'ここのエラー実はループの終わり
On Error GoTo finish
Do
   i = i + 1
   '次の変更またはコメントに移動
   WordBasic.NextChangeOrComment
   'その時のページ番号を取得
   pageNum = Selection.Information(wdActiveEndPageNumber)

   'そのページ番号は既にプリント要ページ番号リストに登録していますか
   If Not uInArrayStr(pageNum, pageArray) Then
       ReDim Preserve pageArray(UBound(pageArray) + 1)
       pageArray(UBound(pageArray)) = pageNum
   End If
Loop While i < 500



finish:
   MsgBox "検索完了"
   Dim strPage As String
   Dim sep As String
   sep = ""
   If IsArray(pageArray) Then
       Dim x As Integer
       For x = 1 To UBound(pageArray)
           strPage = strPage & sep & pageArray(x)
           sep = ","
       Next
       res = MsgBox("プリントしますか?", vbOKCancel)
       If res = vbOK Then
               Application.PrintOut FileName:="",
Range:=wdPrintRangeOfPages, Item:= _
           wdPrintDocumentWithMarkup, Copies:=1, Pages:=strPage, PageType:= _
           wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True,
Background:= _
           True, PrintToFile:=False, PrintZoomColumn:=0, PrintZoomRow:=0, _
           PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0

       End If
   End If

End Sub
'******************************************************************************
' Function     :  uInArrayStr
' Description  :  文字列が配列に入ってるかどうかをチェック
' Parameter    :  文字列、配列
' Example      :
' Return Value :
'                   True:あり
'                   False:なし
' Author:  kagen88@gmail.com/ 2010/10/10
'******************************************************************************
Public Function uInArrayStr(ByVal strTarget As String, ByVal arrArray
As Variant) As Boolean
   Dim blnReturn As Boolean
   Dim intX As Integer
   blnReturn = False

   If IsArray(arrArray) Then
       For intX = 0 To UBound(arrArray)
           If arrArray(intX) = strTarget Then
               blnReturn = True
               Exit For
           End If
       Next
   End If
   uInArrayStr = blnReturn

End Function

2010年10月9日土曜日

Word(VBA)Revision.Type プロパティ


Word(VBA)Revision.Type プロパティ



const val
wdNoRevision 0
wdRevisionDelete 2
wdRevisionInsert 1
wdRevisionParagraphProperty 10
wdRevisionReconcile 6
wdRevisionSectionProperty 12
wdRevisionStyleDefinition 13
wdRevisionConflict 7
wdRevisionDisplayField 5
wdRevisionParagraphNumber 4
wdRevisionProperty 3
wdRevisionReplace 9
wdRevisionStyle 8
wdRevisionTableProperty 11

2010年10月7日木曜日

IEでjavascriptのdebug

開発者ツール
IEでjavascriptのdebug, IE8ならF12を押せば「開発者ツール」が立ち上がるみたい。

JavaScript の判断式はshort式ではない、$ is not defined

これはダメ:
if($('#onSiteChangeReloadPage').size()>0 && $('#onSiteChangeReloadPage').val()==1){
エラーメッセージがでる:$ is not defined

これにすべき:

if($('#onSiteChangeReloadPage').size()>0){
if($('#onSiteChangeReloadPage').val()==1){

php isset テスト

php -r "$aa=array('hh'=>null);echo (isset($aa)?'OK':'NG');"
OK
php -r "$aa=array('hh'=>false);echo (isset($aa['hh'])?'OK':'NG');"
OK
php -r "$aa=array('hh'=>null);echo (isset($aa['hh'])?'OK':'NG');"
NG
php -r "$aa=array('hh'=>null);echo (isset($aa['bb'])?'OK':'NG');"
NG
php -r "$aa=array('hh'=>'');echo (isset($aa['hh'])?'OK':'NG');"
OK
php -r "$aa=array('hh'=>0);echo (isset($aa['hh'])?'OK':'NG');"
OK

php -r "$aa=array('hh'=>0);echo ($aa['hh']?'OK':'NG');"
NG
php -r "$aa=array('hh'=>null);echo ($aa['hh']?'OK':'NG');"
NG
php -r "$aa=array('hh'=>false);echo ($aa['hh']?'OK':'NG');"
NG
php -r "$aa=array('hh'=>'');echo ($aa['hh']?'OK':'NG');"
NG
php -r "$aa=array('hh'=>1);echo ($aa['hh']?'OK':'NG');"
OK