- - PR -
Excel情報をDB(Access)登録したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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の更新をすることです。 ぜひ良い方法を、教えてください。よろしくお願いします。 | ||||
|
投稿日時: 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-20 09:36
Jitta様
返信ありがとうございます。 > ここの処理、本当にこうしているのですか? そうしています。 よくわからなかったので、単に"="でつないでみました。 私の行いたい処理では、Excel側のデータが絶対的に新しいので、 DB側のデータを全部削除して、全部をExcel側のデータに替えてしまいたかったのです。 全部を替えてしまえば、一行ずつ比較する必要はないのではないかと考えたのですが・・・ Jitta様の方法で処理を進めてみます。 ありがとうございました。また、今後ともよろしくお願いいたします。 | ||||
|
投稿日時: 2003-11-20 12:45
みぎゃさん、こんにちは。
参考までに...。 DB側のデータ削除後、 A) DataReader でExcel側のデータを1レコードずつ読みとりながらDB側に対してINSERT文を発行する。 あるいは B) DBが外部データの取込機能を持っているならば、Excel側のデータを元に、取り込める形式のファイルを生成して取込機能を呼び出す。 という手もあります。 | ||||
|
投稿日時: 2003-11-21 17:29
きくちゃん様
ご返信ありがとうございます。 B)思いつきもしませんでした。 Accessなのだし、きっと出来るハズですよね。 諸事情により、作業が進んでいないのですが、 きっと成功させてみせます。 ありがとうございました。 | ||||
|
投稿日時: 2003-11-22 00:30
みぎゃさん、こんばんは。
Accessなら、Excelをそのままインポートできますよ。 |
1