2011年5月16日月曜日

【Android】日齢計算アプリ更新

日齢計算アプリを更新しました。

・入力した誕生日を保存
・TwitterなどにShareできる
・カレンダーに登録できる

そんな機能を追加しました。

でもデザインは手抜き。
もっと力を入れてやらないといけんっちゃいけんのだけど、
家にいて気が抜けるのともっと力を入れないといけないのもあるのでねぇ。。。

とりあえずやりたいとこまではできた感じ。

HandMemoのマルチタッチ時のおかしな動作も直さないといけないなー。。

2011年3月15日火曜日

【Android】祝!アンドロイダー掲載

アンドロイダーに初めて掲載されました。

レトロライツアウト!

http://androider.jp/a/601db07b8ec543c0/

実は最初のテストアプリを覗いて、一番時間をかけていないアプリなんですが、
これが掲載されました。

他のアプリも掲載されたらなぁー、って思ってます^^

2011年3月3日木曜日

【VB.NET】実行しているメソッド名を取得する

New StackFrame(0).GetMethod.Name

で取得できます。

ただやっぱり関数化したいですよね。
ログ出力に使うと思いますので。
そういう場合は、

New StackFrame(1).GetMethod.Name

ってしたらいいです。

単純。

2011年2月18日金曜日

【VB.NET】ソートされたとしてもDataGridViewの行に対応するDataRowを取得する

DataGridViewのDataSourceに BindingSource や DataTable を関連付けした場合に
DataGridViewの4行目に当たるDataTableの行を取得したい、とかやりたい時ありますよね。

通常はそのまま同じ4行目が対応する行になるのですが、
ソートをしてしまうとDataGridViewはソートされますが、DataTableはソートされず、
行番号が食い違うようになってしまいます。
その場合、下記関数をご利用ください。

#Region "DataGridViewのRowIndexからDataTableのDataRowを取得する"
        ''' 
        ''' DataGridViewのRowIndexからDataTableのDataRowを取得する
        ''' 
        ''' ''' 
        ''' ソート時など、DataGridViewのRowIndexが必ずしもDataTableのRowIndexとマッチしないため
        Public Function GetDataRow_ByDataGridViewRowIdx(ByVal RowIdx As Integer) As DataRow
            Try
                If Me.Rows(RowIdx).DataBoundItem Is Nothing Then
                    Return Nothing
                End If
            Catch ex As IndexOutOfRangeException
                Return Nothing
            End Try

            Dim Dr As DataRow
            Dim Drv As DataRowView = CType(Me.Rows(RowIdx).DataBoundItem, System.Data.DataRowView)
            Dr = CType(Drv.Row, System.Data.DataRow)

            Return Dr
        End Function


#End Region

対応するDataRowが取得できます。
これで行移動時に値の編集するなど、DataRowをいじっちゃってください。

2011年2月17日木曜日

【SQLServer】同一列名なのに桁数や列説明が食い違う他テーブルの列を抽出

同じ列名なのに他テーブルでは列説明が違ったり、
型が違ったり、桁数が違ったりする列ってちらほら出てきますよね。

発見するのが難しかったりするのでSQLを作成しました。

SELECT DISTINCT
  COL1.TABLE_NAME  AS テーブル名
,( select b.value from sys.tables a
   left join sys.extended_properties b on a.object_id = b.major_id and a.parent_object_id = b.minor_id 
   where a.name =COL1.TABLE_NAME) AS テーブル説明
, COL1.COLUMN_NAME AS 列名
, COL1.DATA_TYPE AS 型
, COL1.CHARACTER_MAXIMUM_LENGTH AS 文字桁
, COL1.NUMERIC_PRECISION AS 整数桁
, COL1.NUMERIC_SCALE AS 小数桁
, COL1.IS_NULLABLE AS NULL許容
, COMMENT.COLUMN_COMMENT AS 列説明

FROM INFORMATION_SCHEMA.COLUMNS COL1
-- コメントを取得
INNER JOIN(
select 
     t.name as TABLE_NAME
    ,c.name as COLUMN_NAME
    ,ep.value as COLUMN_COMMENT
from
      sys.tables              t
     ,sys.columns             c
     ,sys.extended_properties ep
where
      t.object_id = c.object_id
and c.object_id = ep.major_id
and c.column_id = ep.minor_id) COMMENT
ON COMMENT.TABLE_NAME = COL1.TABLE_NAME
AND COMMENT.COLUMN_NAME = COL1.COLUMN_NAME

-- 列の情報が食い違うもの
LEFT JOIN INFORMATION_SCHEMA.COLUMNS COL2
ON COL1.COLUMN_NAME = COL2.COLUMN_NAME 
AND (COL1.DATA_TYPE <> COL2.DATA_TYPE 
  OR COL1.CHARACTER_MAXIMUM_LENGTH <> COL2.CHARACTER_MAXIMUM_LENGTH 
  OR COL1.NUMERIC_PRECISION <> COL2.NUMERIC_PRECISION 
  OR COL1.NUMERIC_SCALE  <> COL2.NUMERIC_SCALE 
  )
WHERE 
(
       -- 列のコメントが食い違うもの
       (
              select  COUNT(distinct ep.value )--c.name AS COLUMN_NAME

              from
                       sys.tables              t
                     ,sys.columns             c
                     ,sys.extended_properties ep
              where
                     t.object_id = c.object_id
              and c.object_id = ep.major_id
              and c.column_id = ep.minor_id
              and c.name = COL1.COLUMN_NAME 
       group by c.name
       ) > 1
       -- 列の情報が食い違うもの のJOIN がヒットした
OR COL2.COLUMN_NAME IS NOT NULL
)

-- 列名指定する場合はここに条件
--WHERE COL1.COLUMN_NAME = 'HIN_CD'

ORDER BY COL1.COLUMN_NAME ASC


実行すると修正の必要性がある列のみ抽出されます。

Oracleでも似たようなの作っておくと便利!

※ちなみにSQLはインデントなどちゃんと直してません。

2011年2月13日日曜日

【Windows】Skypeを2重起動させる方法

2つのアカウントを使用する場合など、
Skypeは標準に起動すると2重起動できません。

もし起動させたい場合は、

"C:\Program Files\Skype\Phone\Skype.exe" /secondary

のように /secondary というオプションをつけます。

ただし、これだけだと自動ログインがきかなくなるのです。

まぁ、アカウントが複数なのでもちろんそうなのですが。

そこで起動オプションを増やします。

"C:\Program Files\Skype\Phone\Skype.exe" /secondary /username:【username】 /password:【password】

/username , /password オプションで自動ログインが可能です。
これらを含めてショートカットを作成すると、複数アカウントにて自動起動が可能です。

ただしパスワードをショートカットに書いてしまうことになるので、
そこだけ気をつけてくださいね。

2011年2月12日土曜日

【VB.NET】Date型の定数の宣言

Date型の定数の宣言は以下の通りです。

Public Const HogeDate As Date = #2/12/2011 12:00:00 PM#

# で囲んだ日付で宣言します。
中はアメリカの日付表記ですね。

ちなみに

Public Shared ReadOnly HogeDate As Date = #2/12/2011 12:00:00 PM#
のような感じでも定数みたいなやつが作れるよな感じですけど、どうなんでしょうねぇ。。

まぁ、Constでいいと思います。