5才の息子は
震災以降、おねしょをするようになりました。
また、甘えてくるようになりました。
理由を聞いてみると、
地震を思い出して怖い。
テレビで見るような事が起こるかもしれない。
怖い夢を見てしまうと言っていました。
今日も、家の前の道路に地震でできた亀裂を見て、
水がでてきそうで怖いといっていました。
4月2日の朝日新聞には、
幼い子に震災を通して命の大切さを教えるのは間違いとあり、
安心感を与えるようにとありました。
まったくその通りだと思いました。
« 2011年03月 | メイン | 2011年05月 »
震災以降、おねしょをするようになりました。
また、甘えてくるようになりました。
理由を聞いてみると、
地震を思い出して怖い。
テレビで見るような事が起こるかもしれない。
怖い夢を見てしまうと言っていました。
今日も、家の前の道路に地震でできた亀裂を見て、
水がでてきそうで怖いといっていました。
4月2日の朝日新聞には、
幼い子に震災を通して命の大切さを教えるのは間違いとあり、
安心感を与えるようにとありました。
まったくその通りだと思いました。
[現象]
シートに表示がない状態で列ヘッダをクリック(ダブルクリック)した時に
「行インデックスが無効です」例外が発生する。
[原因]
CellClick、CellDoubleClickで処理している場合、
引数 e.Row = 0 と設定されて、シートに行がない場合でも
1行目を処理の対象行としてしまうため。
[対応]
列ヘッダだった場合、処理をキャンセルする。
If e.ColumnHeader = True Then
e.Cancel = True
End If
'列ヘッダクリック(ダブルクリック)以外の処理
[現象]
SPREADデザイナでセルのプロパティを設定し
コーディングでもセルのプロパティを設定した場合、
コーディングしたセルの設定が反映されない時がある。
[原因]
コーディングでしたセルのプロパティ設定は、
新たに表示した行にのみ適用される。
[例]
(1)デザイナで1行表示してセルの設定をする。
(2)コーディングで列のプロパティ設定をする。
(3)スプレッドにデータバインド(5行)する。
(4)1行目は、デザイナの設定、2行目はコーディングで設定となる。
[対応]
コーディングして列のプロパティ設定をする場合は、
RowCountを0に設定後にプロパティ設定をする。
'行を0にする。 FpSpread1.ActiveSheet.RowCount=0 'これ以降でプロパティを設定する。
[現象]
CheckBoxCellTypeに0,1(true,false)以外の値、
ComboBoxCellTypeのItemsに設定した以外の値の貼り付け(ctrl + v)ができる。
[対応1]
画面の仕様で貼り付けする必要がなければ、
スプレッドで貼り付けを禁止する。
[対応2]
画面の仕様でCheckBoxCellType、ComboBoxCellType
貼り付けする必要がなければ、ClipboardPastingイベントで
e.Handled=Trueを指定してキャンセルする。
[対応3]
画面の仕様で貼り付けしなくてはいけない場合は、
ClipboardPastingイベントでペーストされた値を検証する。
いずれにせよ、スプレッドでコピー&ペースト、カット&ペーストが
できるか仕様を決める必要がある。
[現象]
セルの編集してもDataRowのRowStateが更新されていない。
[原因]
違うバージョンのスプレッドだが、ナレッジベースに
アクティブセルが他の行に移動したタイミングで更新されるからとある。
しかし、明示的に行を移動してもDataRowのRowStateが
更新されていない場合がある。
[対応]
ナレッジベースの通りにFpSpreadクラスのChangeイベントで
EndEditメソッドを明示的に実行する。
dt.Rows(e.Row).EndEdit()
[補足]
この現象は、DataTableをバインドすると結構遭遇すると思うので、
現象が発生する前に対応しておいた方がいい。
[現象]
ValidatingイベントでGetText(row,col)は変更前の値を取得し、
Cells(row,col).Textは、変更後の値を取得する。
[対応]
この仕様を理解して使用する。
そうしないと意図した結果が得られない。
似た記事あった。
Spread .Net でGetTextとCellsプロパティの動作
マニュアルに、コンポーネントが例外をスローした場合は
トランザクションをロールバックするとあるので、
明示的に例外をスローすることで対応した。
複数のテーブルを結合したレコードを取得する場合、
Daoには、Getのみ記述する。
DaoにBean属性の指定は必須なのでダミーのEntityを指定する。
<Bean(GetType(HogeEntity))> _
Public Interface IHogeDao
<SqlFile()> _
Function GetHoge(ByVal dto As hogeSearchCondition) As DataTable
End Interface
ダミーのEntityには、属性を指定しない。
Public Class HogeEntity '空でOK End Class
DateTimeCellTypeの日付書式の設定方法
Dim dtCellType As New Spread.CellType.DateTimeCellType dtCellType.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined dtCellType.UserDefinedFormat = "yyyy/MM/dd HH:mm:ss"_sheet.Columns(0).CellType = dtCellType
[現象]
FtpWebRequestで(550)エラーが発生。
550:要求されたリクエストはアクセス権限やファイルシステムの理由で実行できない。
[原因]
ログインユーザーのルートディレクト以外のディレクトリにアクセスしている場合に発生。
[対応]
%2fエスケープをパスの中に含める。
[例]
ftp://hoge.com/%2fbar/test.txt
パラレル化する方法は以下のとおり。
今回は、11gr2 EE だったので、初期化パラメータ「parallel_degree_policy」を設定。
今まで1.5時間の処理が1時間になった。
1.表や索引に対してパラレル属性を指定
CREATE TABLE HOGE ( ID NUMBER(10) , NAME VARCHAR2(10) ) PARALLEL (DEGREE 12);
2.セッションに指定
ALTER SESSION FORCE PARALLEL QUERY PARALLEL 12;
3.ヒント句の指定
SELECT /*+ PARALLEL(HOGE,12) */ COUNT(*) FROM HOGE;
4.初期化パラメータ「parallel_degree_policy」を設定
ALTER SYSTEM SET PARALLEL_DEGREE_POLICY=AUTO;
[現象]
ローカル環境でWebサービスに接続時に「リモート サーバーに接続できません。」が発生。
System.Net.Sockets.SocketException: 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。
[原因]
ループの中でWebサービスに何度もアクセスするようなコーディングになっていた。
ソケット数の上限(ディフォルトで5,000)を超えたたために発生。
[補足]
Windowsのソケット最大数は、ディフォルトで5,000。
次のレジストリ エントリを操作して、最大 0xfffe (65534) まで設定可能。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort
Oracle 10g r2以降
DB_FILE_MULTIBLOCK_READ_COUNTが明示的に設定されていない場合、
デフォルト値を使用して自動的にチューニングされるようになった。
Oracleのヒント句の指定方法は、次のとおりです。
S2Dao.netでは、(1)でヒントを指定した場合、
S2DaoのSQLコメントと同じ為、無視されてしまいす。
(2)で指定すれば、ヒントを指定できます。
(1)複数行コメントでヒント指定
select /*+ ヒント*/ * from hoge;
(2)単一行コメントでヒント指定
select --+ ヒント * from hoge;
シート初期状態でコピー、切り取り、貼り付け処理は
次のように動作した。(間違ってたらすいません。)
(1)行、列のヘッダラベルのコピー、切り取り、貼り付けができる。
(2)列を選択してCheckBoxCellType、ComboBoxCellType等のコピー、切り取りができる。
ただし、セルを選択したとき場合にはできない。
(3)書式(色)のコピー、切り取り、貼り付けができる。
(4)ReadOnlyに設定したTextCellTypeに貼り付けができる。
つまり、初期状態では、ユーザーのコピー、切り取り、貼り付け操作で
自由にシートの外観を変更できてしまう。
なので、スプレッドを初期化するときにいつも画面仕様にあわせ
次のようなコードを書くようになる。
Imports FarPoint.Win.Spread
ClipboardOptionsを指定して、ヘッダのコピペ、カトペを制御
FpSpread1.ClipboardOptions = ClipboardOptions.NoHeaders
'値のみコピペ、カトペできるようにキーマップを設定
Dim im As New InputMap
With FpSpread1
' カット[Ctrl]+[X]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.X, Keys.Control), SpreadActions.ClipboardCutDataOnly)
' ペースト[Ctrl]+[V]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.V, Keys.Control), SpreadActions.ClipboardPasteValues)
' カット[Shift]+[Delete]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.Delete, Keys.Shift), SpreadActions.ClipboardCutDataOnly)
' ペースト[Shift]+[Insert]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.Insert, Keys.Shift), SpreadActions.ClipboardPasteValues)
End With
コピーペストを無効にするようにキーマップを設定
Dim im As New InputMap
With FpSpread1
' カット[Ctrl]+[X]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.X, Keys.Control), SpreadActions.None)
' ペースト[Ctrl]+[V]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.V, Keys.Control), SpreadActions.None)
' カット[Shift]+[Delete]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.Delete, Keys.Shift), SpreadActions.None)
' ペースト[Shift]+[Insert]の入力マップを変更します
im = .GetInputMap(InputMapMode.WhenFocused)
im.Put(New Keystroke(Keys.Insert, Keys.Shift), SpreadActions.None)
End With
今回は、EXCELなどから貼り付けした時の動作や
バインドしている時の動作は割愛します。
また、詳細な仕様に対応するには、
ClipboardPastingイベントで制御する必要があります。
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 |