จากที่ได้หาข้อมูล และ สอบถาม ได้ข้อมูลมาดังนี้ครับ Put your report load code in the Page_Init section and use Postback to keep the report in session.
It's prompting because it's loading the report on each page event because it's lost the session.
ให้ใส่Codeที่ใช้ Load Report ลงใน Page_Init และใช้ คุณสมบัติ Postback เพื่อให้ Report อยู่ใน Session
ที่หน้าต่างนี้มันขึ้นมาเพราะว่า เมื่อมันโหลด Report แต่ละหน้า เพราะเซสชั่น มันได้หายไป
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objConn As New SqlConnection
Dim objCmd As New SqlCommand
Dim dtAdapter As New SqlDataAdapter
Dim ds As New DataSet
Dim dt As DataTable
Dim strConnString, strSQL As String
strConnString = "Server= ... ;UID=sa;PASSWORD=....;database=....;Max Pool Size=400;Connect Timeout=600;"
strSQL = "SELECT * FROM vwReport WHERE Date BETWEEN '" & Me.TextBox1.Text & "' AND '" & Me.TextBox2.Text & "' "
objConn.ConnectionString = strConnString
With objCmd
.Connection = objConn
.CommandText = strSQL
.CommandType = CommandType.Text
End With
dtAdapter.SelectCommand = objCmd
dtAdapter.Fill(ds, "myDataTable")
dt = ds.Tables(0)
dtAdapter = Nothing
objConn.Close()
objConn = Nothing
Dim rpt As New ReportDocument()
rpt.Load(Server.MapPath("CrystalReport1.rpt"))
rpt.SetDataSource(dt)
Me.CrystalReportViewer1.ReportSource = rpt
Me.CrystalReportViewer1.RefreshReport()
End Sub
End Class