2010-11-29 20 views
0

我想请教一个忙。我使用viewlist显示访问vb.net中的数据,但如果我想选择一个名称则不行。你能帮助我吗?编码已经被提出,但我不知道在哪里的故障selectlist in viewlist

Imports System.Data.OleDb 
Imports System.Data 
Public Class Guest_List 
    Dim cnn As OleDbConnection 
    Dim cmmd As OleDbCommand 
    Dim dReader As OleDbDataReader 
    Public title, FirstName, LastName, Address, Country, Company, DateIn, DateOut, RoomType, Note As String 
    Private Sub Guest_List_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Call list_data() 
    End Sub 

    Private Sub txtKataKunci_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtKataKunci.TextChanged 
     Call list_data() 
    End Sub 

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged 
     Call pilih() 
    End Sub 

    Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click 
     Call pilih() 
    End Sub 

    Private Sub list_data() 

     Call clear_list() 
     Dim sqlx As String 
     Dim x As Integer 

     sqlx = "select title,firstname,lastname,address,country,company,datein,dateout,roomtype,notes from tcekin where firstname like '%" & Trim(txtKataKunci.Text) & "%' order by firstname asc" 

     cnn = New OleDbConnection(strConn) 
     If cnn.State <> ConnectionState.Closed Then cnn.Close() 
     cnn.Open() 
     cmmd = New OleDbCommand(sqlx, cnn) 
     dReader = cmmd.ExecuteReader 

     Try 
      While dReader.Read = True 
       x = Val(counter.Text) 
       counter.Text = Str(Val(counter.Text) + 1) 

       With ListView1 
        .Items.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(ListView1.Items.Count - 1).SubItems.Add("") 
        .Items(x).SubItems(0).Text = dReader.GetString(0) 
        .Items(x).SubItems(1).Text = dReader.GetString(1) 
        .Items(x).SubItems(2).Text = dReader.GetString(2) 
        .Items(x).SubItems(3).Text = dReader.GetString(3) 
        .Items(x).SubItems(4).Text = dReader.GetString(4) 
        .Items(x).SubItems(5).Text = dReader.GetString(5) 
        .Items(x).SubItems(6).Text = Format(CDate(dReader.GetDateTime(6)), "dd-MMMM-yyyy") 
        .Items(x).SubItems(7).Text = Format(CDate(dReader.GetDateTime(7)), "dd-MMMM-yyyy") 
        .Items(x).SubItems(8).Text = dReader.GetString(8) 
        .Items(x).SubItems(9).Text = dReader.GetString(9) 
       End With 
      End While 
     Finally 
      dReader.Close() 
     End Try 
     cnn.Close() 
    End Sub 

    Private Sub clear_list() 
     While Val(counter.Text) > 0 
      ListView1.Items(0).Remove() 
      counter.Text = Val(counter.Text) - 1 
     End While 
    End Sub 

    Private Sub pilih() 
     Try 
      title = ListView1.SelectedItems(0).SubItems(0).Text.ToString 
      FirstName = ListView1.SelectedItems(0).SubItems(1).Text.ToString 
      LastName = ListView1.SelectedItems(0).SubItems(2).Text.ToString 
      Address = ListView1.SelectedItems(0).SubItems(3).Text.ToString 
      Country = ListView1.SelectedItems(0).SubItems(4).Text.ToString 
      Company = ListView1.SelectedItems(0).SubItems(5).Text.ToString 
      DateIn = ListView1.SelectedItems(0).SubItems(6).Text.ToString 
      DateOut = ListView1.SelectedItems(0).SubItems(7).Text.ToString 
      RoomType = ListView1.SelectedItems(0).SubItems(8).Text.ToString 
      Note = ListView1.SelectedItems(0).SubItems(9).Text.ToString 
      Me.Close() 
     Catch ex As Exception 
      MsgBox("pilih salah satu data", MsgBoxStyle.Information) 
     End Try 

    End Sub 
End Class 

回答

1

你说的“选择名称”是什么意思?您是否试图从数据库中查询特定名称?

您SQLX更改为

String.Format("select title,firstname,lastname,address,country,company,datein,dateout,roomtype,notes from tcekin where firstname like '%{0}%' order by firstname asc", txtKataKunci.Text.Trim()) 

然后在阅读器中添加断点,按下F5键,看看有没有数据来从DB回来。您也可以尝试直接在访问数据库上运行查询。

0

尝试使用BindingSource

这样,您将拥有所有的由SQL语句返回的记录您的DataReader绑定到你的列表视图。