2017-05-21 28 views
0

私はコード内で変数を宣言しましたが、それでもエラーが表示される方法についてはわかりません。 WHERE clausesはすべての行を表示した後に削除しますが、入れても"Must declare the scalar variable @startdata"と表示されます。スカラー変数を宣言する必要がありますが、宣言されました

connect() 
cmd.CommandText = "SELECT h_initials, h_date, h_hours FROM [h_holidays] WHERE h_date >= @startdata AND h_date < @enddata " 
    cmd.Parameters.Clear() 
    cmd.Parameters.Add("@startdata", SqlDbType.DateTime).Value = datetime_date.Value 
    cmd.Parameters.Add("@enddata", SqlDbType.DateTime).Value = datetime_2.Value 
    cmd.ExecuteScalar() 

    Dim dataAdapter_holidays_all = New SqlDataAdapter(cmd.CommandText, con.ConnectionString) 
    Dim table_holidays_all As New DataTable() 
    table_holidays_all.Locale = System.Globalization.CultureInfo.InvariantCulture 
    dataAdapter_holidays_all.Fill(table_holidays_all) 
    Me.bs_holidays_all.DataSource = table_holidays_all 

    dgv_holidays_all.DataSource = bs_holidays_all 

    disconnect() 

    dgv_holidays_all.RowHeadersWidth = "28" 

    dgv_holidays_all.Columns(0).HeaderText = "User:" 
    dgv_holidays_all.Columns(1).HeaderText = "Date:" 
    dgv_holidays_all.Columns(2).HeaderText = "Hours:" 

    dgv_holidays_all.EnableHeadersVisualStyles = False 

私はまだ運がないパラメータで.addwithvalueを試しました。

答えて

1

いいえ、それは宣言されていません。あなたのコードは、どこにでもあります。最初にSqlCommandオブジェクトを作成し、パラメータを追加してExecuteScalarメソッドを呼び出しますが、複数の値を取得しているため意味がありません。同じSQLを使用してSqlDataAdapterを作成しますが、SelectCommandにはパラメータを追加しません。

SqlDataAdapterを作成し、そのSelectCommandにパラメータを追加します(例:SqlDataAdapter)。

Dim sql = "SELECT h_initials, h_date, h_hours FROM [h_holidays] WHERE h_date >= @startdata AND h_date < @enddata" 
Dim adapter As New SqlDataAdapter(sql, con) 

With adapter.SelectCommand.Parameters 
    .Add("@startdata", SqlDbType.DateTime).Value = datetime_date.Value 
    .Add("@enddata", SqlDbType.DateTime).Value = datetime_2.Value 
End With 

追加のSqlCommandオブジェクトはありません。 ExecuteScalarへの無意味な呼び出し。

関連する問題