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

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

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

DATATABLEを短く書く方法について

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

■91725 / inTopicNo.1)  DATATABLEを短く書く方法について
  
□投稿者/ TanuTanu (42回)-(2019/07/26(Fri) 11:19:52)
TanuTanu さんの Web サイト

分類:[.NET 全般] 

いつもお世話になっております。

下記のDataSet1.リスト1部分を配列など使用して短くする事は可能でしょうか?

While (Not parser(0).EndOfData)
Dim row As String() = parser(0).ReadFields()
DataSet1.リスト1.Rows.Add(row)
End While

While (Not parser(1).EndOfData)
Dim row As String() = parser(1).ReadFields()
DataSet1.リスト2.Rows.Add(row)
End While

While (Not parser(2).EndOfData)
Dim row As String() = parser(2).ReadFields()
DataSet1.リスト3.Rows.Add(row)
End While

    リスト20まで続きます。

宜しくお願いいたします。


引用返信 編集キー/
■91726 / inTopicNo.2)  Re[1]: DATATABLEを短く書く方法について
□投稿者/ 魔界の仮面弁士 (2259回)-(2019/07/26(Fri) 11:34:16)
No91725 (TanuTanu さん) に返信
> While (Not parser(0).EndOfData)
>  Dim row As String() = parser(0).ReadFields()
>  DataSet1.リスト1.Rows.Add(row)
> End While

tableName = "リスト1"
DataSet1.Tables(tableName).Rows.Add(row)

でどうでしょう。


> リスト20まで続きます。

"リスト20" ではなく
"リスト20" なので、
For ループ等を使うなら、全角変換(StrConv 等)も必要かも。
引用返信 編集キー/
■91727 / inTopicNo.3)  Re[2]: DATATABLEを短く書く方法について
□投稿者/ 魔界の仮面弁士 (2260回)-(2019/07/26(Fri) 11:46:46)
2019/07/26(Fri) 11:49:37 編集(投稿者)

No91726 (魔界の仮面弁士) に追記
> For ループ等を使うなら、全角変換(StrConv 等)も必要かも。

ってことで、たとえばこんな感じ。


For n = 0 To 19
  Dim p = parser(n)
  Dim tblName = "リスト" & StrConv(CStr(n + 1), VbStrConv.Wide, &H411)
  Dim rows = DataSet1.Tables(tblName).Rows

  While Not p.EndOfData
    rows.Add(p.ReadFields())
  End While
Next
引用返信 編集キー/
■91728 / inTopicNo.4)  Re[3]: DATATABLEを短く書く方法について
□投稿者/ KOZ (6回)-(2019/07/26(Fri) 12:26:13)
わりとどうでもいい話ですが、DataColumnCollection も DataTableCollection も柔軟ですよね。
以下全部 True になります。

Dim dt As New DataTable
dt.Columns.Add("FOO")
dt.Columns.Add("あ")
Debug.Print("{0}", dt.Columns.Contains("FOO"))
Debug.Print("{0}", dt.Columns.Contains("foo"))
Debug.Print("{0}", dt.Columns.Contains("FOO"))
Debug.Print("{0}", dt.Columns.Contains("ア"))
Debug.Print("{0}", dt.Columns.Contains("ア"))
dt.TableName = "リスト20"

Dim ds As New DataSet()
ds.Tables.Add(dt)
Debug.Print("{0}", ds.Tables.Contains("リスト20"))
Debug.Print("{0}", ds.Tables.Contains("リスト20"))
Debug.Print("{0}", ds.Tables.Contains("リスト20"))

引用返信 編集キー/
■91733 / inTopicNo.5)  Re[4]: DATATABLEを短く書く方法について
□投稿者/ 魔界の仮面弁士 (2261回)-(2019/07/26(Fri) 13:41:41)
2019/07/26(Fri) 13:48:50 編集(投稿者)

No91728 (KOZ さん) に返信
> わりとどうでもいい話ですが、DataColumnCollection も DataTableCollection も柔軟ですよね。
> 以下全部 True になります。

こんなのもあったりします。柔軟というか、いい加減というか…。

# 元ネタは GotDotNet Japan あたりだったかな? (うろ覚え)


Dim ds1 As New DataSet("ds1") With {.CaseSensitive = True}
ds1.Tables.Add("DT1").Columns.Add("◎゛")
ds1.Tables.Add("DT2").Columns.Add("◎゜")
ds1.Tables.Add("DT3").Columns.Add("◎")

'これは True
Console.WriteLine(ds1.Tables("DT1").Columns.Contains("●"))

'これらは False
Console.WriteLine(ds1.Tables("DT2").Columns.Contains("●"))
Console.WriteLine(ds1.Tables("DT3").Columns.Contains("●"))


Dim ds2 As New DataSet("ds2") With {.CaseSensitive = True}
ds2.Tables.Add("●")

'これらは True
Console.WriteLine(ds2.Tables.Contains("●"))
Console.WriteLine(ds2.Tables.Contains("◎゛"))
Console.WriteLine(ds2.Tables.Contains("○゜゜"))
Console.WriteLine(ds2.Tables.Contains("○゛゛゛゛"))
引用返信 編集キー/
■91734 / inTopicNo.6)  Re[5]: DATATABLEを短く書く方法について
□投稿者/ KOZ (9回)-(2019/07/26(Fri) 13:49:25)
No91733 (魔界の仮面弁士 さん) に返信
> こんなのもあったりします。柔軟というか、いい加減というか…。
うーん、うれしい人がいるんでしょうか(@_@;)
引用返信 編集キー/
■91739 / inTopicNo.7)  Re[6]: DATATABLEを短く書く方法について
□投稿者/ TanuTanu (43回)-(2019/07/26(Fri) 15:26:12)
TanuTanu さんの Web サイト
魔界の仮面弁士 様、KOZ 様

いつもお世話になっております。

短くなりました。又、いろいろ教えて頂いて勉強になります。

ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