 |
|
|
 |
 |
|
รองเอาตัวอย่างนี้ไปรองดูนะครับ
ตอนแรกก็สร้าง form ขึ้นมา 1 form แล้วเอา Crystal Report ว่างลงไป โดย form ที่ผมสร้างไว้ชื่อว่า frmreportshow แล้ว Crystal Report ที่อยู่ใน form นั้นชื่อว่า crtReport
โดยที่ crBill นี้เป็นแบบ Crystal Report ที่เราสร้างไว้แล้ว โดยทำการจัด Group ใน Crystal Report ให้อิงตามคอมลัมในตารางที่เราต้องการนะครับ
เสร็จแล้วก็มาหน้าที่เราได้ว่าง button ออกใบเสร็จสินค้าไว้ แล้วก็พิมพ์ code ตามด้านล่างนี้ครับ
Code (VB.NET)
Dim frmRpt As New frmreportshow
Dim input As String = ""
input = InputBox("กรุณาระบุรหัส Order ที่ต้องการออกบิล", "ใบเสร็จสินค้า")
frmRpt.crtReport.ReportSource = New crBill
frmRpt.crtReport.SelectionFormula = "{orderp.Ord_id}='" & input & "'"
'{orderp.Ord_id} เป็นชื่อตารางและชื่อคอลัม ที่เราจะให้อ้างถึงครับ
frmRpt.ShowDialog(Me)
|
 |
 |
 |
 |
Date :
2010-02-21 21:33:35 |
By :
Nameless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมมือใหม่อ่ะครับ ไม่เข้าใจเลย
พอดีผมมีโค๊ดตัวนี้มาอ่ะครับ
Option Explicit On
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Class rptpls
Dim da, da1, da2 As SqlDataAdapter
Dim ds, ds1, ds2 As New DataSet
Dim Str, Str1, Str2 As String
Dim rpt As New crppls
Dim maxPriceList_id As String
Dim checkFeedstuff As Integer
Private Sub openConn()
If SqlConnection1.State = ConnectionState.Closed Then
SqlConnection1.Open()
End If
End Sub
Private Sub closeConn()
If SqlConnection1.State = ConnectionState.Open Then
SqlConnection1.Close()
End If
End Sub
Private Sub rptpls_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ds.Tables.Clear()
Str = "Select MAX(PriceList_id) as PriceList_id from PriceList"
openConn()
da = New SqlDataAdapter(Str, SqlConnection1)
da.Fill(ds, "Max")
maxPriceList_id = ds.Tables("Max").Rows(0).Item("PriceList_id").ToString
closeConn()
ds.Tables.Clear()
ds1.Tables.Clear()
Str1 = "Select * from PriceListview Where PriceList_id ='" & maxPriceList_id & "'"
openConn()
da1 = New SqlDataAdapter(Str1, SqlConnection1)
da1.Fill(ds1, "Pls")
rpt.Database.Tables("PriceListview").SetDataSource(ds1.Tables("Pls"))
'rpt.SetParameterValue("Fname", LoginSession.Employee_FirstName)
'rpt.SetParameterValue("Lname", LoginSession.Employee_LastName)
With CrystalReportViewer1
.ReportSource = rpt
.DisplayStatusBar = True
.DisplayToolbar = True
.DisplayGroupTree = False
End With
closeConn()
End Sub
End Class
*** ถ้าเป็นโค๊ดตัวนี้ มันจะออกรายงานที่รหัสล่าสุด (Max ID) แต่ผมอยากได้แบบว่า เราเลือกรหัสใดก็ได้
ที่ต้องการออกใบเสร็จอ่ะครับ รวบกวนอีกทีนะครับ ท่านผู้รู้ทุกท่าน
ขอบคุณมาก ๆ เลยครับ
|
 |
 |
 |
 |
