- PR -

VISUAL BASICのデータグリッドで

投稿者投稿内容
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2006-07-28 11:36
データベースのテーブルと連結しないで
(つまりデータベースのテーブルを書き換えることなく)
データグリッド内で直接レコード追加・編集する方法を教えていただけますでしょうか?

要はデータベースから検索した結果をVB内にメモリ(変数)として持たせておいて
メモリの内容をデータグリッドに書き込み、
検索もとのテーブルを書き換えることなく
データグリッドでレコードを追加したり編集したいわけです。

ちなみにVBのバージョンは6.0で、使用しているデータベースはIBM DB2です。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-28 12:32
データグリッドじゃなくてフレキシブルグリッドつかったらどう?
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2006-07-28 12:49
フレキシブルグリッドの場合、グリッド内での編集は
できないと思いますが・・・。

以下はVBのフレキシブルグリッドについてのヘルプの説明です。

「FlexGrid コントロールでは、表形式でデータが表示されます。このコントロールは、DBGrid とは異なり、読み取り専用です。この書式化機能は DBGrid コントロールとは異なり、文字列と図を含むテーブルの並べ替え、マージ、および書式化を行えます。」
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-07-28 12:55
んっ?

普通に、MSFlexGrid.Text = "hogehoge" って設定すれば、編集になりませんか?
(意味が違う?)

追加は、MSFlexGrid.AddItem で追加できますが。
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2006-07-28 13:15
ひろれいさん>

コードを実行してみたところ、"hogehoge"という文字列は表示されますが、
グリッド内での直接の書き込みはできないようです。
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-07-28 13:42
引用:

コードを実行してみたところ、"hogehoge"という文字列は表示されますが、
グリッド内での直接の書き込みはできないようです。


グリッド上で直接編集したい、ということですね。
その要件だと、MSFlexGrid では確かに無理ですね。
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2006-07-28 13:53
試行錯誤してみたところ、レコードのロックの状態を「adlockoptimistic」ではなく
「adlockbatchoptimistic」にしたところ、元のテーブルを更新することなくデータグリッド内で直接編集することができたようです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-07-28 16:31
引用:

ひろれいさんの書き込み (2006-07-28 13:42) より:

グリッド上で直接編集したい、ということですね。
その要件だと、MSFlexGrid では確かに無理ですね。


TextBox を配置して擬似的に編集状態にさせるというのは、結構知られているかと思いますが...
たとえば、Excel のように、F2 で編集状態になるように動作させることができます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)