覚書。体験談からなので、間違ってる可能性あり。鵜呑み注意。
一度、時間を作って一通り調べたいんだけどね~。
見つからない。
- 検索パラメータにNULLが含まれている場合に発生。(SQL自体がNULLに対応しててもダメ)
- DataSourceのCancelSelectOnNullParameterをFalseに変更する。
- DataSourceのSelectingイベントでSQLとパラメータが期待しているものかどうか確認する。
- 各パラメータを埋め込んでSQLCMDで正しいか確認する。
更新、削除されない。
- PrimaryKeyが空文字の場合、初期設定だと、Empty→Nullに変換がかかってしまい処理されない事があった。
- クエリビルダ→パラメータ→詳細設定でConvertEmptyStringToNullをFalseに変更する。
- DataSourceのSelectingイベントでSQLとパラメータが期待しているものかどうか確認する。
- 各パラメータを埋め込んでSQLCMDで正しいか確認する。
表示が更新されない。
- DataSource#DataBind()を呼び出しても、対象は更新されない。
- 各ControlのDataBind()を呼び出しましょう。
クエリービルダーで変なSQLに変換されてる。
- 左辺と右辺を交換する事により上手くいくケースがある。
- Or条件の書き方を工夫すると上手くいくケースがある。
- どうにもならないときはCLRを使ってシンプルなクエリーにする。
標準SQLでないことによりパフォーマンスやキャッシュに対して劣化する可能性はあるけど、保守性の向上にはなります。
Insert, Update, Deleteを書くのが面倒
- 複雑なSelect文を書く前にクエリビルダーでテーブル選択、全カラム表示にし、詳細設定でInsert, Update, Deleteを自動生成するにチェック。
- これで自動生成される。その後、Select文を書き直せばOK
ちゃんと設定してるはずなのに、反映されない。
- DataSource.XXXParameters(xxx).DefaultValueで指定してるのに設定してないことになる。
- DataSource#XXXingイベントの場合は、e.Command.Parametersで変更しましょう。
- この時指定するパラメータ名はxxxではなく、@xxx形式。
- GridView.Xxxingの場合は、DataSourceのParameterを変更で良い。