初めて投稿します。
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
過去ログを丁寧に調べれば似たような処理はたくさんあると
思うんですが…?
…というか Form_Load 時の Me.ADODC1 と Command1_Click
時の Adodc.Refresh の Adodc って別物なんですか?
返答ありがとうございます。
すみません。間違えました。
Form_Load時とCommand1_Click時のADOデータコントロールは同じ物です。
投稿する前に過去ログで検索して調べましたが・・・
.Refresh ではダメでしたか…。
ロード時に表示が成功してるなら、
> Adodc.Refresh
を
Form_Load()
にしたら成功はするハズですよね?…コードとしては
不恰好ですが。
返答ありがとうございます。
特攻隊長まるるうさんのアドバイスを試してみました。
せっかくアドバイスいただいたのですが結果はダメでした。
ツール(VS-FlexGrid Pro)が悪いのでしょうか?
もう何がいけないのかがわかりません。
どうか、助けて下さい。宜しくお願いします。
では、失礼します。
いや、まぁ、新しい技術を取り入れようとしたりすると、この手の問題は必ず起こるもの
だと思います。…この程度で取り乱されても(^^;)。今回の場合、フォームロード時に
表示に成功してるわけですから、先は見えてます。レベル的には簡単な部類です。一つ一つ
試していけば解決するはずですよ?
>ツール(VS-FlexGrid Pro)が悪いのでしょうか?
じゃあ、他のコントロール使ってみればどうですか?とりあえず DataGrid あたりで同じ
処理をしてみて、そっちが正常に動作すれば VS-FlexGrid Pro が悪いと言うか…設定が
十分でないか、バグなのか…辺りが分かると思います。
あと、
>結果はダメでした。
というのは、表示が更新されて、レコードが全く表示されなくなる…と言うことでは
無いんですよね?。削除したレコードが表示されたまま、 VS-FlexGrid Pro の表示が
更新されないと言うことですよね?。
返答ありがとうございます。
書き方が不十分ですみません。
はい、そうです。レコードが表示されたままで更新されませんでした。
特攻隊長まるるうさん、本当にありがとうございます。
DataGridを使って検証してみます。
結果はあとでお知らせします。
では、失礼します。