Как отобразить результат хранимой процедуры в представлении datagrid в VB.NET
У меня есть хранимая процедура, которая генерирует отчет о посещаемости (в sql server 2012).
теперь я должен выполнить эту хранимую процедуру с моего компьютера. VB.NET применение и отображение результатов в виде DataGrid. помогите мне, чтобы отобразить результат в виде компонента DataGrid на VB.
Это код хранимой процедуры:
<pre>USE [first_db] GO /****** Object: StoredProcedure [dbo].[GET_ATTENDANCE] Script Date: 22-02-2018 11:34:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE [dbo].[GET_ATTENDANCE] @STARTDATE DATETIME, @ENDDATE DATETIME AS BEGIN --Now generate dates between two dates by Common table expression . and store that values in one temporary table (#TMP_DATES) . ;WITH DATERANGE AS ( SELECT DT =DATEADD(DD,0, @STARTDATE) WHERE DATEADD(DD, 1, @STARTDATE) <= @ENDDATE UNION ALL SELECT DATEADD(DD, 1, DT) FROM DATERANGE WHERE DATEADD(DD, 1, DT) <= @ENDDATE ) SELECT * INTO #TMP_DATES FROM DATERANGE --As the Report columns (Dates) are dynamic , hence Columns (Dates) are concatenated one by one from Temporary table (#TMP_DATES) and store the value in a local variable . DECLARE @COLUMN VARCHAR(MAX) SELECT @COLUMN=ISNULL(@COLUMN+',','')+ '['+ CAST(CONVERT(DATE , T.DT) AS VARCHAR) + ']' FROM #TMP_DATES T --After Pivot , some columns may be Null as data (here PRESENT_STATUS) not exists in pivot section .Now replace the Null values by 'N/A' . DECLARE @Columns2 VARCHAR(MAX) SET @Columns2 = SUBSTRING((SELECT DISTINCT ',ISNULL(['+ CAST(CONVERT(DATE , DT) as varchar )+'],''A'') AS ['+CAST(CONVERT(DATE , DT) as varchar )+']' FROM #TMP_DATES GROUP BY dt FOR XML PATH('')),2,8000) --Now declare one local variable to write the dynamic sql query . DECLARE @QUERY VARCHAR(MAX) --Here Right outer join is done to show the all dates from the temporary table SET @QUERY = 'SELECT User_Id, ' + @Columns2 +' FROM ( SELECT A.User_Id , B.DT AS DATE, A.STATUS FROM MarkA A RIGHT OUTER JOIN #TMP_DATES B ON A.DATE=B.DT ) X PIVOT ( MIN([STATUS]) FOR [DATE] IN (' + @COLUMN + ') ) P WHERE ISNULL(User_Id,'''')<>'''' ' EXEC (@QUERY) --Drop the temporary table DROP TABLE #TMP_DATES END GO
Что я уже пробовал:
это код в vb:
Private Sub StartDatePicker_ValueChanged(sender As Object, e As EventArgs) Handles StartDatePicker.ValueChanged ' StartDate = Format(StartDatePicker.Value, "yyyy/mm/dd") sd = Date.Parse(StartDatePicker.Text) End Sub Private Sub EndDatePicker_ValueChanged(sender As Object, e As EventArgs) Handles EndDatePicker.ValueChanged 'EndDate = Format(EndDatePicker.Value, "yyyy/mm/dd") ed = Date.Parse(EndDatePicker.Text) End Sub Private Sub Show_Button_Click(sender As Object, e As EventArgs) Handles Show_Button.Click Try Dim dt As DataTable = New DataTable() Dim cmd As SqlCommand = New SqlCommand("GET_ATTENDANCE", connection) cmd.CommandType = CommandType.StoredProcedure cmd.Connection = connection cmd.Parameters.AddWithValue("@STARTDATE", sd) cmd.Parameters.AddWithValue("@ENDDATE", ed) connection.Open() Dim adp As New SqlDataAdapter(cmd) Dim ds As DataSet = New DataSet() cmd.ExecuteNonQuery() adp.Fill(ds, "GET_ATTENDANCE") DataGridView1.DataSource = ds.Tables(0) connection.Close() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub End Class
У меня есть форма, которая выбирает дату начала и дату окончания у пользователя и отображает результат в виде таблицы данных.Но этот код не генерирует ни ошибки, ни исключения ?? Итак, что же мне делать (результаты не отображаются в datagridview)
Maciej Los
Вы уверены, что ваш ИП работает нормально? Не возвращает никаких данных, если выполнить его в MS SQL для управления студией?
Member 13674721
да он правильно выполняется в среде sql management studio и показывает желаемые результаты
Maciej Los
В следующий раз, пожалуйста, используйте виджет "ответить", если вы хотите сообщить мне о своем ответе.
Member 13674721
Извини !!я позабочусь об этом в следующий раз
Maciej Los
Не беспокойся. :)