いつもお世話になってます。VB2005の初心者の質問です。
データの変更頻度が少ないのでMDBテーブルをDataGridViewの表示させて行の状態から追加変更したいのですが肝心な部分がわかりません。
DB名=NO.MDB
テーブル名=番号 (IDNO、addres、TELNO の3項目です)
Private Sub 更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 更新.Click
Dim dSet As DataSet = New DataSet("番号")
Dim cn As OleDb.OleDbConnection = NewOleDb.OleDbConnection( _
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=NO.mdb;")
Dim dRow As DataRow
Dim dTbl As DataTable
Dim i As Integer
dTbl = DataGridView1.DataSource
For i = 0 To dTbl.Rows.Count - 1
If dTbl.Rows(i).RowState = DataRowState.Added Then
MessageBox.Show(i, "件目") →デバック表示です
??????? Addedならレコードの追加をしたいです
End If
Next
End Sub
ご回答よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
ANo.1 です。
初心者の方には不親切なアドバイスだったかなと思い補足いたします。
また、記述に一部誤りがあったので訂正とお詫びいたします。
まず、MDBファイルをデータソースとして扱うために「データソースの追加」を
行っていますよね?
私はサンプルのNorthwind.mdbの「社員」テーブルを使用しました。
そうすると、「表示」→「ソリューション エクスプローラ」でソリューション エクスプローラに
指定した"「データソース名」.xsd"が表示されます。これをダブルクリックしてください。
表示された"「データソース名」.xsd"には"「テーブル名」TableAdapter"という項目がありますので、
これを右クリック→追加→QueryでInsertのSQL文を記述します。
これで"「テーブル名」TableAdapter"にはInsertQueryというメソッド(ですよね?)が追加されます。
(ここではInsert文だけ記述していますが、Select文、Update文も記述できるはずです。)
あとはコードを見てもらえばわかっていただけると思います。
==== Code ====
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: このコード行はデータを 'NorthwindDataSet1.社員' テーブルに読み込みます。必要に応じて移動、または削除をしてください。
Me.社員TableAdapter.Fill(Me.NorthwindDataSet1.社員)
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dTbl As NorthwindDataSet.社員DataTable
Dim i As Integer
dTbl = Me.NorthwindDataSet1.社員
For i = 0 To dTbl.Rows.Count - 1
If dTbl.Rows(i).RowState = DataRowState.Added Then
MessageBox.Show(i, "件目") '→デバック表示です
Me.社員TableAdapter.InsertQuery(dTbl.Rows(i).Item(0), dTbl.Rows(i).Item(1), dTbl.Rows(i).Item(2), dTbl.Rows(i).Item(3))
End If
Next
End Sub
End Class
==== end of Code ====
ちなみに私は、
SELECT 社員コード, 氏名, 在籍支社, 部署名 FROM 社員
でテーブルを開き、
INSERT INTO `社員` (`社員コード`, `氏名`, `在籍支社`, `部署名`) VALUES (?, ?, ?, ?)
というふうにクエリを設定していますので、
Me.社員TableAdapter.InsertQuery(dTbl.Rows(i).Item(0), dTbl.Rows(となります。
(InsertQuery()の1つ目の引数が、Values()の1つ目の"?"に対応します。)
==== 訂正とお詫び ====
前回、
>InsertCommandプロパティを設定し、OleDataAdapterメンバのUpdateメソッドを実行すれば良いのでは?
と書きましたが、Insertメソッドの実行が正しいです。
誤った記述をしてごめんなさい。
==== 追記 ====
これを機会に、Visual Basic 2005 Express Editionをインストールしてみました。
ついでにASP.NET環境も整えました。
知識を新しくする機会を与えてくれたことを感謝します。
お礼が遅くなり申し訳ありません。
詳細に回答をいただきながら感謝なんて恐れ入ります。
当方も自力で対処できるよう、また新しい知識の蓄積に努めてまいります。
どうもありがとうございました。
No.1
- 回答日時:
回答される方がいらっしゃらないようなので。
。。当方、VBを書いたことがありません。Visual Studioも持っていませんので
あくまで参考です。
OleDataAdapterクラス
http://msdn2.microsoft.com/ja-jp/library/system. …
というものがあるようです。
そして、OleDataAdapterメンバにInsertCommandプロパティというInsert文を定義するためのプロパティがあります。
InsertCommandプロパティを設定し、OleDataAdapterメンバのUpdateメソッドを実行すれば良いのでは?
ちなみにOleDataAdapterメンバは、上記URLのページの下方「参照」からたどっていけます。
ページの左のツリーからたどってもいけます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
-
4
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
5
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
6
DataGridViewのカラムに自動で連番
Visual Basic(VBA)
-
7
DataSetから、DataTableを取得したい。
C言語・C++・C#
-
8
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
9
DataGridの中身をDataSetにテーブルとして保存する方法 (初心者)
Visual Basic(VBA)
-
10
DataGridViewで変更した値を反映させたい。
Visual Basic(VBA)
-
11
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
12
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
13
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
14
VB.net 重複チェックがしたいです
Visual Basic(VBA)
-
15
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
16
ASP.NET OleDbConnectionが定義がされていません
Microsoft ASP
-
17
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
18
複数SQL発行について
Visual Basic(VBA)
-
19
グリッドの列の最大値を求めたい。
Visual Basic(VBA)
-
20
別フォームから戻ったときのイベント
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WORD VBA プログラム修正をお願...
-
SQLを発行とは?クエリの作成と...
-
任意の周波数の正弦波(サイン...
-
VBとアクセスでSQL文に変...
-
Excel複数シートをaccessへ一括...
-
エクセルのテーブルを解除する...
-
★クリスタルレポートの元になる...
-
ヘッダ(*.h)に定義したテーブル...
-
ExcelVBAからAccessMDB内のテー...
-
Access SQLITEのリンクテーブ...
-
AccessからExcelへエクスポート...
-
ACCESS2010 実行時エラー 2766
-
他のMDBのテーブルに追加したい
-
VBA 変数名に変数を使用したい。
-
Excel VBA で日付を4ケタの数値...
-
クリスタルレポートで困ってい...
-
VBA フォルダ内のファイルを、...
-
AccessのDAOでフィールド名を配...
-
C#で変数名の取得
-
VBScript で ADO Streamオブジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
他のMDBのテーブルに追加したい
-
SQLを発行とは?クエリの作成と...
-
手動または分散トランザクショ...
-
HTMLのテーブルの行数が多くな...
-
エクセルのテーブルを解除する...
-
ExcelVBAからAccessMDB内のテー...
-
Excel複数シートをaccessへ一括...
-
DataGridの中身をDataSetにテー...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
.net 複数の主キーを設定する方法
-
『列名 '担当者CD' があいま...
-
COBOLのINVALID KEYが理解でき...
-
アクセステーブル、リンクとロ...
-
ACCESSのテーブル名をリストに...
-
MDBテーブルへの追加変更を教え...
-
【ADO】「Execute」を使うと...
-
ACCESS2010 実行時エラー 2766
おすすめ情報