スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(アンドロイド)インテントで遷移先画面にて異常終了

むかしこんにゃく工房←スポンサーサイト

アンドロイド始めたばっかの頃、遷移先画面にていきなり異常終了する原因が3日くらい分からなかったのでメモ。

「AndroidManifest.xml 」ってファイルに遷移先の画面のクラスを登録しなきゃいけないって知らなかっただけなんだけどね。
「AndroidManifest.xml 」内のApplicationタグ内に、下記のような記述を追加。


<activity android:name=".NextActivity"     ←遷移先クラス名
android:screenOrientation="landscape" android:windowSoftInputMode="stateHidden">
</activity>
スポンサーサイト

Eclipseのコンソールで「Unable to resolve target 'android-9'」

むかしこんにゃく工房←スポンサーサイト

アンドロイド全然分かっていない頃、買った本に載っていたサンプルをインポートしてみたら、コンソールに下記エラーメッセージが発生。
「Unable to resolve target 'android-9'」

原因はインストールしたアンドロイドが8なのに、サンプルソースが9だから怒られているらしい。

インポートフォルダ内の直下にある「default.propertys」ファイルを開いて、android-9って文字列をandroid-8にしたらエラーが消えた。

(DB2)静的SQL環境でインデックス使用状況を簡単に調査する

むかしこんにゃく工房←スポンサーサイト

性能評価において使用インデックスを調べる有名な方法にPLAN_TABLE表を使用する方法があります。
ただし、これは事前にPLAN_TABLE表を作成しておく必要があるなどちょっと面倒くさかったりします。

静的SQLの環境ではSQLのバインド時に、SQLごと使用するインデックスをカタログ表のSYSPACKDEPに記録するため、この表にアクセスすれば、SQLが想定しているインデックスを使ってくれているのか調べることが出来ます。

もちろん、PLAN_TABLEのような事前に何かしておくといったことは不要です。

SQL例)
SELECT DCOLLID,DNAME,BNAME
FROM SYSIBM.SYSPACKDEP
WHERE DCOLLID = 'コレクションID'
AND DNAME = 'パッケージ名(SQL名)'
;
注)DBADM以上の特権(権限)のあるユーザで実行する必要あり。

抽出結果例
DCOLLID      DNAME      BNAME
COL1             SQL1         テーブル名
COL1             SQL1         インデックス名1
COL1             SQL1         インデックス名2
  :
この例の場合は、SQL1がインデックス名1とインデックス名2の複合索引でアクセスすることが分かります。

上記SQLを投げると、列BNAMEに該当するパッケージ(SQL)の使用オブジェクト(テーブルやインデックスなど)一覧が取得できます。
従って、BNAME列にインデックスがあれば、そのインデックスを使用していることが分かり、なければインデックスを使用しない表スキャンアクセスであることが分かります。

(ホストDB2)テーブル一覧の取得

むかしこんにゃく工房←スポンサーサイト

オラクルの場合、TABLESディクショナリ表にアクセスすれば可能だが、DB2ではSYSTABLES表というカタログ表があるのでこれにSQL文をなげます。

例)
SELECT * FROM SYSIBM.SYSTABLES;

その辺のサイトとか見ているとスキーマはSYSIBMではなくSYSCATを使用しているサンプルが多いが、仕事ではSYSIBMしか使ったことがないので、こちらのサンプルを載せておきます。

自分のスキーマだけ抽出したいなら、CREATOR列がスキーマになるので、下記のように条件をつけるといいでしょう。

SELECT * FROM SYSIBM.SYSTABLES WHERE CREATOR = 'USER1';

なお、この表はDBADM以上の特権(権限)のあるユーザでないと実行時SQLエラーになってしまいます。

hta超基礎(入門レベル)

むかしこんにゃく工房←スポンサーサイト

下記ソースがテキストボックスやらラジオボタンやら基本的なコントロールとVBスクリプトを組み合わせた基本的なソースだと思うので、hta初心者は、下記ソースをメモ帳等に貼り付けて、拡張子を「hta」にして保存し、動作を確認すればhtaを知った気になれるはず。(?)

<html><head>
<title>サンプル・プログラム</title></head>
<body>
<form name="form1">
<p>1行テキスト
<input type="text" name="text1" value="テキストサンプル" /></p>

