C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 仮.mdb 〜 本.mdbへ一括更新


(過去ログ 71 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■41198 / inTopicNo.1)  仮.mdb 〜 本.mdbへ一括更新
  
□投稿者/ hs (141回)-(2009/09/15(Tue) 11:01:04)

分類:[VB.NET/VB2005 以降] 

VS2008-VB
お世話になってます。
手法について何か良いものがあれば教えてください。

タイトルの通り、.mdbをDBとし、複数人で共有するシステムを開発しているのですが、

システムにログインした時に、ユーザーPCに仮のmdbを作成し、同時に本mdbから特定ユーザーの全データを格納する。
システム使用中は、仮mdbを操作(INSERT,UPDATA,DELETE)し一括で更新させようと考えています。

そこで、私自身が考えられることは、仮mdbの内容を本mdbに一括で更新する際、一度、本mdbにある特定ユーザーのデータを全て削除
仮mdbの内容をすべてINSERTする。という事くらいしか発想できません。

しかし、実際ユーザーがINSERT,UPDATA,DELETEを全くしないとも限らなく、また、1、2件のデータ操作で終わることもあり得ます。
そんなとき上記の手法を使うのも危険な気がして悩んでおります。

なにか良い手法やアドバイスがありましたらご教授いただけると助かります。
よろしくお願いします。
引用返信 編集キー/
■41210 / inTopicNo.2)  Re[1]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ 相変わらず (1回)-(2009/09/15(Tue) 14:27:36)
ハイペースですねえ。
引用返信 編集キー/
■41217 / inTopicNo.3)  Re[2]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ hs (143回)-(2009/09/15(Tue) 16:35:22)
No41210 (相変わらず さん) に返信
> ハイペースですねえ。

^^; 1時間2時間と考えて、調べてとそれで無理ならここが一番だと思っておりまして...
おかげ様で9割9分9厘は解決させて頂いておりますm_ _m

> 雑談(先輩方どんどん加筆してね)のトピ 〜 (改訂4版) 初心者のプログラミングの学び方
> 5「自調自考」(知らないこととわからないことを見極める。どうしてもわから
> ないときにはアドバイスを受ける。でも「教えて君」にならないように留意する。また、質問の仕方を他の掲示板で学ぶ。)

心が痛いです^^;

今後ともよろしくお願いします。
引用返信 編集キー/
■41218 / inTopicNo.4)  Re[1]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ επιστημη (2164回)-(2009/09/15(Tue) 16:41:38)
επιστημη さんの Web サイト
> なにか良い手法やアドバイスがありましたらご教授いただけると助かります。

# アイデア留まりではありますが

オペレーションを記憶しておくことはできませんか?
つまりlocal-DBに対してどんな操作を行ったかをログに残しておき、
master-DBに対しログに残る操作と同じことをすれば復元できる"はず"ですよね。


引用返信 編集キー/
■41249 / inTopicNo.5)  Re[2]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ hs (145回)-(2009/09/16(Wed) 16:04:50)
No41218 (επιστημη さん) に返信
> オペレーションを記憶しておくことはできませんか?
> つまりlocal-DBに対してどんな操作を行ったかをログに残しておき、
> master-DBに対しログに残る操作と同じことをすれば復元できる"はず"ですよね。

このlocalやmasterの概念は、mdbにもあるって事を意味しているのでしょうか?
SQLserverで聞いたことあるような...
引用返信 編集キー/
■41250 / inTopicNo.6)  Re[3]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ επιστημη (2165回)-(2009/09/16(Wed) 16:21:06)
επιστημη さんの Web サイト
> このlocalやmasterの概念は、mdbにもあるって事を意味しているのでしょうか?

違います。あなたの表現に合わせれば local=仮 master=本 です。

引用返信 編集キー/
■41255 / inTopicNo.7)  Re[4]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ hs (147回)-(2009/09/16(Wed) 16:51:52)
No41250 (επιστημη さん) に返信

> 違います。あなたの表現に合わせれば local=仮 master=本 です。
なるほど...失礼いたしました;

> つまりlocal-DBに対してどんな操作を行ったかをログに残しておき、
アドバイスをヒントに仮mdbには、新規flg、更新flg、削除flgのフィールドを追加。
システム使用中、データを更新した際、その処理に合わせてflgをTrueに変更。
一括更新時、仮mdbから、新規flg、更新flg、削除flgがTrueのなったものだけを抽出し以下のように更新されたレコードのみの処理。

Dim mCn As OleDb.OleDbConnection = New OleDb.OleDbConnection() 'master-DBコネクション用
Dim tCn As OleDb.OleDbConnection = New OleDb.OleDbConnection() 'local-DBコネクション用

mCn.Open()
tCn.Open()

Dim Ds As DataSet= New DataSet("Table")
Dim Da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("SELECT * FROM Table WHERE 新規flg=True Or 更新flg=True Or 削除flg=True", tCn)
Da.Fill(Ds, "Table")
Dim Dt As DataTable = Ds.Tables("Table")
For Each Drow As DataRow In Dt.Rows
    'SQL文分岐
    If Drow.Item("削除flg") = True Then
        SQL = "DELETE FROM Table"
    Else
        If Drow.Item("新規flg") = True Then
            SQL = "INSERT INTO Table..."
        Else
            SQL = "UPDATE Table SET フィールド = ..."
        End If
    End If
    Dim Cm As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQL, mCn)
    Cm.ExecuteNonQuery()
Next
mCn.Close()
tCn.Close()

どうでしょうか?
引用返信 編集キー/
■41256 / inTopicNo.8)  Re[5]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ επιστημη (2166回)-(2009/09/16(Wed) 17:05:14)
επιστημη さんの Web サイト
> どうでしょうか?

なんと答えりゃいいんだろ...
期待する結果が得られるならそれでいいんじゃありません?

引用返信 編集キー/
■41259 / inTopicNo.9)  Re[6]: 仮.mdb 〜 本.mdbへ一括更新
□投稿者/ hs (148回)-(2009/09/16(Wed) 17:11:30)
No41256 (επιστημη さん) に返信
> 期待する結果が得られるならそれでいいんじゃありません?

いつもありがとうございます。
期待する結果が得られました!

また何かあった時はよろしくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -