delete from

2008-06-18 18:40:31 | プログラム
selectの結果を元にdelete文を発行する方法が今まで知らなかったんだけど出来ることを知った。

delete from
table a
where
(
a.key1,
a.key2
)
in
(
select
b.key1,
b.key2
from
table b
)

inで複数レコードのリターンが扱えるとは!
結構使えるので覚えておかないと。

??演算子

2008-01-22 13:31:26 | プログラム
変数 ?? 値;

とすると、変数内がnullではない場合はそれを返し、nullの場合は値を返す。

こんなに便利なものがあるとは知らなかった。

クロススレッド?エラー??

2008-01-21 13:14:13 | プログラム
ごくたまにフォームを閉じるとクロススレッドエラーが発生する。

実際に実行しているThreadとは違うThreadが何かをしているというエラー。

調べてみても、自分と同じ現象の人が見当たらなかった。
で、結局のところデストラクタでDisposeをかけているのがいけないみたい。
解決策ではないが、それをやめてみました。
今のところは問題なし。

実際にやっていたことはあるクラスを用意。
そのクラスのコンストラクタでフォームのインスタンスを生成。
その生成したものをデストラクタで破棄していた。

CompornentとかにAddしているので、Disposeされるとおいかけられるらしい。
で、追いかけられた時にDisposeが発生してクロススレッドがうんたらかんたらといわれる。
という解釈を勝手にした。

いまいち。

C# ORACLE ストアドファンクションの戻り値

2008-01-19 16:37:10 | プログラム
FUNCTIONをOracleに作成。

C#からFUNCTIONを呼び出し戻り値を取得しようとするがうまくいかない。

試行錯誤の末、以下のようにした。

using(OracleCommand cmd = new OracleCommand("FUNCTION_NAME"))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("value", OracleDecimal, ParameterDirection.ReturnValue);
cmd.ExecuteNonQuery();
~cmd.Parameters["value"].Valueをキャストして値取得。~
}

Parametersの一番最初に指定していないと値が取得できない。
他に引数を追加していたりすると取得できなくて混乱するようだ。
なんというか、こんなのどうやって調べればわかるんだか。

忘れないうちに記載してみた。

c#にて色々気づいたことめも

2007-12-13 19:46:26 | プログラム
ControlPaintは中々面白い。
色々なコントロールを描画してくれる。

BufferedGraphicsはダブルバッファをするための機能がある。

コンボボックスはなぜか、コンボボックス内に余白がある。

Visible=FalseにしてもLeaveイベントは発生しない。

描画するというだけでも結構遅いので、表示対象外の箇所は描画しないほうが良い。


メタデータが見つかりませんでした

2006-01-25 17:53:24 | プログラム
C#.netのお話。
特に何かをしたわけでもないのにタイトルのようなエラーが出る。
そこにはDllの名前が出力される。
ソリューションのリビルドをしても直らない。

今まではバックアップを持ってきて変更したソースを上書きしてどうにかしていた。
けど、さすがにどうかと思って今回思いついたことをしてみた。
Debugフォルダをリネームしてビルドし直した。
そうすると何故か知らないがうまく動作した。
一体なんなのだろう。

メモメモ。

追記。
その後、コンパイルは通るけど起動出来ない。
やっぱりバックアップからソースを持ってきた。
何が原因かはわからないけど、上記のやり方でうまくいく場合もある程度の認識が良いのかもしれん。

クリスタルレポートの本

2006-01-24 16:24:38 | プログラム
無い。全然無い。
日本語のものが全然ない。
そこで探して見つけたHPはこれ。
むかむか クリスタルレポート入門

そこにあった本でよさげの日本語の本はこれ。
Crystal Reports徹底活用術―データの分析・レポート作成が思いのまま

さらにMicrosoftのサイトにあったのはこれ。
Visual C# .NET を使用して XML データをデータセットに読み込む方法

メモ程度に書いてみた。