我过去使用以下代码将存储过程“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
我正在尝试将此代码重新用于不同但相似的应用程序,但是,我遇到了问题。之前对这段代码的使用是在存储过程生成的 dBase 中的静态表上使用的。虽然这对于新应用程序基本上保持不变,但现在要求存储过程有一个输入参数,以便用户在执行之前(通过 VB.net)输入。对于一些背景故事,您可以在此处遵循已完成的过程 -将参数注入存储过程。
应用程序本身确实返回了一个完全填充的数据集,我希望我们的用户能够将生成的数据集导出到 Excel。所以,我设置了你的原型“EXPORT ME”按钮来开始这项肮脏的工作。
在提出事件时;Excel 打开,整个工作表中只重复了我的列名。但是,这就是问题所在,代表行数据的单元格是空白的。
我得出的结论是(我承认我在这个假设中可能是错误的)行没有被填充,因为存储过程需要一个输入参数来做这件事,没有那个参数就没有t 为每一行返回的任何数据。基本上意味着我的代码不适用于我正在尝试做的事情。
如果我的假设是正确的,那么关于如何将该参数放入上面的代码中以便正确生成行的任何想法。
如果我错了,那么任何关于我的逻辑或代码本身有什么问题的输入都将不胜感激。
谢谢,
雅苏米安
斯坦,
这是生成数据集的代码:
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 导出 - 它工作正常。但是,由于许多人将同时使用该应用程序,因此这不是一个可行的解决方案。
所以,我重新相信这个数据集实例存在问题,需要一个参数才能正确运行以进行导出。
很高兴尽我所能回答任何问题。