- - PR -
Winフォームにおける画面要素の保持の仕方について
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-13 10:45
DbDataAdapterのFillSchemaというメソッドですね。
知りませんでした。 このあたりをうまく使えれば、ソースコードの量はかなり減らせそうです。 データ構造の作り方について、皆さんがどういう方法を取っているのか、 画面の仕様によると思いますが、教えてください。 DataTableを作成している(列定義の作成方法は?) 何かフレームワーク的なものがある 画面のコントロールを直接参照する など [ メッセージ編集済み 編集者: やす 編集日時 2008-06-13 10:48 ] [ メッセージ編集済み 編集者: やす 編集日時 2008-06-13 11:17 ] | ||||||||||||||||
|
投稿日時: 2008-06-16 18:37
現在プログラミングASP.NET 2.0という内容と価格が有難い本で勉強中ですが、
DataAdapterのFillSchemaメソッドや、Updateメソッドなど、データベースの情報を 取得するメソッドをどの程度使うかで、プログラムの構成が決まりそうです。 その本の著者はFillSchemaは、パフォーマンスの面で問題があるので、スキーマは コードで設定したほうが良いとかいていました。(20倍程度差があるそうです) 個人的には実運用で耐えられるパフォーマンスが出るなら、使ってよいと思いますが。 この辺の便利なメソッドを使っていきつつ、パフォーマンスに問題がある部分を コード作成に切替えていく、というのが良いかと思っています。 しかしUpdateメソッドは便利です。 | ||||||||||||||||
|
投稿日時: 2008-06-18 10:41
いろいろあるとは思いますが 1.テーブル定義クラス・構造体を自作する 2.型指定Datasetを利用 とかでしょうか。(2は業務で使ったことはないですが) 2については http://uchukamen.com/Programming3/Access/ に解説・使用法があります。(C#、Windowsアプリの解説ですが、Webアプリでも探せばいっぱいあると思います) | ||||||||||||||||
|
投稿日時: 2008-06-18 12:03
どうでもいいことかも知れませんが、ちょっと気になりました。 Win フォームって書いてありますが ASP.NET? もしかしてプログラミング ADO.NET 2.0 の方でしょうか?
私は型付きデータセットを使っています。 問題が全くないとは言いませんが、やはり Visual Studio のフォームデザイナとの親和性が高いので、 その恩恵を受けられるメリットは大きいと考えます。 使ったことはありませんが、iBATIS.NET というフレームワークは検討してみたことがあります。 これも使いやすそうな感じでした。
そもそも禁止する値(不適切な値という意味ですよね?)だったら データソースに代入される前に検証しています。 DataGridView だったら CellValidating イベントで。
この部分に関しては、DataTable.Load という便利なメソッドがありますね。 | ||||||||||||||||
|
投稿日時: 2008-06-18 16:08
型付き(型指定)Datasetをちゃんと試したことがなかったので、
下記環境ではありますがやってみました。(業務がたまたま暇だったんで・・・) OS:WinXP Pro SP2 IDE:VS2003 言語:VB.NET Windowsアプリケーション 概要:MDBのテーブルを型付きDatasetと連携したDataGridに一覧表示し、 一覧からのDELETEと単票画面で指定した内容でのINSERT、UPDATEを実現。 で、感想。 結構楽でした。生産性は上がるでしょう。 使える環境が2003しかなかったんで、2005や2008だともっと楽かも。 やっぱ「ノンコーディング」は時代の流れかなぁ・・・ 私のようなunix-C出身のおじさんはどんどんつらくなっていくのかも(笑) | ||||||||||||||||
|
投稿日時: 2008-06-18 18:06
ご返信ありがとうございます。
大変参考になります。 私が読んでいるのは、プログラミング ADO.NET 2.0 でした。 なぜか間違いました。(やっているのはWinアプリです。) 私が「値がDataTableに代入できなくなってしまう。」と書いたのは、 「ユーザの入力は何でもコントロールには格納し、(確定ボタン押下など) 入力チェックのタイミングでエラーを通知する、という仕様(であった場合) は満たせないのではないか」という考えからです。 #### 画面の値の持ち方・操作の仕方について、私は今のところ 1.DataAdapterのFillSchemaで、DataTableの構造作成 2.「1.」に対して、DataRowをいろいろ操作(新規作成、変更、削除)など 3.「2.」をDataAdapterのUpdateでDBに更新(その際、SQLはCommandBuilderで生成) という超簡単版でやってみています。これはまあ楽です。 しかし、本では、パフォーマンスの点などで、FillSchemaや、CommandBuilderは あんまりよろしくない、とかいています。 (DBサーバへのアクセスが発生するので) そこでは、「毎回FillSchema」の代替案として「型付きDatasetを作成」も 出ていました。 ・方法1 VisualStudioから ・方法2 XMLの作成(WriteXmlSchema)→ロード 個人的には、FillSchemaや、CommandBuilderで取得・作成したデータを(XMLなど) ファイル出力し、プログラムではそれを初回のみロードする、というのが良い気が しています。 (デザイナでの操作は、どうも無駄な抵抗感があります。 どこにどんなソースを生成するかを把握するのが大変なので。) [ メッセージ編集済み 編集者: やす 編集日時 2008-06-18 18:13 ] | ||||||||||||||||
|
投稿日時: 2008-06-18 20:06
確かにそれが必須要件なら、型付きデータセットのバインドでは難しいですね。 私が担当したシステムでは、こういう必須要件はなかったので、 型付きデータセット+CellValidating で実装しました。 データセットに格納できないような単純な入力エラーは入力時にチェックして、 それ以外のエラー(ビジネスロジックでのチェック)のみ 確定ボタンの押下のようなタイミングで行うというスタイルです。 |