2017-09-24 9 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 관계가있는 두 번째 테이블을 사용하십시오. – Heinzi

+0

@Heinzi 첫 번째 정규형을 위반한다는 것은 무엇을 의미합니까? 항목 1, 항목 2, 항목 3 – ronstoppable

+0

: 난 그냥 내가 같이 데이터베이스에 해당 항목을 저장하려면 내 목록 상자 항목 1 항목 2 항목 3 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