電子書籍の厳選無料作品が豊富!

データベースについて、できるのかどうかも含めて全く見当がつかないので教えてください。Accessみたいにと書きましたが、現在はFileMakerを使っています。AccessやFMの場合、レコードを移動した瞬間にそれまで入力していた内容がUPDATEされると思います。Windows Form に SQLSERVERという環境で、そういうことはできるのでしょうか?

質問者からの補足コメント

  • うーん・・・

    ありがとうございます。それは「レコードの移動を検出して」ということなんでしょうか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/06/17 10:43

A 回答 (2件)

> それは「レコードの移動を検出して」ということなんでしょうか。



そうです。
dataTable_RowChangedイベントで行の移動が検知可能そうです。

自前で実装するとテキトーですが、以下のようになると思います。
private void button1_Click(object sender, EventArgs e)
{
// DBから取得したと仮定
var dt = new DataTable();
var c = new DataColumn("column1");
dt.Columns.Add(c);
c = new DataColumn("column2");
dt.Columns.Add(c);
var r = dt.NewRow();
r["column1"] = "1-1";
r["column2"] = "1-2";
dt.Rows.Add(r);
r = dt.NewRow();
r["column1"] = "2-1";
r["column2"] = "2-2";
dt.Rows.Add(r);

// DBに応じたTableAdapterと紐づけ

// BindingSourceと紐づけ
var bs = new BindingSource();
bs.DataSource = dt;
dataGridView1.DataSource = bs;

// 行変更イベントの設定
dt.RowChanged += dt_RowChanged;


}

void dt_RowChanged(object sender, DataRowChangeEventArgs e)
{
Console.WriteLine("行の値が変更された");
// ここでTableAdapterでUpdateを行う
}


また、そんなことせずとも、データソースを登録しておいて、データソースを画面上へ貼りつけることにより、ほぼ動作するスケルトンが出来上がります。
それに対して、RowChangedイベントでもデータ更新するような実装を加えてしまえば、ご希望の動作をするのではないでしょうか。

大分古い、かつVB.NETですが、以下記事が参考になると思います。
http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_ …
http://www.atmarkit.co.jp/fdotnet/vblab/vb2005m_ …

データベースエンジンの違いは関係ありません。
勝手に違いを吸収してテーブル更新を行ってくれます。
具体的なクエリの発行内容が分からないや、何やってるかわからないなどの理由で嫌う人もいますが、好き嫌いなど度外視して構わないほどあっさり動作してくれますよ。
    • good
    • 0
この回答へのお礼

助かりました

なるほど、大変参考になりました!ありがとうございました!

お礼日時:2015/06/17 13:45

DataSet、BindingSource、DataGridViewあたりを使って、更新タイミングを適切に制御すればできると思います。

この回答への補足あり
    • good
    • 0

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

関連するカテゴリからQ&Aを探す