<p>ラジオボタンサンプル <br>
<input type="radio" name="rd" />1番目<br>
<input type="radio" name="rd" checked />2番目<br>
<input type="radio" name="rd" />3番目<br></p>

<p>チェックボックスサンプル <br>
<input type="checkbox" name="ck" value="サンプル" checked>チェック1<br>
<input type="checkbox" name="ck" value="サンプル">チェック2<br>
<input type="checkbox" name="ck" value="サンプル">チェック3<br>
<input type="checkbox" name="ck" value="サンプル">チェック4<br></p>

<p>リストボックスサンプル
<select name="listvalue1">
<option value="10">10
<option value="20">20
<option value="30">30
</select>
</p>
<p><input type="button" value="script実行"
onClick="subGo()" />
</p>
<textarea name="kekka" cols="80" rows="30"></textarea>
<p><input type="reset" value="入力内容の初期化"></p>
</form>


<script language="VBScript">
Sub subGo()

'1行テキストの値を取得
strKekka = "1行テキストの値は" & document.form1.text1.value & vbcr

'ラジオボタンの値を取得
For i = 0 To document.form1.rd.length - 1
if document.form1.rd(i).checked then
loops = i + 1
end if
Next
if loops = 1 then
strRadio = "1番目"
elseif loops = 2 then
strRadio = "2番目"
else
strRadio = "3番目"
end if

strKekka = strKekka & "ラジオボタンの値は" & strRadio & vbcr

'チェックボックスの値を取得
dim flgChkBox(10)
For j = 0 To document.form1.ck.length - 1
if document.form1.ck(j).checked then
flgChkBox(j) = "1"
else
flgChkBox(j) = "0"
end if
Next
strKekka = strKekka & "チェック状況は" & flgChkBox(0) & flgChkBox(1) & flgChkBox(2) & flgChkBox(3) & vbcr

'リストボックスの値を取得
strListValue = document.form1.listvalue1.value
strKekka = strKekka & "リストボックスの値は" & strListValue & vbcr

'テキストボックスに値を返す
document.form1.kekka.value = strKekka

End Sub
</script>
</body>
</html>


キーごとに更新日が最大の行取得SQL

むかしこんにゃく工房←スポンサーサイト

例えば、下のようなテーブルがあって、

COL1 COL2 COL3
1 20110401 101
1 20110402 102
1 20110403 103
2 20110501 104
2 20110502 105
2 20110503 106

COL1とCOL2が主キーの時に
COL1ごとでCOL2が最大の行を取得したい時って仕事しててよくある。
つまり下のような結果が欲しい時、

COL1 COL2 COL3
1 20110403 103
2 20110503 106

色々なSQLの書き方が思いつくけど一番シンプルなのは下のような書き方だと思う。

SELECT *
FROM テーブル1 A
WHERE A.COL2=(SELECT MAX(B.COL2) FROM テーブル1 B WHERE B.COL1=A.COL1)
;

最初このSQLを考えた時に分かりにくいって思った。
内部の表で外部の表の列が出てくるとかわけわからん思ったが、順を追って考えてみると、

テーブルの1行目を抽出対象なのか考えた時に、1行目のCOL1=1、COL2=20110401であるので、その時の内部の表だけ考えてみると・・・

SELECT MAX(B.COL2) FROM テーブル1 B WHERE B.COL1=1
となり、内部表COL1が1のときの最大値20110403が返る。

しかし外側のWHERE条件を見てみると、1行目のCOL2は20110401なので不一致となり抽出対象外となる。

という考え方で、6行分考えると分かりやすいかなーって思った。

オラクル10gからオラクル11gへ変更

むかしこんにゃく工房←スポンサーサイト

今日のたるかった事。
VisualStudioC++でオラクル10gからオラクル11gに変更することになったのでそれっぽい所いじってリコンパイルしてみたら「No such file or directory」だと。「ソースファイルが見つかりません」だそうだ。
で、インターネットで同じような事象がないか調べてみたが、「インクルードファイルが見つかりません」とか似たような事象は見つかったが、結局原因不明。

結局、うちのシステムの場合、部品プログラムでオラクル10gを参照していて、まずそちらをオラクル11gでリコンパイルしてからメインプログラムでコンパイルしろってことみたい。

原因さえ分かってしまえばあまりにもたるい事だがエラーログからは意外とわからんかった。
プロフィール

syao88

Author:syao88
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
たるいカウンタ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。