私はwindows forms application
にレコードを追加するデータテーブルを持っています。このデータテーブルは2列しか持たず、最初の列は主キーで整数です。 2番目の列には名前が含まれているので、リストボックスからテーブルに名前のリストを自動的に追加する必要があります。これらの名前の大部分はすでにテーブルに独自のレコードがありますが、そのたびにリストボックスに異なる名前が表示されます。私は重複が追加されていないことを確認するために、既存のレコード項目をリストボックス項目と照合する必要がありますが、リストボックスにデータテーブルに存在しない名前がある場合は、その名前の新しいレコードを追加します。リストボックス項目に対して既存のデータベースレコード項目を確認する
Private m_cn As New SqlConnection()
Private m_DA As SqlDataAdapter
Private m_CB As SqlCommandBuilder
Private m_DataTable As New DataTable
Private m_IntRowPosition As Integer = 0
Private Sub btnInsertIntoDatabase_Click(sender As Object, e As EventArgs) Handles btnInsertIntoDatabase.Click
Dim drReadRow As DataRow = m_DataTable.NewRow()
Dim dcReadCol As DataColumn = m_DataTable.Columns.Item(1)
Dim intLoopCounter As Integer = 0
Dim unique As Boolean = True
If m_DataTable.Rows.Count = 0 Then
For m_IntRowPosition = 0 To (lstScannedNames.Items.Count() - 1)
Dim drNewRow As DataRow = m_DataTable.NewRow()
drNewRow("emp_id") = m_IntRowPosition
drNewRow("emp_name") = RTrim(lstScannedNames.Items.Item(RTrim(m_IntRowPosition)))
m_DataTable.Rows.Add(drNewRow)
Next m_IntRowPosition
GoTo SomeWhereElse
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ElseIf m_DataTable.Rows.Count > 0 Then
For m_IntRowPosition = 0 To m_DataTable.Rows.Count
For intLoopCounter = 0 To lstScannedNames.Items.Count - 1
If RTrim(m_DataTable.Rows(m_IntRowPosition).Item(1)) = lstScannedNames.Items.Item(intLoopCounter) Then
unique = False
ElseIf RTrim(m_DataTable.Rows(m_IntRowPosition).Item(1)) <> lstScannedNames.Items.Item(intLoopCounter) Then
unique = True
lstScannedNames.SelectedIndex = intLoopCounter
intLoopCounter = lstScannedNames.Items.Count - 1
End If
Next intLoopCounter
If (unique) = True Then
Dim drNewRow As DataRow = m_DataTable.NewRow()
drNewRow("emp_id") = m_DataTable.Rows.Count()
drNewRow("emp_name") = lstScannedNames.Items.Item(lstScannedNames.SelectedIndex)
m_DataTable.Rows.Add(drNewRow)
Else
unique = True
End If
Next m_IntRowPosition
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
SomeWhereElse:
m_DA.Update(m_DataTable)
MessageBox.Show("Operation Completed")
End Sub
焦点の面積がのElseIf文です:私がこれまで試してみました何
はこれです。このコードを実行すると、データベースに既にレコードがある場合、リストに含まれ、データテーブルにない最初の名前がデータテーブルに追加されます。次に、リストの最初の名前を新しいレコードに追加します。これはリスト内の各項目について約20回ですが、リストの長さによって異なります。私は別のものを試してきました。私は近いと知っていますが、私はしばらく詰まっています。
私は今試してみて、私はそれが動作するようになった後、これを答えとしてマークします。ありがとう、結構です! – Lacuna
'IsNothing'を' Is Nothing'に変更して、 'DataRow'をエラーにしていたので' Boolean'型に変換しないようにしなければなりませんでした。彼らの間の違いは分かりませんが、期待どおりに動作します。おかげで束 – Lacuna
私の悪い、訂正。ここで相違点を参照してくださいhttp://stackoverflow.com/questions/5791/vb-net-isnothing-versus-is-nothing – Steve