掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
SQL後データグリッドを編集するには? (ID:108098)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
JINさん: > > テキストAに商品コードを打つとSQLでテキスト2とテキスト3に商品名と商品単価、 DataFormatプロパティを利用するような場合や、あるいは、そのRecordsetを 開き続けておくような場合には、TextBoxの DataSource が利用されますが、 今回のように、単に値を表示したいだけなのであれば、 Me.Syohin_Nm.Text = RS.Collect("M1_SYOHIN_NM") & "" のように、Textプロパティに、値を直接送り込むのが一般的かと思います。 > > テキスト2とテキスト3までは表示されて、データグリッドには表示されませんでした。 データグリッドに割り当てるまでは良いですが、そのあと、 せっかくのRecordsetを閉じてしまっているからだと思います。 例えば、 Set Me.Tenkai.DataSource = RS MsgBox "TEST" RS.Close のように、間に何か処理をおくと、(Closeされるまでは)表示されると思います。 データグリッドは、複数の行データを保持する関係上、元のレコードセットを 開き続けておく必要がありますので、この場合は、Closeはせずに、 Set Me.Tenkai.DataSource = RS Set RS = Nothing と変えてください。これならば表示されると思います。 なお、この時には Connection もCloseしないで下さい。DBとの接続が 切り離されてしまうため、やはり、データグリッドに表示されなくなります。 もし、Connectionを切り離したい場合は、 RS.CursorLocation = adUseClient RS.Open strSQL, Con1, adOpenStatic, adLockBatchOptimistic Set RS.ActiveConnection = Nothing Con1.Close Set Me.DataGrid1.DataSource = RS Set RS = Nothing のように、「静的バッチカーソル」モードを利用してください。 このモードであれば、RecordsetをOpenしたままDBを切断できます。 > > OPENメソッドの引数に直でコネクションを指定したせいか、データグリッドの編集もできません。 「RS.LockType が adLockReadOnly になっていないか」 「RS.Supports(adUpdate) が True を返すか」 この2点を確認してください。これらの条件を満たさない場合、読取専用として扱われます。 だっちゃんさん: > 使用していますよね?提示されたプログラムを拝見するとDataGridコントロールの > DataSourceに直接検索結果を設定しているだけに見えるのですが? Recordsetオブジェクト(もしくは自作したデータソースクラス)を DataSourceプロパティに指定するのは、さほど珍しい事ではありませんよ。 むしろ、ADODCやDataEnvironmentは、コントロール数分の接続が発生するため、 使用を控える人は多いようです。……特に、業務アプリでは。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.