グリッドに表示したレコードを更新した結果を反映させるには?


若葉  2004-04-15 08:37:57  No: 112845

初めて投稿します。

VSFlexGridというツールとADOデータコントロールを使用してデータベースの内容を表示する画面と作成しています。グリッドに表示はできたのですがレコードを追加したり、更新したり、削除したりした場合をグリッドに反映されるにはどうしたらいいのでしょうか?現在は削除ボタンを作成中です。
データベースを開いて確認したらちゃんとレコードは削除されていました。

[コード]
Private Sub Form_Load()
  Me.ADODC1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;"
  Me.ADODC1.CommandType = adCmdText
  Me.ADODC1.RecordSource = "SELECT テーブル.フィールド1, " _
                         & "テーブル.フィールド2, " _    
                         & "テーブル.フィールド3, " _    
                         & "テーブル.フィールド4 " _
                         & "FROM テーブル " _
                         & "WHERE テーブル.フィールド3 LIKE '*' " _ 
                         & "ORDER BY テーブル.フィールド3;
  Me.ADODC1.Refresh
End Sub

Private Sub Command1_Click()
  Set DB = New ADODB.Connection
  Set RS = New ADODB.Recordset

  DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;"

  sSQL = ""
  sSQL = "SELECT * " _
       & "FROM テーブル " _
       & "WHERE テーブル.No = 1;"
                     
  RS.Open sSQL, DB, adOpenKeyset, adLockOptimistic
                
  If Not RS.EOF Then
    RS.Delete
  End If
                
  RS.Close
  DB.Close
  Set RS = Nothing
  Set DB = Nothing

  Adodc.Refresh
End Sub

どうかわかる方がいましたらアドバイスをお願いします。
では失礼します。

[開発環境]
OS    :Windows2000(SP4)
言語  :VisualBasic6.0(SP6)
ツール:VS-FlexGrid Pro Ver.7.0J
DB    :Access2000


特攻隊長まるるう  2004-04-15 18:12:45  No: 112846

過去ログを丁寧に調べれば似たような処理はたくさんあると
思うんですが…?
…というか Form_Load 時の Me.ADODC1 と Command1_Click
時の Adodc.Refresh の Adodc って別物なんですか?


若葉  2004-04-16 02:07:29  No: 112847

返答ありがとうございます。
すみません。間違えました。
Form_Load時とCommand1_Click時のADOデータコントロールは同じ物です。
投稿する前に過去ログで検索して調べましたが・・・


特攻隊長まるるう  2004-04-16 04:22:33  No: 112848

.Refresh ではダメでしたか…。
ロード時に表示が成功してるなら、
>  Adodc.Refresh

   Form_Load()
にしたら成功はするハズですよね?…コードとしては
不恰好ですが。


若葉  2004-04-16 04:44:04  No: 112849

返答ありがとうございます。

特攻隊長まるるうさんのアドバイスを試してみました。
せっかくアドバイスいただいたのですが結果はダメでした。

ツール(VS-FlexGrid Pro)が悪いのでしょうか?
もう何がいけないのかがわかりません。
どうか、助けて下さい。宜しくお願いします。
では、失礼します。


特攻隊長まるるう  2004-04-16 18:01:12  No: 112850

いや、まぁ、新しい技術を取り入れようとしたりすると、この手の問題は必ず起こるもの
だと思います。…この程度で取り乱されても(^^;)。今回の場合、フォームロード時に
表示に成功してるわけですから、先は見えてます。レベル的には簡単な部類です。一つ一つ
試していけば解決するはずですよ?
>ツール(VS-FlexGrid Pro)が悪いのでしょうか?
じゃあ、他のコントロール使ってみればどうですか?とりあえず DataGrid あたりで同じ
処理をしてみて、そっちが正常に動作すれば VS-FlexGrid Pro が悪いと言うか…設定が
十分でないか、バグなのか…辺りが分かると思います。

あと、
>結果はダメでした。
というのは、表示が更新されて、レコードが全く表示されなくなる…と言うことでは
無いんですよね?。削除したレコードが表示されたまま、 VS-FlexGrid Pro の表示が
更新されないと言うことですよね?。


若葉  2004-04-16 20:18:00  No: 112851

返答ありがとうございます。

書き方が不十分ですみません。
はい、そうです。レコードが表示されたままで更新されませんでした。

特攻隊長まるるうさん、本当にありがとうございます。
DataGridを使って検証してみます。
結果はあとでお知らせします。
では、失礼します。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加