У меня есть следующий фрагмент кода, который я использовал в прошлом для экспорта набора данных, сгенерированного из хранимой процедуры 'HISTORICAL_COSTS', в Excel.
Dim c As Long = 1
For Each dc As DataColumn In Me.WOCostDataSet. & _
HISTORICAL_COSTS.Columns
.Cells(1, c).Value = dc.ColumnName.ToString
.Cells(1, c).Font.Bold = True
c += 1
Next
Dim i As Long = 2
For Each dr As DataRow In Me.WOCostDataSet.HISTORICAL_COSTS.Rows
c = 1
For Each dc As DataColumn In Me.WOCostDataSet. & _
HISTORICAL_COSTS.Columns
.Cells(i, c).Value = dr.Item(dc.ColumnName).ToString
c += 1
Next
i += 1
Next
Я пытаюсь повторно использовать этот код в другом, но похожем приложении, но у меня возникла проблема. Предыдущее использование этого кода использовалось для статической таблицы в нашей базе данных, созданной хранимой процедурой. И хотя это в основном остается тем же для нового приложения, требования теперь требуют, чтобы хранимая процедура имела входной параметр, который должен быть введен пользователем (через VB.net) до выполнения. Для небольшой истории вы можете проследить этот завершенный процесс здесь - Добавление параметра в хранимую процедуру.
Само приложение фактически возвращает полностью заполненный набор данных, и я бы хотел, чтобы наши пользователи имели возможность экспортировать этот сгенерированный набор данных в Excel. Итак, я настроил вашу опытную кнопку «EXPORT ME», чтобы начать грязную работу.
При поднятии мероприятия; Откроется Excel и только имена моих столбцов повторяются по всему листу. Но, и вот в чем проблема, ячейки, представляющие данные строки - пустые.
Я пришел к выводу (я допускаю, что я могу ошибаться в этом предположении), что строки не заполняются из-за того, что хранимой процедуре нужен входной параметр, чтобы сделать свое дело, и без этого параметра нет никаких данных для возврата для каждой строки. В основном это означает, что мой код просто не будет работать для того, что я пытаюсь сделать.
Если я прав в своих предположениях, любые идеи относительно того, как я могу вставить этот параметр в мой код выше, чтобы строки были сгенерированы правильно.
Если я ошибаюсь, то любая информация о том, что не так с моей логикой или самим кодом, была бы очень благодарна.
Спасибо
Jasoomian
Stan
Вот код, который генерирует набор данных:
Try
Dim FBConn As FbConnection
Dim MyConnectionString As String
MyConnectionString = "datasource=" _
& MyServer & ";database=" _
& TextBox4.Text & ";user id=SYSDBA;password=" _
& MyPassword & ";initial catalog=;Charset=NONE"
FBConn = New FbConnection(MyConnectionString)
Dim FBCmd As New FbCommand("HISTORICAL_COSTS", FBConn)
FBCmd.CommandType = CommandType.StoredProcedure
FBCmd.Parameters.Add("@I_PN", FbDbType.VarChar, 40)
FBCmd.Parameters("@I_PN").Value = TextBox1.Text.ToUpper
Dim FBadapter As New FbDataAdapter(FBCmd)
Dim dsResult As New DataSet
FBadapter.Fill(dsResult)
Me.HISTORICAL_COSTSDataGridView.DataSource = dsResult.Tables(0)
Dim RecordCount As Integer
RecordCount = Me.HISTORICAL_COSTSDataGridView.RowCount
Label4.Text = RecordCount
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show _
("There was an error in generating the DataStream, " & _
"please check the system credentials and try again. " & _
"If the problem persists, please contact your friendly " & _
"local IT department.")
End Try
Stackoverflow любезно предполагает, что я предлагаю вознаграждение любому, кто отвечает на мой вопрос, но, поскольку у меня нет достаточно REP, чтобы создать достаточное вознаграждение - моя всепроникающая благодарность приносит какую-то любовь к кодированию?
Несколько быстрых обновлений:
Я протестировал свое приложение, изменив хранимую процедуру, чтобы добавить результаты в новую отдельную таблицу, а затем запустил экспорт в Excel для этой таблицы - и все работает нормально. Но, поскольку многие люди будут использовать приложение одновременно, это не является жизнеспособным решением.
Итак, я снова верю, что существует проблема с этим экземпляром набора данных, для которого требуется параметр для правильной работы для экспорта.
С удовольствием отвечу на все вопросы в меру своих возможностей.