This is my SProc:
CREATE PROCEDURE dbo.ap_Select_ModelRequests_RequestDateTime
/* Input or Output Parameters */
/* Note that if you declare a parameter for OUTPUT, it can still be used to accept values. */
/* as is this procedure will very well expect a value for @.numberRows */
@.selectDate datetime
,@.selectCountry int
,@.numberRows int OUTPUT
AS
SELECT DISTINCT configname FROM ModelRequests JOIN
CC_host.dbo.usr_smc As t2 ON
t2.user_id = ModelRequests.username JOIN
Countries ON
Countries.Country_Short = t2.country
WHERE RequestDateTime >= @.selectDate and RequestDateTime < dateadd(dd,1, @.selectDate)
AND configname <> '' AND interfacename LIKE '%DOWNLOAD%' AND result = 0 AND Country_ID = @.selectCountry
ORDER BY configname
/* @.@.ROWCOUNT returns the number of rows that are affected by the last statement. */
/* Return a scalar value of the number of rows using an output parameter. */
SELECT @.numberRows = @.@.RowCount
GO
And This is my code. I know there will be 100's of records that are selected in the SProc, but when trying to use the Output Parameter on my label it still says -1
ProtectedSub BtnGetModels_Click(ByVal senderAsObject,ByVal eAs System.EventArgs)Dim dateEnteredAsString = TxtDate.Text
Dim selectCountryAsString = CountryList.SelectedValueDim conAsNew SqlClient.SqlConnection
con.ConnectionString ="Data Source=10.10;Initial Catalog=xx;Persist Security Info=True;User ID=xx;Password=xx"
Dim myCommandAsNew SqlClient.SqlCommandmyCommand.CommandText ="ap_Select_ModelRequests_RequestDateTime"
myCommand.CommandType = CommandType.StoredProcedure
myCommand.Parameters.AddWithValue("@.selectDate", dateEntered)myCommand.Parameters.AddWithValue("@.selectCountry",CInt(selectCountry))
Dim myParamAsNew SqlParameter("@.numberRows", SqlDbType.Int)myParam.Direction = ParameterDirection.Output
myCommand.Parameters.Add(myParam)
myCommand.Connection = con
con.Open()
Dim readerAs SqlDataReader = myCommand.ExecuteReader()Dim rowCountAsInteger = reader.RecordsAffectednumberParts.Text = rowCount.ToString
con.Close()
EndSub
What should I fix?
label1.Text = myCommand.Parameters("@.numberRows").Value
|||If I remember, I had this same problem, and found that you can't use the DataReader if you want to get the output parameter. I think you have to use DataSet.
|||Read the following for an explanation of why it is happening and how to get around it.
http://p2p.wrox.com/archive/aspx/2001-12/24.asp
|||How do I do the DataSet approach?
ProtectedSub BtnGetModels_Click(ByVal senderAsObject,ByVal eAs System.EventArgs)Dim dateEnteredAsString = TxtDate.Text
Dim selectCountryAsString = CountryList.SelectedValueDim conAsNew SqlClient.SqlConnection("Data Source=xx;Initial Catalog=xx;Persist Security Info=True;User ID=xx;Password=xx")
Dim dbDataSet =New DataSet()Dim dbAdapterAsNew SqlDataAdapterdbAdapter.Fill(dbDataSet)
|||
You can do the following
Dim dbDataSet =New DataSet()
Dim dbAdapterAsNew SqlDataAdapter
dbAdapter.Fill(dbDataSet,"tablename")
dbDataSet.Tables("tablename").rows.count
In case you have only one table, you can use a datatable instead of a dataset
Dim dbDataTable =New DataTable()
Dim dbAdapterAsNew SqlDataAdapter
dbAdapter.Fill(dbDataTable)
dbDataTable.rows.count
No comments:
Post a Comment