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

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

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

Re[1]: DataSetのバグですか?解決策はありませんか?


(過去ログ 43 を表示中)

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

■23235 / inTopicNo.1)  DataSetのバグですか?解決策はありませんか?
  
□投稿者/ T.Hayashi (2回)-(2008/08/11(Mon) 17:30:10)

分類:[.NET 全般] 

2008/08/11(Mon) 17:31:31 編集(投稿者)

各位、お世話になっております。

VBの開発中、下記の不思議な現象と遭いましたので、その解決策を何方から教えていただきませんか。

DateTableのコピーの作業です。



Dim dt As DataTable = Me.ds.Tables("Tbl").Copy()

コピー元
Added
SEQ_NO=1,COURSE_NO=3741
Added
SEQ_NO=2,COURSE_NO=3742
Added
SEQ_NO=3,COURSE_NO=3742

コピー結果
Added
SEQ_NO=1,COURSE_NO=3741
Added
SEQ_NO=2,COURSE_NO=3741
Added
SEQ_NO=3,COURSE_NO=3742

何とか、コピーの結果は、コピー元のデータとは、違っています。
(SEQ_NO=2,COURSE_NO=3742→SEQ_NO=2,COURSE_NO=3741)

びっくりしました。

@ちなみに、使っているFrameworkは、古くて、それらのバグの影響でしょうか。
Microsoft Development Environment2003 Version7.1.3091
Mircrosoft .NET Framework 1.1 Version 1.1.4322 SP1
Microsoft Visual Basic .NET 69504-270-0000007-18676

Aコピー元のDataSetは、AcceptChanges()を適用していない生のDataSetですが、Copyメッソドは使えないのでしょうか?




引用返信 編集キー/
■23236 / inTopicNo.2)  Re[1]: DataSetのバグですか?解決策はありませんか?
□投稿者/ じゃんぬねっと (553回)-(2008/08/11(Mon) 17:52:37)
情報共有のためにクロスポストをリンクします。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=45962&forum=7
引用返信 編集キー/
■23238 / inTopicNo.3)  Re[1]: DataSetのバグですか?解決策はありませんか?
□投稿者/ 魔界の仮面弁士 (804回)-(2008/08/11(Mon) 17:57:38)
2008/08/11(Mon) 17:58:46 編集(投稿者)

No23235 (T.Hayashi さん) に返信
> VBの開発中、下記の不思議な現象と遭いましたので、その解決策を何方から教えていただきませんか。
試してみましたが、当方では再現しませんでした。
現象を再現可能なコードを提示する事はできますか?


' ソース ファイル名
' 「C:\sample.vb」
'
' コンパイル コマンドライン
' 「C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\vbc.exe /r:System.DLL,System.Data.DLL,System.XML.DLL /out:C:\sample.exe C:\sample.vb」
'
Imports System
Imports System.Data
Module Test
 Sub Main()
  Dim ds As New DataSet()

  Dim T1 As DataTable = ds.Tables.Add("Tbl")
  T1.Columns.Add("SEQ_NO", GetType(Short))
  T1.Columns.Add("COURSE_NO", GetType(Short))
  T1.Rows.Add(New Object() {1, 3741})
  T1.Rows.Add(New Object() {2, 3742})
  T1.Rows.Add(New Object() {3, 3742})

  Console.WriteLine("オリジナル")
  Dump(T1)

  Dim T2 As DataTable = T1.Copy()
  Console.WriteLine("コピー先")
  Dump(T2)
 End Sub

 Sub Dump(ByVal tbl As DataTable)
  Const fmt As String = "{0,-10}: SEQ_NO={1}, COURSE_NO={2}"
  For Each row As DataRow In tbl.Rows
   Console.WriteLine(fmt, row.RowState, row(0), row(1))
  Next
 End Sub
End Module


===== 実行結果 =====

オリジナル
Added : SEQ_NO=1, COURSE_NO=3741
Added : SEQ_NO=2, COURSE_NO=3742
Added : SEQ_NO=3, COURSE_NO=3742
コピー先
Added : SEQ_NO=1, COURSE_NO=3741
Added : SEQ_NO=2, COURSE_NO=3742
Added : SEQ_NO=3, COURSE_NO=3742
引用返信 編集キー/
■23239 / inTopicNo.4)  Re[2]: DataSetのバグですか?解決策はありませんか?
□投稿者/ T.Hayashi (3回)-(2008/08/11(Mon) 19:22:40)

> 試してみましたが、当方では再現しませんでした。
> 現象を再現可能なコードを提示する事はできますか?
>

魔界の仮面弁士さん
かなり詳細なサンプルを作って、丁寧に回答頂きまして、ありがとうございます。

こっちのソースでは、大型プロジェクトの一部ですので、環境がないと単独では動けません。申し訳ないです。

魔界の仮面弁士さんが試したように、一般的なCopyのバッグではなければ、安心にしました。(Copyをあっちこっちで使っていますから、もしバッグであれば、全てのソースの信用がなくなります。)

それでは、我々の環境、例えばメモリの乱れなどを考えて、原因究明にします。

再び感謝の意を表せて頂きます。
引用返信 編集キー/
■23248 / inTopicNo.5)  Re[3]: DataSetのバグですか?解決策はありませんか?
□投稿者/ 通りすがり (38回)-(2008/08/11(Mon) 22:58:52)
バッグってなに?バグのこと?
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -