【发布时间】:2011-07-13 11:52:18
【问题描述】:
我正在 VB.net 中构建一个应用程序,并尝试从我在文本框中编写的人员姓名从数据库中获取详细信息,我有以下代码(我得到了一个错误,找不到列“the我在文本框中给出的名字”)。有人可以帮我吗??
在表单的加载中:
mijnKlant.KlantVullen()
dgvKlanten.DataSource = mijnKlant.p_klant
With Me.dgvKlanten
.Columns("klant_id").DisplayIndex = 0
.Columns("klant_id").HeaderText = "Klantnummer"
.Columns("naam").DisplayIndex = 1
.Columns("naam").HeaderText = "Naam"
.Columns("voornaam").DisplayIndex = 2
.Columns("voornaam").HeaderText = "Voornaam"
.Columns("straat_nr").DisplayIndex = 3
.Columns("straat_nr").HeaderText = "Straat en Nr."
.Columns("postcode").DisplayIndex = 4
.Columns("postcode").HeaderText = "Postcode"
.Columns("naam_gemeente").DisplayIndex = 5
.Columns("naam_gemeente").HeaderText = "Gemeente"
.Columns("landen_naam").DisplayIndex = 6
.Columns("landen_naam").HeaderText = "Land"
.Columns("code_afwijkend_postadres").DisplayIndex = 7
.Columns("code_afwijkend_postadres").HeaderText = "Postadres"
.Columns("facturatieadres_straat_nr").DisplayIndex = 8
.Columns("facturatieadres_straat_nr").HeaderText = "Facturatie Straat en Nr."
.Columns("facturatieadres_postcode").DisplayIndex = 9
.Columns("facturatieadres_postcode").HeaderText = "Facturatie Postcode"
.Columns("facturatieadres_gemeente").DisplayIndex = 10
.Columns("facturatieadres_gemeente").HeaderText = "Facturatie Gemeente"
.Columns("facturatieadres_land").DisplayIndex = 11
.Columns("facturatieadres_land").HeaderText = "Facturatie Land"
.Columns("identiteitskaart_code").DisplayIndex = 12
.Columns("identiteitskaart_code").HeaderText = "Identiteitskaartnummer"
.Columns("postcode_id").Visible = False
.Columns("land_id").Visible = False
.Columns("land_id1").Visible = False
.Columns("postcode_id1").Visible = False
.Columns("postcode_gemeente").Visible = False
.RowHeadersVisible = True
.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.Fill
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End With
在表示层上:
'enablen van buttons zodat de functie gebruikt kan worden
Me.btnVerwijderKlant.Enabled = True
Me.btnWijzigKlant.Enabled = True
Dim strNaam As String
strNaam = Me.txtNaam.Text 'geeft de naam in de databank
'If outindex = -1 Then Exit Sub
Dim myrw As DataRowView
'functie aanroepen op DAL
myrw = mijnKlant.klant_detail(strNaam)
'binden van opgehaalde details aan de toegewezen controls
Me.txtNaam.DataBindings.Add("Text", myrw, "naam")
Me.txtNaam.DataBindings.Clear()
Me.txtVoornaam.DataBindings.Add("Text", myrw, "voornaam")
Me.txtVoornaam.DataBindings.Clear()
Me.txtStraat.DataBindings.Add("Text", myrw, "straat_nr")
Me.txtStraat.DataBindings.Clear()
Me.cboGemeente.DataBindings.Add("Text", myrw, "naam_gemeente")
Me.cboGemeente.DataBindings.Clear()
Me.cbxAfwijkenAdres.DataBindings.Add("text", myrw, "code_afwijkend_postadres")
'omzetting van string naar boolean
If cbxAfwijkenAdres.Text = "T" Then
Me.cbxAfwijkenAdres.Checked = True
Me.cbxAfwijkenAdres.Text = "Postadres is gelijk aan het facturatieadres"
End If
If cbxAfwijkenAdres.Text = "F" Then
Me.cbxAfwijkenAdres.Checked = False
Me.cbxAfwijkenAdres.Text = "Postadres is gelijk aan het facturatieadres"
End If
'binden van opgehaalde details aan de toegewezen controls
Me.cbxAfwijkenAdres.DataBindings.Clear()
Me.txtPost.DataBindings.Add("Text", myrw, "postcode")
Me.txtPost.DataBindings.Clear()
Me.cboLand.DataBindings.Add("Text", myrw, "landen_naam")
Me.cboLand.DataBindings.Clear()
Me.txtID_Nr.DataBindings.Add("Text", myrw, "identiteitskaart_code")
Me.txtID_Nr.DataBindings.Clear()
Me.txt_F_Straat.DataBindings.Add("Text", myrw, "facturatieadres_straat_nr")
Me.txt_F_Straat.DataBindings.Clear()
Me.cbo_F_Gemeente.DataBindings.Add("Text", myrw, "facturatieadres_gemeente")
Me.cbo_F_Gemeente.DataBindings.Clear()
Me.cbo_F_Land.DataBindings.Add("Text", myrw, "facturatieadres_land")
Me.cbo_F_Land.DataBindings.Clear()
Me.txt_F_Post.DataBindings.Add("Text", myrw, "facturatieadres_postcode")
Me.txt_F_Post.DataBindings.Clear()
dgvKlanten.DataSource = mijnKlant.p_klant
myrw = Nothing
End Sub
在我的数据层上:
公共子 KlantVullen() ' methode om dataview op te bouwen die dan later als bron zal dienen voor de zoekcombo in ons Dim sqlStr As String = "SprKlantzoeken" 将 objConn 调暗为新的 SqlConnection(conStr.ConnString) objConn.Open()
Dim adapter As New SqlDataAdapter(sqlStr, objConn)
'opvangen van foutmelding bij het ledigen van tabel klanten in dataset
Try
ds.Tables.Remove("klanten")
Catch ex As ArgumentException
End Try
adapter.Fill(ds, "klanten")
dt_klanten = ds.Tables("klanten")
dv_klanten = dt_klanten.DefaultView
dv_klanten.Sort = "klant_id"
adapter.Dispose()
adapter = Nothing
objConn.Close()
objConn.Dispose()
End Sub
' functie voor details op te vragen van klanten
Public Function klant_detail(ByVal i_index As String) As DataRowView
Dim dv As DataView
Dim anyrow As DataRowView
dv = New DataView
With dv
.Table = ds.Tables("klanten")
.AllowDelete = True
.AllowEdit = True
.AllowNew = True
.RowFilter = "naam = " & i_index
End With
anyrow = dv.Item(0) 'geeft de eerste rij van de dataview dv
' Simple bind to a TextBox control
dv = dt_klanten.DefaultView
Return anyrow
dv.Dispose()
dv = Nothing
End Function
SQL 数据库中的存储过程:
使用 [parken3] 走 /* 对象:StoredProcedure [dbo].[SprKlantzoeken] 脚本日期:07/13/2011 13:45:07 */ 设置 ANSI_NULLS ON 走 设置 QUOTED_IDENTIFIER ON 去吧
改变程序 [dbo].[SprKlantzoeken] 作为 开始 -- 添加了 SET NOCOUNT ON 以防止额外的结果集 -- 干扰 SELECT 语句。 设置无计数;
-- Insert statements for procedure here
从landen_lijst l、klant k、邮政编码p中选择* 其中 k.postcode_id = p.postcode_id 和 k.land_id = l.land_id
结束
【问题讨论】:
标签: vb.net