VB2008とADO.NETを勉強中の初心者です。
以下のようなプログラムで、デ-タテ-ブルの内容を変更後(このプログラムでは削除のみですが、追加の処理もやりたいと思っています)"SYOYOURYOU"を更新して、再度読み込みたいと思っています。
いろいろ、参考書等を見たのですが旨く処理できません。
*DBを再読み込みのために更新* の部分での記述の方法を教えて頂けないでしょうか。
よろしくお願いします。
'*LLCの初期化
Dim LLC As Integer = 0
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\MAPICS\MAPICS-S.mdb"
Dim da As OleDbDataAdapter 'DataAdapterの作成
'*LLCを 0 から 10 まで処理
For LLC = 0 To 10
'所要量抽出
'DataAdapterの作成
da = New OleDbDataAdapter("SELECT * FROM SYOYOURYOU WHERE Syo_LLC =" & Str(LLC), cn)
'データを取得
Dim ds As New DataSet
da.Fill(ds, "SYOYOURYOU")
If ds.Tables("SYOYOURYOU").Rows.Count > 0 Then
'DataGridViewに表示
DataGridView1.DataSource = ds.Tables("SYOYOURYOU")
MsgBox("確認1")
For i = 0 To ds.Tables("SYOYOURYOU").Rows.Count - 1
'SYOYOURYOUをもとに処理を行う(この部分は省略)
'処理済みのSYOYOURYOUのデ-タを削除
Dim dr As DataRow
dr = ds.Tables("SYOYOURYOU").Rows(i)
dr.Delete()
'DataGridViewに表示
DataGridView1.DataSource = ds.Tables("SYOYOURYOU")
MsgBox("確認1")
Next
'*****************************
'DBを再読み込みのために更新
'*****************************
End If
Next
'終了処理
End
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
教科書どおりの手順で DataAdapterやDataSetを生成してあるのでしょうか?
質問の部分では DataAdapterは『da』、DataSetは『ds』としていますよね
これでは Update用のSQLは自前で構築するかOldeDbCommandBuilderで生成することになります
dim cb as new OleDbCommandBuilder( da )
といった具合で UpdateやInsert,Delete用のOleDbCommandオブジェクトを生成してdaに関連付けをしておきます
# WHERE付で 自動生成したかなぁ ・・・
削除処理の段階で
da.Update(ds)
でいいように思います ・・・
お手数をかけました。
重ねての回答ありがとうございました。
Dim cmdbuler As New OleDbCommandBuilder
cmdbuler.DataAdapter = da
da.Update(ds, "SYOYOURYOU")
でうまくDBを書き換えることができました。
今後ともよろしくお願いします。
No.1
- 回答日時:
データの削除を MDBに反映させた後 もう一度削除済みのデータを読み込むのでしょうか?
それとも別のDataSet(または DataTable)へ削除前のデータを読み込みたいのでしょうか?
前者なら TableAdpternのUpdateメソッドで反映させるだけのように思います
後者なら 別のdsオブジェクト等を生成して Fillすればいいのでは ・・・
# 見当違いならご容赦ください
この回答への補足
早速の回答ありがとうございました。
>データの削除を MDBに反映させた後 もう一度削除済みのデータを読み込むのでしょうか
はい、上記のような処理をしたいと思っています
>前者なら TableAdpternのUpdateメソッドで反映させるだけのように思います
参考書にも以下のように書いてあり、
Dim tb As DataTable
tb = OrderDataSet.Goods.GetChanges(DatarowState.Deleted)
GoodsTableAdapter.Update(tb)
これを質問のプログラムのデ-タセットに置き換えて入力すると
Dim tb As DataTable
tb = MAPICS_SDataSet.SYOYOURYOU.GetChanges(DataRowState.Deleted)
SYOYOURYOUTableAdapter.Update(tb)
エラー1名前 'MAPICS_SDataSet' は宣言されていません。
エラー2名前 'SYOYOURYOUTableAdapter' は宣言されていません。
のエラ-が出てしまいます。
エディタ-のデ-タソ-スウインドウには、'MAPICS_SDataSetのしたに
SYOYOURYOUTが表示されています。
お手数を掛けますが、どのような記述にすればよいかご教授ください。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
問題作成のWebアプリの作り方を...
-
SetDlgItemInt( ) c++
-
処理終了後、他のページへジャ...
-
VB6で、長い時間かかる処理...
-
プログラミング、VB.NET(初歩です)
-
バッファリング処理を高速化し...
-
UWSC SLCTBOXもしくはSELECTに...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
16進の10進変換について
-
メモリをアドレスを直接指定し...
-
文字の横にプルダウンを表示さ...
-
実行時エラー 3020の対策
-
テーブル内でドロップダウンメ...
-
formで特定のinputを送信しない...
-
sendmailで複数の宛先にメール...
-
構造体の各データの表示につい...
-
vscode 文字化け
-
【メモリ不足で落ちる(python)】
-
パイソンプログラミング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
C言語のflagの使い方が分かりま...
-
VBAのCallステートメントについて
-
実行中の変数の中身をイミディ...
-
処理終了後、他のページへジャ...
-
初回起動のみ判別したい
-
回数を指定しないで空白行まで...
-
問題作成のWebアプリの作り方を...
-
UWSC SLCTBOXもしくはSELECTに...
-
フラグをたてる、、の意味を教...
-
perl:ループのカウンタ変数の値...
-
バッファリング処理を高速化し...
-
夕方くらいから急にGoogle検索...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
どちのほうがすきですか?
-
formで特定のinputを送信しない...
-
文字の横にプルダウンを表示さ...
-
16進の10進変換について
-
実行時エラー 3020の対策
おすすめ情報