2017-08-16 66 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 

它不返回數據這樣的數據在數據庫中進行了修改。