@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Excel情報をDB(Access)登録したい

1
投稿者投稿内容
みぎゃ
会議室デビュー日: 2003/11/19
投稿数: 8
投稿日時: 2003-11-19 18:08
はじめて投稿します。宜しくお願いします。

大変初歩的な質問で申し訳ないのですが、
Excelファイルからデータを読み込みDB上のデータを更新したいのですが、
どうも上手く出来ません。

現在私が行っているのは以下のような方法です。
コマンドボタンのクリックイベントで
 1.DBのデータでDataSetを形成。
 2.Excelのデータで別のDataSetを形成。
 3.DBのDataSetの内容を、ExcelのDataSetに置き換える。
   (DbDataset=ExcelDataset)
 4.DBのDataSetをUpdate
 5.新しくなったDBのDataSetの内容をDataGridに表示。

DataSetには、Excelで取り込まれた内容が表示されます。
しかし、DBは更新されていません。
CommandBuilderをつかってみたりもしてみましたが、結果は同じでした。


根本的な考え方が間違っているのでしょうか?
最終目標は コマンドボタン押下時に、エクセルファイルを参照しDBの更新をすることです。

ぜひ良い方法を、教えてください。よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-19 21:37
>大変初歩的な質問で申し訳ないのですが、
 見かけるごとに思うのですが、いったい何を持って「初歩的な質問」と判断しているのでしょう???
#槍玉に挙げてすみません。無視してください。


> 3.DBのDataSetの内容を、ExcelのDataSetに置き換える。
>   (DbDataset=ExcelDataset)

 ここの処理、本当にこうしているのですか?
dim dbDataSet as dataset = データベースから読み込み
dim excelDataSet as dataset = エクセルから読み込み
dbDataSet = excelDataSet

ここの処理がわからないとなんとも答えられませんが、私ならこうします。
1.両方のデータセットを同じキーでソートする
2.両方のデータセットから1行ずつ取り出す
3.1.同じデータなら比較して、違うならエクセル側のデータで更新する
3.2.DB側が進んでいれば、エクセル側のデータを挿入する
3.3.エクセル側が進んでいれば、削除する
4.次のデータ読み込む
5.3にもどる

よく見ると、「4」の処理が間違っている。
「次のデータを読み込む」は、3.1のときは両方、3.2のときはエクセル側のみ、3.3のときはデータベース側のみ。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-11-20 08:39 ]
みぎゃ
会議室デビュー日: 2003/11/19
投稿数: 8
投稿日時: 2003-11-20 09:36
Jitta様

返信ありがとうございます。

> ここの処理、本当にこうしているのですか?
そうしています。
よくわからなかったので、単に"="でつないでみました。
私の行いたい処理では、Excel側のデータが絶対的に新しいので、
DB側のデータを全部削除して、全部をExcel側のデータに替えてしまいたかったのです。
全部を替えてしまえば、一行ずつ比較する必要はないのではないかと考えたのですが・・・


Jitta様の方法で処理を進めてみます。
ありがとうございました。また、今後ともよろしくお願いいたします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-20 12:45
みぎゃさん、こんにちは。

引用:

DB側のデータを全部削除して、全部をExcel側のデータに替えてしまいたかったのです。


参考までに...。

DB側のデータ削除後、

A) DataReader でExcel側のデータを1レコードずつ読みとりながらDB側に対してINSERT文を発行する。

あるいは

B) DBが外部データの取込機能を持っているならば、Excel側のデータを元に、取り込める形式のファイルを生成して取込機能を呼び出す。

という手もあります。
みぎゃ
会議室デビュー日: 2003/11/19
投稿数: 8
投稿日時: 2003-11-21 17:29
きくちゃん様

ご返信ありがとうございます。

B)思いつきもしませんでした。
Accessなのだし、きっと出来るハズですよね。

諸事情により、作業が進んでいないのですが、
きっと成功させてみせます。

ありがとうございました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-11-22 00:30
みぎゃさん、こんばんは。

引用:

Accessなのだし、きっと出来るハズですよね。


Accessなら、Excelをそのままインポートできますよ。
1

スキルアップ/キャリアアップ(JOB@IT)