2016-04-29 9 views
1

ユーザー入力(コンソールから入力)をVisual Basicのデータセットに格納する必要があります。これは可能ですか?私はそうすることについてオンラインで何か情報を見つけることができないようです。誰かが正しい方向に私を指すことができる場合は、それは素晴らしいだろう!データセットにユーザー入力を設定できますか?

EDIT:Myテーブルの列は、Personという名前のテーブルのFirstName、LastName、Stateなどです。 コンソールのアプリケーションの開始:「Enter FirstName:」、次に「EnterLastName:」など

ユーザー入力の値は、特定の変数に格納されます。 firstName、lastNameなので、これらの変数をどのようにデータセットに入れることができるかを知りたいと思います。

ありがとうございます。

答えて

1

ここでは簡単で基本的な例を示します。おそらく、他のものの中から型付きデータセットを使用したいと思うので、必要なものに対しては直接的には機能しません。あなたの質問はあなたが既に試したかもしれないコードに関する質問を指定していないので、私はこれをすべて提供するつもりです。

Option Strict On 

Module Module1 

    Sub Main()  
     Dim ds As DataSet = CreateNewDataSet() 
     Dim entries As New List(Of String()) 
     For i = 1 To 3 
      Console.WriteLine($"Enter first column value for row {i.ToString}:") 
      Dim input1 As String = Console.ReadLine() 
      Console.WriteLine($"Enter second column value for row {i.ToString}:") 
      Dim input2 As String = Console.ReadLine() 
      entries.Add({input1, input2}) 
     Next  
     entries.ForEach(Sub(x) ds.Tables(0).Rows.Add(x))  
    End Sub 

    Private Function CreateNewDataSet() As DataSet 
     Dim ds As New DataSet() 
     Dim dt As New DataTable() 
     Dim col1 As New DataColumn("Column1") 
     Dim col2 As New DataColumn("Column2") 
     dt.Columns.AddRange({col1, col2}) 
     ds.Tables.Add(dt) 
     Return ds 
    End Function 
End Module 
+0

これは私が探しているものです。どうもありがとうございました!乾杯! :-) – TimmyHoHoo

0

リフレクションを使用して入力オブジェクトのプロパティの名前を取得できます。また、属性を使用してプロパティをフィルタリングすることもできます。配列を行としてロードするには、DataTable.LoadDataRowメソッドを使用します。 は、動的に行う方法の例です:

Dim input As New List(Of Object) 
For i = 0 To 5 
    Console.WriteLine("enter your first name and last name:") 
    input.Add(New With {.First = Console.ReadLine, .Last = Console.ReadLine}) 
Next 

Dim myData As New DataSet 
Dim table = myData.Tables.Add() 
table.Columns.AddRange(input.First.GetType.GetProperties.Select(Function(p) New DataColumn(p.Name)).ToArray) 
input.ForEach(Function(o) table.LoadDataRow(o.GetType.GetProperties.Select(Function(p) p.GetValue(o, Nothing)).ToArray, False)) 

For Each row In table.Rows 
    Console.WriteLine("first:{0} ,Last:{1}", row(0), row(1)) 
Next 
+0

データセットにある値を表示しようとすると、ファーストネームの空白が表示されます。私もエラーが表示されます: '列1を見つけることができません' – TimmyHoHoo

+0

@TimmyHoHoo多分あなたは何かを見逃しています。上記のコードをコピー&ペーストしてもう一度お試しください。 –

関連する問題