Share via


Excel からのデータベース更新系のお話( [Excel のデータ] → [Dataset] → [テーブルアダプター])

[今日のみちしるべ第8回 RoomB って何人部屋ですか?]

私が担当する Tech-ED セッション " Visual Studio 2008 を使った Office 開発の道標" の日時が決まりました!

と思ったら、再度、変更されました。

現時点での日時は以下になります。

8/27(水) 15:15 - 16:30

内部情報的には Room B ということなんですが、、、これはどのくらいの規模なんでしょうかね?

今度、僕の師匠の奥主さんに聞いてみたいと思います。

「師匠!この記事を読んでいたら教えてくださーい!」

まあ、どちらにしても、そこそこでかいのはなんとなく理解しております。(笑)

さて、好例(笑)の一言コメント(一言ではないです。)ですが、

今日は自身の強みというものをなんだか意識しました。

会社や人の強みというものは周りにとって理解されやすく、また、それらを取り巻く、いろいろなものをいい意味で盛り上げていくものかなと思います。

それがうちでいうと Office プロダクトのシェアだったり、人でいうと得意技や必殺技でしょうか。

その強みをベースにして、時には打って出て、時には守りのほうが、効率的な気がしています。

でも、実際には弱い分野に多大な投資をして、失敗したり(具体的なうちの例は言えませんが(笑))、弱い部分を無理に補強して無駄にリソースや時間を費やしたりとか、いろいろありますよね。(もちろん、会社や組織における人の教育は投資すべきだとは思います。)

そうこうしているうちに自身の強い部分の守りがおろそかになり、最終的に余力が無くなり、駆逐されるということが世の常なのかなと思います。

これは会社や人やすべてのものに言える気がします。

これは人の考え方の傾向が大きく影響しているのかもしれませんが、なんだかもどかしく思います。

もったいないと。

ここに気付くか気付かないだけで人生って、大きく、違ってくるような気がします。

私も駆逐(?)されないように日々、精進したいと思っています。

きっと僕の誇れる強さは元々何も持って無かったというところだと思います。

元々、捨てるものがなかったということですね(笑)。

だから、手に入れたものの大事さへの理解は誰にも負けない気がします。

[本題]

Dataset を利用したレコードの追加とテーブルアダプターへのアップデートです。

これまで、いくつかのサンプルで取り上げているのですが、更新系については明示的に記載しておりませんでした。

VS の更新系と同じなのですが、VSTO でもよくつかわれると思いますので、ここでも明示的に取り上げておこうと思います。

以下の画面では、シートにデータを入力し、更新ボタンをクリックすることで、データベースにアップデートされます。

image

image

コード的には以下のような感じです。

VB 版:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'Dataset に新規データ行を追加するための宣言
    Dim drow As DataRow = 旅費精算DataSet1.交通費精算.NewRow()

    'シート上のデータを元に各列に値を追加
    drow("ID") = DateTime.Now
    drow("日付") = Me.Range("A3").Text.ToString
    drow("発駅") = Me.Range("B3").Text.ToString
    drow("着駅") = Me.Range("C3").Text.ToString
    drow("料金") = Me.Range("D3").Text.ToString

    '新規行を明示的に追加
    旅費精算DataSet1.交通費精算.Rows.Add(drow)

    'テーブルアダプターへのアップデート
    交通費精算TableAdapter1.Update(旅費精算DataSet1.交通費精算)
    MessageBox.Show("データベースに登録しました!")

End Sub

C# 版:

private void button1_Click(object sender, EventArgs e)
{
object missing = System.Type.Missing;

    //Dataset に新規データ行を追加するための宣言
    DataRow drow = 旅費精算DataSet1.交通費精算.NewRow();

    //シート上のデータを元に各列に値を追加
    drow["ID"] = DateTime.Now;
    drow["日付"] = this.Range["A3",missing].Text.ToString();
    drow["発駅"] = this.Range["B3",missing].Text.ToString();
    drow["着駅"] = this.Range["C3",missing].Text.ToString();
    drow["料金"] = this.Range["D3",missing].Text.ToString();

    // 新規行を明示的に追加
    旅費精算DataSet1.交通費精算.Rows.Add(drow);

    //テーブルアダプターへのアップデート
    交通費精算TableAdapter1.Update(旅費精算DataSet1.交通費精算);
    MessageBox.Show("データベースに登録しました!");

}

上記サンプルを確認していただけると [Excel のデータ] - [Dataset] - [テーブルアダプター]の一連の流れを確認することができるかと思います。