Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text <> "" Then
sql = String.Format("select หมายเลขสั่งซื้อ from withdraw_result")
cmd = New SqlCommand(sql, cn)
connect()
DR = cmd.ExecuteReader()
If DR.HasRows = False Then
MsgBox("ไม่พบข้อมูล")
TextBox1.Text = ""
Else
Dim rptmaintanance As New CrystalReport1
Dim crtableLogoninfo As New CrystalDecisions.Shared.TableLogOnInfo()
Dim crConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo
Dim TL As TableLogOnInfo = rptmaintanance.Database.Tables(0).LogOnInfo
rptmaintanance.Load("D:\VB project\งานสต็อกสินค้า\Vat\Vat\CrystalReport1.rpt")
rptmaintanance.SetParameterValue("หมายเลขสั่งซื้อ", Me.TextBox1.Text)
TL.ConnectionInfo.ServerName = ".\SQLEXPRESSS"
TL.ConnectionInfo.DatabaseName = "VAT"
TL.ConnectionInfo.UserID = "sa"
TL.ConnectionInfo.Password = "123456"
rptmaintanance.Database.Tables(0).ApplyLogOnInfo(TL)
Me.CrystalReportViewer1.ReportSource = rptmaintanance
Me.CrystalReportViewer1.Refresh()
End If
Else
MsgBox("กรุณากรอกหมายเลขสั่งซื้อ")
End If
DR.Close()
End Sub
Tag : .NET, MySQL, Ms SQL Server 2008, Crystal Report, VB.NET, VS 2010 (.NET 4.x)
Public Class Form3
Private rpt As ReportDocument
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text <> "" Then
rpt = New ReportDocument()
rpt.Load("D:\VB project\งานสต็อกสินค้า\Vat\Vat\CrystalReport1.rpt")
Dim crtableLogoninfo As New TableLogOnInfo()
Dim crConnectionInfo As New ConnectionInfo()
Dim CrTables As Tables
crConnectionInfo.ServerName = ".\SQLEXPRESSS"
crConnectionInfo.DatabaseName = "VAT"
crConnectionInfo.UserID = "sa"
crConnectionInfo.Password = "123456"
CrTables = rpt.Database.Tables
For Each CrTable As CrystalDecisions.CrystalReports.Engine.Table In CrTables
crtableLogoninfo = CrTable.LogOnInfo
crtableLogoninfo.ConnectionInfo = crConnectionInfo
CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next
rpt.SetParameterValue("หมายเลขสั่งซื้อ", Me.TextBox1.Text)
Me.CrystalReportViewer1.ReportSource = rpt
'Me.CrystalReportViewer1.Refresh()
Else
MsgBox("กรุณากรอกหมายเลขสั่งซื้อ")
End If
End Sub
Protected Sub OnUnload(ByVal e As EventArgs)
Try
If rpt IsNot Nothing Then
rpt.Close()
rpt.Dispose()
GC.Collect()
End If
Catch ex As Exception
error_message(ex.Message)
End Try
End Sub
Protected Sub rptCrystal_Unload(ByVal sender As Object, ByVal e As EventArgs)
Try
If rpt IsNot Nothing Then
rpt.Close()
rpt.Dispose()
GC.Collect()
End If
Catch ex As Exception
error_message(ex.Message)
End Try
End Sub
End Class
สอบถามเพิ่มเติมครับ ตอนนี้ผมสร้าง Data set ตามที่ ลิ้ง https://www.thaicreate.com/dotnet/crystal-report-dataset-datatable.html
ได้กล่าวไว้ คือว่าแถบจะcopyกันมาทั้งหมด ยกเว้น ฐานข้อมูลSQL ที่ผมมีอยู่แล้ว แต่กลับเจอปัญหา error " login fail for use sa" ตามภาพด้านล่างครับ รบกวนช่วยดูให้หน่อยครับ ว่าผมผิดพลาดอะไรไปรึเปล่า
อัน table Data set ครับ
นี้ Code VB ครับ Code (VB.NET)
Imports CrystalDecisions.CrystalReports.Engine
Imports System.Data.SqlClient
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.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=localhost;UID=sa;PASSWORD=123456;database=VAT;Max Pool Size=400;Connect Timeout=600;"
strSQL = "SELECT * FROM withdraw_result WHERE หมายเลขสั่งซื้อ = '" & Me.TextBox1.Text & "' "
objConn.ConnectionString = strConnString
With objCmd
.Connection = objConn
.CommandText = strSQL
.CommandType = CommandType.Text
End With
dtAdapter.SelectCommand = objCmd
dtAdapter.Fill(ds, "DataTable1")
dt = ds.Tables(0)
dtAdapter = Nothing
objConn.Close()
objConn = Nothing
Dim rpt As New ReportDocument()
Dim directory As String = My.Application.Info.DirectoryPath
'rpt.Load(directory & "\myCrystalReport1.rpt")
rpt.Load("D:\VB project\งานสต็อกสินค้า\test report\test report\CrystalReport1.rpt")
rpt.SetDataSource(dt)
Me.CrystalReportViewer1.ReportSource = rpt
Me.CrystalReportViewer1.Refresh()
End Sub
End Class
strConnString = ".\SQLEXPRESSS;UID=sa;PASSWORD=123456;database=VAT;Max Pool Size=400;Connect Timeout=600;"
ลองดูครับ ว่าแต่เครื่องตัวเองหรือเครื่องอืนที่เข้าไม่ได้ครับ และขอแนะนำด้วยเลยนะครับ อย่าพยายามใช้ภาษาไทยในการตั้งชื่อ column
ครับ อันนี้น่าเป็นห่วง และอีกอย่างนะส่วนมากเขาจะไม่ใช้ user sa กันนะคือให้เพิ่ม user เข้าไปใหม่แล้วกำหนดสิทธิ์เหมือน sa ครับผม
(ส่วนมากอาจเป็นผมคนเดียวก็ได้นะครับ 555)