アプリ版:「スタンプのみでお礼する」機能のリリースについて

度々スイマセン。
VB2005、SQLServer2005環境です。

FormA、FormBの2つのフォームがあり、FormAはデータを表示、
FormBはそれに対してデータを追加するというプログラムを
作っています。

FormBでデータを登録し、FormBを閉じたタイミングで、
FormAのDataGridViewを再描画して、最新のデータの状態に
したいのですが、うまくいきません。

---FormAで記述しているコード---
Public Sub Form_Closed(ByVal sender As Object, ByVal e _
As System.Windows.Forms.FormClosedEventArgs)
'登録終了時に、グリッドを再表示

'再表示
Me.TestTableAdapter.Fill(Me.DataSet1.Test)

End Sub

---FormBで記述しているCD---
Private Sub FormB_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Load

AddHandler Me.FormClosed, AddressOf FormA.Form_Closed

End Sub

上記のように、FormBが閉じた時に、イベントで、
Me.TestTableAdapter.Fill(これの中身は、該当テーブルをアスタで
すべて取得してます)を呼んでいます。
FormAには削除処理もあって、その時は、Deleteが流れた後に
Me.TestTableAdapter.Fillを呼んだらデータが最新の状態になった
ので、これで出来るかと思ったのですが…。

Fillの後にDatagridView.Refreshも追加してみましたが、
ダメでした。
どうすれば再描画できるでしょうか?
ご教授ください。

A 回答 (3件)

# 追加検証してみて …


# ANo.2 でMDBと書いてますが SQL Server2005 Express の間違えです
FormBの追加イベントで TableAdapterのUpdateメソッド呼び出して追加行をデータベースに反映すれば良いようですよ

追加イベントで
Dim row as DataRow = TestDS1.Test.NewRow
Row("Name") = TextBox1.Text
TestDS1.Test.Rws.Add( Row )
TesttableAdapter1.Update( TestDS1.Test )
といった具合で データベースに追加行を反映します

その後で FormBを閉じます
このときFormAの Form_Closedイベントにやってくるかどうか確認しましょう
    • good
    • 0
この回答へのお礼

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

ご教授いただいたコードを参考に、反映させることができました。
大変助かりました、ありがとうございました。

お礼日時:2007/09/19 10:32

FormBの追加登録イベントで Insertメソッドなどで追加はされているのでしょうか?



私は、DB自体あまり詳しくないのですが ・・・
FormB側で使っている DataAdapterのFillメソッドだけでは MDBファイルへの反映がうまくいかないようです
Insertメソッドで明示的に追加した場合は反映されるのですが …

当方の確認コード
FormBの追加イベントで
TestTableAdapter.Insert(TextBox1.Text)
Form1.UpdateGrid()

FormA側に
Public Sub UpdateGrid()
  TestTableAdapter.Fill(Me.DataSet1.Test)
  TestDataBinder.ResetBindings(False)
End Sub
といった具合で確認しました
    • good
    • 0
この回答へのお礼

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

とりあえず、暫定的にFormAのActivateイベントで再度読むように
しています。

FormBのほうでinsertは流しているのですが…。

お礼日時:2007/09/19 10:31

呼び出された FormAのClosedイベントで Fillした後に


DataSourceのResetBindingsメソッドを実行してみましょう

Me.TestTableAdapter.Fill(Me.DataSet1.Test)
Me.TestDataBinder.ResetBindings(False)

といった具合です …
    • good
    • 0
この回答へのお礼

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

ResetBindingsメソッドを使用してみましたが、やはりダメでした。
試しにFormAに適当なボタンを配置して、それのクリックイベントで
ResetBindingsメソッドを呼ぶと再描画できていました。
別のFormが絡むからなのでしょうか…。

お礼日時:2007/09/18 10:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!