2013-07-11 3 views
0

У меня есть хранимая процедура для отображения данных из моей базы данных. с помощью SQL Server 2008. моя хранимая процедура, как показано нижепривязка параметров к хранимой процедуре в vb.net

USE [RSUPDB] 
GO 
/****** Object: StoredProcedure [dbo].[spSPDMonStockProductHarian] Script Date: 07/11/2013 14:56:53 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  <Author,,Name> 
-- Create date: <Create Date,,> 
-- Description: <Description,,> 
-- ============================================= 
ALTER PROCEDURE [dbo].[spSPDMonStockProductHarian] 
    -- Add the parameters for the stored procedure here 
    @Tanggal Smalldatetime, 
    @WHSID  Int 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
    SELECT NoReff, ProductID,Qnty , CreatedBy, CreatedDate, 
         LastUpdatedBy, LastUpdatedDate, Computer, ComputerDate 
FROM   tblSPDTrnHasilProduksiDtl 
Where [email protected] 

END 

Я называю это хранимая процедура с использованием vb.net, как показано ниже

Private Sub CmRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmRefresh.Click 
    Dim i As Integer 

    Dim strCon1 As String = "server='ip server'; database=database name; user=user;password=password;" 
    Dim cmd As SqlCommand = New SqlCommand("spSPDMonStockProductHarian", New SqlConnection(strCon1)) 
    'cmd.CommandText = "SELECT * FROM tblSPDTrnHasilProduksiDtl" 
    With cmd 

     .Parameters.Add("@Tanggal", SqlDbType.SmallDateTime).Value = Format(CDate(DateTimePicker1.Value), "dd/MM/yyyy") 
     .Parameters.AddWithValue("@WhsID", CboWhs.SelectedValue) 
     .Parameters.AddWithValue("@NoReff", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(0).FormattedValue.ToString 
     .Parameters.AddWithValue("@ProductID", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(1).FormattedValue.ToString 
     .Parameters.AddWithValue("@Qnty", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(2).FormattedValue.ToString 
     .Parameters.AddWithValue("@CreatedBy", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(3).FormattedValue.ToString 
     .Parameters.AddWithValue("@CreatedDate", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(4).FormattedValue.ToString 
     .Parameters.AddWithValue("@LastUpdatedBy", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(5).FormattedValue.ToString 
     .Parameters.AddWithValue("@LastUpdatedDate", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(6).FormattedValue.ToString 
     .Parameters.AddWithValue("@Computer", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(7).FormattedValue.ToString 
     .Parameters.AddWithValue("@Computerdate", SqlDbType.VarChar).Value = Listdata.Rows(i).Cells(8).FormattedValue.ToString 
     .Connection.Open() 
    End With 
    Listdata.DataSource = cmd.ExecuteReader 

    Koneksi.Close() 
    Koneksi.Close() 
End Sub 

Моя проблема, когда я выполнить эту программу, все еще ошибка с сообщением

Процедура или функция 'spSPDMonStockProductHarian' ожидает параметр '@Tanggal', который не был поставлен

Я не понял, в чем проблема ??? и это делает мой стек головой, поэтому любое решение будет оценено!

ответ

1

Это закомментирована

'.Parameters.Add("@Tanggal", SqlDbType.SmallDateTime).Value = Format(CDate(DateTimePicker1.Value), "dd/MM/yyyy") 

попытаться удалить цитату на beggining,

Сказал, что ваш код будет терпеть неудачу по другим причинам.

Процедура, ожидаемая только двумя параметрами не одиннадцать, параметр @Tanggal должен быть дататом, а не строкой, отформатированной как DateTime, вам необходимо установить свойство CommandType как хранимоепроцедуру.

Более правильный подход к вашей процедуре может быть это

Private Sub CmRefresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmRefresh.Click 
    Dim strCon1 = "server=serverIP; database=database name; user=user;password=password;" 
    Dim cmdText = "spSPDMonStockProductHarian" 
    Using con = new SqlConnection(strCon1) 
    Using cmd = New SqlCommand(cmdText, con) 
     With cmd 
      .CommandType = CommandType.StoredProcedure 
      .Parameters.Add("@Tanggal", SqlDbType.SmallDateTime).Value = dateTimePicker1.Value 
      .Parameters.AddWithValue("@WhsID", CboWhs.SelectedValue) 
     End With 
     con.Open() 
     Listdata.DataSource = cmd.ExecuteReader 
    End Using 
    End Using 
End Sub 

я удалил неиспользованные параметры и прошел @Tanggal параметра как DateTime не в виде строки. Также добавлен Using Statement, чтобы правильно закрыть и удалить объект подключения

+0

ya my error tha quote все еще есть, я думаю, что проигнорировал это сообщение, не появится. Вы можете привести пример ... –

+0

преуспевает, чтобы устранить ошибку сообщения, но есть новая проблема, что данные, которые я вызываю ничего, отображаются –

+0

Попробуйте вызвать эту процедуру из Sql Server Management Studio (у вас есть временная часть в поле?) – Steve

Смежные вопросы