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

データグリッドへエクセルデータのインポート

1
投稿者投稿内容
たっくん
会議室デビュー日: 2006/12/13
投稿数: 1
投稿日時: 2006-12-13 13:47
VB2005+FlexGrid for .NET(Ver3.0)+Excel2000+SQL-Server2000で開発しています。

マスタメンテ画面を作成中です。
処理の流れ
SQL-Server2000 で作成したテーブルデータをVB.NETで修正できるようにしました。
SQL-Server2000→Dataset→TableAdapter→DataGridで表示しています。

表示されたデータを、エクセルにエクスポートし、エクセル上で編集し
インポートをする際に、キーID列でnullが発生してしまいます。

TableAdpterのKeyID列には、Autoインクリメントをtrueにしてありますので、
単純にエクセルをデータグリッドに表示したときには、KeyID列がnullでも
正しく表示していますが、DataTableをbindしたままインポートをするとnullエラーが
発生してしまいます。

以下ソースを添付します。

---エクセルシートの読込み準備処理

     '全件削除してロード件数分を追加後、LoadGridします---------
Dim row As Integer
For row = 1 To GrdMaster.Rows.Count - 1
Me.T_工程順マスタBindingSource.RemoveCurrent()
Next
'Datasourceを削除して、データグリッド上に表示されるエクセルの読込み件数を調べます。
GrdMaster.DataSource = Nothing

' 一番最初のSheetをロードします。
Dim flags As FileFlags
flags = FileFlags.IncludeFixedCells

'データグリッドにエクセルデータを読み込みます
GrdMaster.LoadGrid(dlg.FileName, FileFormatEnum.Excel, flags)
'件数を取得
Dim _count As Integer = GrdMaster.Rows.Count

'再度、DataGridとTableAdapterをひも付けます
GrdMaster.DataSource = T_工程順マスタBindingSource
'エクセルの件数分だけAddNewします。
For row = 1 To _count - 1
Me.T_工程順マスタBindingSource.AddNew()
Next
'データグリッドにエクセルデータを読み込みます
GrdMaster.LoadGrid(dlg.FileName, FileFormatEnum.Excel, flags)

この時点で、最後の行だけ、エクセルシートに指定されているKeyID列のNullが
維持されてしまう為、エラーが発生します。

どうすればよいでしょうか?

こういう方法ではなくもっといい方法はありませんでしょうか?
1

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