2012-10-04 23 views
2
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim ds As DataSet = New DataSet() 
    Dim param As SqlParameter = New SqlParameter("@user_code", SqlDbType.Char, 4) 
    param.Value = "0016" 
    Const sqlstr As String = "select sectors.sector_code,sector_name from user_sectors inner join sectors on user_sectors.sector_code = sectors.sector_code where user_code = @user_code and sectors.sector_code not in ('z')" 
    Dim da As SqlDataAdapter = New SqlDataAdapter(sqlstr, _con) 
    da.SelectCommand.Parameters.Add("@user_code") 
    da.Fill(ds) 
    ddl.DataValueField = "sector_code" 
    ddl.DataTextField = "sector_name" 
    ddl.DataSource = ds.Tables(0) 
    ddl.DataBind()  
End Sub 
+0

這不是表述爲一個問題,只是一個聲明通過param,我們不得不猜測你想要什麼。 – Jodrell

+0

看到我的答案在一行中完成整個參數實例化。 – Jodrell

回答

2

我猜line

da.SelectCommand.Parameters.Add("@user_code") 

應該

da.SelectCommand.Parameters.Add(param) 
1

那是因爲它是一個SqlParameterCollection而不是string集合。

如果您調用適當的Add超載,它會爲您提供實例,如果有足夠的信息。

像這也許,

Dim newParam = da.SelectCommand.Parameters.Add("@user_code", sqlDbType.Char, 4) 
newParam.Value = "0016" 

,或者更換幾行這樣

da.SelectCommand.Parameters.Add(_ 
    New SqlParameter("@user_code", SqlDbType.Char, 4) With { .Value = "0016" })) 

,或者,如果你想使用多條線路,只需添加

da.SelectCommand.Parameters.Add(param) 
+0

如何解決? –

1

你應該add

da.SelectCommand.Parameters.Add(param) 
相關問題