Date :
2010-02-21 21:56:47 |
By :
fakestar |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าอย่างที่บอกมา ก็น่าจะเป็นตรงคำสั่ง SQL ที่ใส่ไว้อะครับตรงนี้
Str = "Select MAX(PriceList_id) as PriceList_id from PriceList"
เพราะว่าอันนี้เป็นการเลือกค่าสูงสุดของตาราง PriceList ที่ คอลัม PriceList_id ออกมา
ถ้าจะแก้ไขก็น่าจะเป็นตรงส่วนนี้ ถ้าต้องการให้เลือกรหัสใดก็ได้ก็ใช้เป็น Select ธรรมดาครับ แบบนี้ครับ
Str = "Select PriceList_id from PriceList where PriceList_id = '" & textbox.text & "'"
แล้วก็เปลี่ยนชื่อ DataSet ให้เข้าใจง่ายหน่อยจาก Max ก็อาจเปลี่ยนเป็น PriceListSelect ตรงนี้อะครับ
da.Fill(ds, "Max")
' เปลี่ยนชื่อ Max เป็น PriceListSelect จะได้รู้ว่าไม่ใช้ค่าสูงสุด da.Fill(ds, "PriceListSelect")
แล้วก็อย่าลืมเปลียนตรง DataTable ด้วยนะครับ
maxPriceList_id = ds.Tables("PriceListSelect").Rows(0).Item("PriceList_id").ToString
ถ้าจะให้ดีเปลี่ยนชื่อ maxPriceList_id เป็นชื่ออื่นก็จะได้เข้าใจง่ายว่าไม่ใช้ค่ามากสุด อาจจะเป็น PriceList_id
แล้วก็อย่าลืมเปลี่ยนตรงนี้ด้วยละ ถ้าเปลี่ยน maxPriceList_id เป็น PriceList_id แล้ว
Str1 = "Select * from PriceListview Where PriceList_id ='" & PriceList_id & "'"
=================================================================================================
คำแนะนำ
ได้ Code มายังไงก็ควรศึกษาให้เข้าใจด้วยนะครับ ว่าเค้าเขียนแบบนั้นไว้เพื่ออะไรมั้งอะครับ
ไม่งั้นขึ้นสอบโปรเจคไปโดนถามแล้วจาซวยเอานะครับ
|
 |
 |
 |
 |
Date :
2010-02-21 22:17:10 |
By :
Nameless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ยังไงก็ไม่ได้อยู่ดีครับ มันออกรายงานรหัสล่าสุดที่บันทึกลงในเบสอยู่ดีครับ T_T
|
 |
 |
 |
 |
Date :
2010-02-21 23:32:46 |
By :
fakestar |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ศึกษาจาก linkนี้คับ ขอบคุณเจ้าของ space ครับ
http://janawat.spaces.live.com/default.aspx?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3DCrystal%2520Reports&sa=450633347
|
 |
 |
 |
 |
Date :
2010-02-22 00:10:12 |
By :
superpheak |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เราจะส่งค่าไปหน้าฟอร์มที่เราสร้างไว้สำหรับออกใบเสร็จได้อย่างไรครับ
ผมเขียนไปว่า
Str = "Select PriceList_id from PriceList where PriceList_id = '" & textbox.text & (ตรงนี้มันขึ้นเส้นสีน้ำเงิน)"'"
เหมือนว่ามันม่ะรู้จักตัว textbox.text ตัวนี้ เพราะว่า มันไม่ได้อยู่นหน้านี้นี่ครับ มันอยู่หน้าฟอร์มหน้าแรก
ถ้ายังไงรบกวนผู้รู้ช่วยอธิบายขั้นตอนหน่อยนะครับ เผื่อผมจะพอหาทางได้บ้าง
ค้างอยู่ส่วนนี้มาเป็นอาทิตย์แล้วครับ
ขอบคุณทุกท่านมาก ๆ ที่ช่วยเหลือครับ
|
 |
 |
 |
 |
Date :
2010-02-22 13:02:54 |
By :
fakestar |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
textbox.text มันเป็นชื่อ object ที่ผมยกตัวอย่างมานะครับ ขอบคุณผมไม่รู้ว่า ใช้ object อะไรในการรับค่าอะครับ ถ้าใช้ object อื่นก็เปลี่ยนจาก textbox.text ไปเป็น object ตัวนั้นเอาครับ
หรือว่าถ้าไม่ต้องการเอา object ไปใส่เพิ่มก็ใช้ inputbox เอาก็ได้ครับ แล้วเอาตัวแปรตัวนึง มารับ แล้วก็เอาไปใช้แทน textbox.text
|
 |
 |
 |
 |
Date :
2010-02-22 19:17:46 |
By :
Nameless |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|