2017-09-24 1 views
0

病気の病歴をデータベースに保存するvb.netアプリケーションを作成しようとしています。しかし、私はどのように私はすべてのリストボックスの項目を(セパレータとしてコンマを使用して)単一の行に保存するつもりです。
私はこのコードを使用してみましたが、それは唯一の最後のレコードを保存します。
すべてのリストボックス項目をカンマ( "、")を区切り文字としてデータベースに保存する方法

Dim diagnosis As String 
     For i As Integer = 0 To txtDiagnosis.Items.Count - 1 
      diagnosis = String.Concat(txtDiagnosis.Items(i), ",") 
     Next 
      'Insert Query Here 

は、私もそれの後にカンマを持っていない最後のレコードを望んでいました。事前に感謝

+0

これは、[第1正規形]に違反(のコレクションにコレクションをキャストする必要がListBox.Itemsについては

Dim allDiagnosis = txtDiagnosis.Items.Select(Function(item) item.ToString()) Dim diagnosis As String = String.Join(", ", allDiagnosis) 

文字列のコレクションに項目を変換することができますhttps://en.m.wikipedia.org/wiki/First_normal_form)。代わりに1:nの関係を持つ2番目の表を使用してください。 – Heinzi

+0

@Heinzi最初の正規形に違反しているとはどういう意味ですか? アイテム1、アイテム2、ITEM3 – ronstoppable

+0

:私はちょうど私は、データベースへのこれらの項目を保存したい私のリストボックス アイテム1 アイテム2 ITEM3 に3つの項目を持つ例えば、セパレータとしてカンマ(、)を使用して、データベースへのすべてのリストボックスアイテムを保存します私がリンクしているWikipediaの記事を読んだことがありますか? – Heinzi

答えて

0

String.Join機能を使用してください。 String.Join(Of T) Method

Dim diagnosis As String = String.Join(", ", txtDiagnosis.Items) 

あなたが明示的にオブジェクト

Dim allDiagnosis = txtDiagnosis.Items. 
           Cast(Of Object)(). 
           Select(Function(item) item.ToString()) 
Dim diagnosis As String = String.Join(", ", allDiagnosis) 
+0

この方法でこのエラーが発生しました(遅延バインディング拡張メソッドはサポートされていません) – ronstoppable

+0

@ronstoppable、 'txtDiagnosis.Items'のタイプは何ですか? – Fabio

+0

私はそれが何を意味するのか分かりません。しかし、私は上記のあなたのコードを試してみましたが、これは私にこのエラーを与えました: ''Public Function Str(Number As Object)As String'のパラメータ 'Number'に引数が指定されていません。'と ' '選択'は 'System.Windows.Forms.ListBox.ObjectCollection'のメンバーではありません。 ' – ronstoppable

関連する問題