2017-08-16 51 views
0

我正在将数据库信息导出到VB.NET MVC项目的Excel文件中。VB.NET执行存储过程 - 编辑

我已经完成了excel部分,并且能够将一个硬代码表导出到excel中。但我需要填写表中的数据库字段。我有一个存储过程,可以获取我需要的所有信息,但我无法使其运行,并且能够让我按需要的顺序放置所需的字段。

如果有帮助,这就是我制作excel表格的方法。

Dim blah = New DataTable("testing") 
blah.Columns.Add("Col1", Type.GetType("System.String")) 
blah.Columns.Add("Col2", Type.GetType("System.String")) 

'Below will be switched out for table data, this is where the try for the SQL will end up 

blah.Rows.Add(1, "hello") 
blah.Rows.Add(2, "hello") 
blah.Rows.Add(3, "hello") 
blah.Rows.Add(4, "hello") 

Dim grid = New GridView() 
grid.DataSource = blah 
grid.DataBind() 

Response.ClearContent() 
Response.Buffer = True 
Response.AddHeader("content-disposition", "attachment; filename=Test-Report.xls") 
Response.ContentType = "application/ms-excel" 
Response.Charset = "" 

Dim sw = New StringWriter() 
Dim htw = New HtmlTextWriter(sw) 

grid.RenderControl(htw) 

Response.Output.Write(sw.ToString()) 
Response.Flush() 
Response.End() 

编辑----我有找出语法和值用来运行具有返回值的存储过程,并能够来遍历它,并采取行值的问题。我做了大量的谷歌搜索,大多数存储过程没有返回值或者返回一个值的查询,我返回了很多字段。

存储过程我跑看起来像这样:

SELECT 
    i.insurer_name 
    ,cs.customer_name 
    ,cs.customer_address 
    ,cs.claim_number 
    ,cs.work_type 
    ,anu.FirstName 
    ,anu.LastName 
    ,l.location_name 
    ,cs.completed_date 
    ,q.question_text 
    ,a.answer_text 
FROM insurer i 
inner join completed_survey cs on cs.insurer_id = i.insurer_id 
inner join AspNetUsers anu on anu.Id = cs.user_id 
inner join location l on l.location_id = cs.location_id 
inner join answer a on a.complete_id = cs.completed_id 
inner join question q on q.question_id = a.question_id 
ORDER BY i.insurer_name, cs.survey_score desc 

EDIT 2 ----我不完全知道如何回答,我使用的是什么数据库连接。我在web配置一个连接字符串和我使用实体框架,所以我的大部分代码是这样

Private db As New SurveyDBModel 
db.table_name.ToList() 
db.table_name.Add(new_row) 
+0

您尝试执行SP的位置在哪里?此外,[执行存储过程]的可能副本(https://stackoverflow.com/questions/5991877/execute-a-sql-stored-procedure-and-process-the-results) –

+1

_but但我无法得到它run_ - 请具体说明您遇到的问题。 “我有麻烦”不是一个有效的问题陈述。 –

+0

你正在使用什么数据库连接库?请显示您用来连接数据库并执行程序的代码。如果您使用的是ADO.NET,则通常只需将结果直接导出到DataSet或DataTable中。还有什么RDBMS呢? SQL Server? – ADyson

回答

0

感谢@ADyson,尽管您提供的代码有更多的东西,它的基础为我工作。

我的一个主要问题是我实际上并不知道我必须为Excel表单创建一个模型才能让我的字段导出。另外显然我的存储过程没有得到转移,所以我需要做原始SQL。

这里是什么结束了工作的基础:

Dim blah = New DataTable("insurer") 
blah.Columns.Add("Insurer Name", Type.GetType("System.String")) 
blah.Columns.Add("Col2", Type.GetType("System.String")) 

Using db As New SurveyDBModel() 

Dim rsInsurer = db.Database.SqlQuery(Of report)("SELECT 
i.insurer_name ,cs.customer_name ,cs.customer_address ,cs.claim_number ,cs.work_type ,anu.FirstName ,anu.LastName ,l.location_name ,cs.completed_date ,q.question_text ,a.answer_text 
FROM insurer i 
inner join completed_survey cs on cs.insurer_id = i.insurer_id 
inner join AspNetUsers anu on anu.Id = cs.user_id 
inner join location l on l.location_id = cs.location_id 
inner join answer a on a.complete_id = cs.completed_id 
inner join question q on q.question_id = a.question_id 
ORDER BY i.insurer_name, cs.survey_score desc").ToList() 

For Each item In rsInsurer 
    blah.Rows.Add(item.insurer_name, "Bye") 
Next 

End Using 

谢谢所有谁试图帮助我了解嘿,我在做什么的人!

0

至于你的样品查询,我会使用一个View像一个简单的数据操作。 ..

如果要修改数据库中的数据,然后一个存储过程来得心应手,很容易从SQL查询中执行...

EXEC dbo.MyStoredProc @MyKeyNo 

它不返回数据这样的数据在数据库中进行了修改。