Я пытаюсь экспортировать данные SQL через хранимую процедуру с несколькими параметрами через веб-страницу asp.net. Я поместил обязательные валидаторы полей в текстовые поля, используемые для параметров. Однако когда я оставляю текстовые поля пустыми и нажимаю кнопку «Экспорт», которая запускает код vb.net для экспорта, он запускает экспорт, и данные открываются в Excel.
Это странно, потому что у меня есть параметры в моем коде T-SQL, и хранимая процедура должна завершиться сбоем без этих данных.
Enter your Keyer ID - (UXXXXXX)
<asp:TextBox ID="txtKeyerID" runat="server" Width="75px" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvKeyerID" runat="server" ControlToValidate="txtKeyerID" Display="Dynamic" ForeColor="Maroon" ValidationGroup="export">* Enter your SAP User ID</asp:RequiredFieldValidator>
<asp:Button ID="btnExport" runat="server" Text="Export" UseSubmitBehavior="false" ValidationGroup="export" />
Protected Sub btnExport_Click(sender As Object, e As EventArgs) Handles btnExport.Click
Dim strCompany As String = rblCompany.SelectedValue
Dim strLanID As String = Mid(User.Identity.Name, 8)
Dim strUserID As String = txtKeyerID.Text
Dim strAuditID As String = txtAuditorID.Text
Dim strSproc As String = Nothing
Dim myConn As New SqlConnection(ConfigurationManager.ConnectionStrings("DatabaseName").ConnectionString)
strSproc = "sp_DatabaseName_Export"
Dim myCmd As New SqlCommand(strSproc, myConn)
myCmd.CommandType = CommandType.StoredProcedure
myCmd.CommandTimeout = 1000
Using sda As New SqlDataAdapter()
myCmd.Connection = myConn
sda.SelectCommand = myCmd
With myCmd.Parameters
.Add(New SqlParameter("@company", strCompany))
.Add(New SqlParameter("@lanID", strLanID))
.Add(New SqlParameter("@Unum", strUserID))
.Add(New SqlParameter("@UauditID", strAuditID))
End With
Using ds As New DataSet
sda.Fill(ds)
ds.Tables(0).TableName = "Winshuttle"
ds.Tables(1).TableName = "AccrualAudit"
Using wb As New XLWorkbook()
For Each dt As DataTable In ds.Tables
Dim ws = wb.Worksheets.Add(dt)
ws.Table("Table1").ShowAutoFilter = False ' remove the Filter from the table
ws.Table("Table1").Theme = XLTableTheme.None ' remove the formatting from the table
Next
Response.Clear()
Response.Buffer = True
Response.Charset = ""
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=" & txtFileName.Text & ".xlsx")
Using MyMemoryStream As New MemoryStream()
wb.SaveAs(MyMemoryStream)
MyMemoryStream.WriteTo(Response.OutputStream)
Response.Flush()
Response.End()
End Using
End Using
End Using
End Using
End Sub