คำสั่ง print report ที่ต่างภาษากัน ทำอย่างไรค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 18,788   68
URL.หัวข้อ / URL
คำสั่ง print report ที่ต่างภาษากัน ทำอย่างไรค่ะ

รบกวนท่านอาจารย์และท่านผู้รู้หน่อยค่ะ พอดีมีลูกค้า 2 ประเภท คือ ใช้ บิลภาษาไทย กับภาษา อังกฤษ ค่ะ เวลา ปริ้น รีพอท จึงต้อง สั่งปริ้น ตามแบบของลูกค้า ลองใช้ คำสั่ง dlookup ไป ก็ยังไม่สามารถทำได้ ค่ะ รบกวนท่านผู้รู้ช่วยแก้ได้ไหมค่ะ

function ที่หนูพยายามเขียน ประมาณนี้ค่ะ แค่ทำยังไงๆ โปรแกรม ก็ ปริ้นแต่รีพอท ภาษาไทย

Function PrintInvoice(OrderID As Long) As Boolean
Dim Result
Result = DLookup("[Language]", "Customers", "Language")
     If Result = "TH" Then
    DoCmd.OpenReport "InvoiceTH", acViewPreview, , "[Order ID]=" & OrderID, acDialog
    Else
    DoCmd.OpenReport "InvoiceEN", acViewPreview, , "[Order ID]=" & OrderID, acDialog
    End If
End Function

รบกวนหน่อยนะค่ะ

68 Reply in this Topic. Dispaly 4 pages and you are on page number 3

41 @R13461
อาจารย์คะ หนูงงๆ รูปที่หนูอัฟเป็นตัวอย่างทำไมกลายเป็นรูปเดียวกันหมดเลย เดียวหนูupใหม่นะค่ะ :(
42 @R13462
ตอบเรื่อง ป้อนคำอะไรก็ได้ในส่วนของเท็กซ์ของคอมโบ้บ็อกซ์ แล้วให้แสดงส่วนของลิสท์ตามคำที่ค้นหา

- ต้องกำหนด AutoExpand เป็น No
- เพิ่มโค้ดลงใน KeyUp event procedure ของคอมโบ้บ็อกซ์นั้นๆ

Private Sub Combo_KeyUp(KeyCode As Integer, Shift As Integer)
    Me.Combo.RowSource = "select ... from ... where ฟิลด์ที่ต้องการถูกค้นหา like '*" & Me.Combo.Text & "*' order by ..."
    Me.Combo.Dropdown
End Sub

ปล. ไว้มีเวลาแล้วจะมาตอบคำถามต่อไป
43 @R13467
อาจารย์คะรบกวนถามเรื่องรีพอทด้วยอีกนิดนึงนะคะ คือตรงรายการ(ส่วนรายละเอียด)สินค้าอะคะ ถ้าหนูมีสินค้ารายการเดียวตรงส่วนท้ายก็จะตรงช่องเวลาปริ้น แต่ถ้ามี2รายการ3 รายการเพิ่มขึ้นมาปุ๊ป ส่วนท้ายก็เลื่อนลงเลื่อนตามช่องที่เพิ่มขึ้นมา มีวิธีล๊อคตรงช่องส่วนรายละเอียดไหมคะอาจารย์หมายถึงว่าให้เรามีหลายๆรายการได้โดยส่วนท้ายไม่เลื่อนอะค่ะ

ขอบพระคุณค่ะ

44 @R13468
ให้ย้ายไปที่ส่วนท้ายของหน้า (Page Footer section) แทนครับ
45 @R13471
อาจารย์คะ พอย้ายไปแล้วมันขึ้นแค่รายการเดียวอะค่ะ ;(
46 @R13472
คุณย้ายอะไรครับ ที่บอกนี่คือย้ายส่วนท้ายของกลุ่ม OrderID ไปนะครับ ถ้าไม่แน่ใจ ก็แปะรูปที่แก้ไขใน Design View ให้ผมดูอีกที
47 @R13473
อ่อ หนูเข้าใจแล้วค่ะ ให้ย้าย ส่วนท้ายของกลุ่มOrderID ไปที่ (Page Footer section) หนูดันไปย้ายส่วนรายละเอียดลงมาที่ส่วนท้ายของกลุ่มOrderID อิอิ เรียบร้อยแล้วค่ะ ขอบพระคุณอาจารย์มากๆๆๆๆๆๆเลยนะคะ

สืบเนื่องจากคำแนะนำ ของอาจารย์
ตอบเรื่อง ป้อนคำอะไรก็ได้ในส่วนของเท็กซ์ของคอมโบ้บ็อกซ์ แล้วให้แสดงส่วนของลิสท์ตามคำที่ค้นหา

- ต้องกำหนด AutoExpand เป็น No
- เพิ่มโค้ดลงใน KeyUp event procedure ของคอมโบ้บ็อกซ์นั้นๆ

Private Sub Combo_KeyUp(KeyCode As Integer, Shift As Integer)
    Me.Combo.RowSource = "select ... from ... where ฟิลด์ที่ต้องการถูกค้นหา like '*" & Me.Combo.Text & "*' order by ..."
    Me.Combo.Dropdown
End Sub

ปล. ไว้มีเวลาแล้วจะมาตอบคำถามต่อไป



หนูลองเอาไปทำแล้วพอพิมkeywordเข้าไปกล่องคอมโบก็ไม่แสดงคำอะไรเลยอะค่ะมีช่องขึ้นมาแต่เป็นช่องว่างๆและกลับให้หนูเพิ่มอักษรนั้นเข้าไปเป็นชื่อลูกค้ารายใหม่เลย เหมือนพอเราสะกดขึ้นมาพอเขาหาไม่เจอเขาก็ให้เราไปเพิ่มใหม่

ตรงส่วน (where ฟิลด์ที่ต้องการถูกค้นหา like) ตรงหลังwhere เรามีหลายฟิลด์ได้ไหมค่ะ เพราะ หนูใส่ไปสามฟิลด์ มี Companyname , ID,address for ship เพราะ หนูต้องการให้พิม keyword เข้าไปแล้วคอมโบสามารถหาจากทั้ง3 ฟิลด์เลยค่ะ

คือหนูอยากส่งตัวอย่างให้อาจารย์ดูแต่หนูกลับมาที่บ้านแล้วแต่งานอยู่ที่ออฟฟิศ เดี๋ยวพรุ้งนี้หนูโพสตัวอย่างที่ขึ้นให้อาจารย์ดูนะคะ

48 @R13474
ส่วนนี้จะอยู่ตรงช่อง Control แหล่งข้อมูลแถวของ combo box ของหนูคะ ถ้าใส่ในช่อง เวลาคลิกครั้งแรก ข้อมูลขึ้นแต่พอเราพิมkeyword จะกลายเป็นช่องเปล่าๆ (ในกรณีที่ใส่โค้ดที่อาจารย์ให้มา) แต่พอหนูลบตรงช่องcontrolออกใส่แต่โค้ดของอาจารย์ พอคลิกก็กลายเป็นช่องเปล่าๆเลย ค่ะ


SELECT [ID], [Company], [Address For Ship], [ID] FROM [Customers Extended] WHERE [ID]<>Nz(Form!ID,0) ORDER BY [Company], [Address For Ship]; อยู่ในcontrolแหล่งข้อมูลแถว

Private Sub Combo_KeyUp(KeyCode As Integer, Shift As Integer)

    Me.Combo47.RowSource = "SELECT [ID], [Company], [Address For Ship], [ID] FROM [Customers Extended] WHERE [Company], [Address For Ship],[ID] like '*" & Me.Combo47.Text & "*' ORDER BY [Company], [Address For Ship]"

    Me.Combo47.Dropdown
End Sub อยู่ในKeyUp event procedure
49 @R13475
อาจารย์คะ ถ้าอาจารย์มีเวลาอย่าลืมตอบอีกข้อของหนูนะคะ ที่เลือกcompanyแล้วให้สินค้าของcompanyนั้นขึ้นมาอะค่ะ อิอิ สงสัยโปรแกรมเสร็จหนูต้องขออนุญาติเลี้ยงข้าวอาจารย์สักมื้อแล้วหละค่ะ ช่วยหนูในทุกๆเรื่องเลย
50 @R13476
เอา Private Sub Combo_KeyUp เต็มๆที่เขียนแล้วมาให้ดูหน่อย และ Column Count, Column Width, Bound Column ค่าเหล่านี้มีค่าเป็นอะไรบ้าง

และหลัง where เราสามารถเขียนเงื่อนไขของหลายฟิลด์ได้ครับ
51 @R13477
พรุ่งนี้นะคะอาจารย์เครื่องอยู่ที่ออฟฟิศค่ะ
52 @R13480
อาจารย์คะหนูลองย้ายเหมือนที่อาจารย์บอกในรีพอทส่วนท้ายไม่เลื่อนแล้ว แต่คำนวณErrorค่ะ :(
53 @R13481
54 @R13482
55 @R13483
Type Mismatch เกิดจากการใช้ประเภทของข้อมูลไม่ถูกต้อง เป็นที่ไหนสักที่ ลองเช็คดีๆครับ อาจลบทิ้งทีละเท็กซ์บ็อกซ์ในรายงาน ถ้าเมื่อไหร่ไม่ error ก็แปลว่าตัวสุดท้ายที่ลบไปนั่นแหล่ะคือตัวปัญหา
56 @R13485
error ตรงตัวคำนวณเงินเป็นคำอ่านภาษาไทยค่ะเอาออกแล้วไม่ขึ้นerror แต่ตรงช่องคำนวณก็คำนวณไม่ออกคะอาจารย์
57 @R13486
Option Compare Database

Function BahtText(ByVal sNum)
Dim sNumber, sDigit, sDigit10
Dim nLen, sWord, sWord2
Dim sByte, i, J

sNumber = Array("", "˹Öè§", "Êͧ", "ÊÒÁ", "ÊÕè", "ËéÒ", "Ë¡", "à¨ç´", "á»´", "à¡éÒ")
sDigit = Array("", "ÊÔº", "ÃéÍÂ", "¾Ñ¹", "ËÁ×è¹", "áʹ")
sDigit10 = Array("", "ÊÔº", "ÂÕèÊÔº", "ÊÒÁÊÔº", "ÊÕèÊÔº", "ËéÒÊÔº", "Ë¡ÊÔº", "à¨ç´ÊÔº", "á»´ÊÔº", "à¡éÒÊÔº")
sNum = Replace(FormatNumber(sNum, 2), ",", "")Error ตรงนี้ค่ะ
nLen = Len(sNum)

If sNum = ".00" Then BahtText = "ÈÙ¹Âì"
For i = 1 To nLen - 3
J = (15 + nLen - i) Mod 6
sByte = Mid(sNum, i, 1)
If sByte <> "0" Then
If J = 1 Then sWord = sDigit10(sByte) Else sWord = sNumber(sByte) & sDigit(J)
BahtText = BahtText & sWord
End If
If J = 0 And i <> nLen - 3 Then BahtText = BahtText & "ÅéÒ¹": BahtText = Replace(BahtText, "˹Öè§ÅéÒ¹", "àÍç´ÅéÒ¹")
Next
If Left(sNum, 1) = "1" Then BahtText = Replace(BahtText, "àÍç´ÅéÒ¹", "˹Öè§ÅéÒ¹")
If Left(sNum, 2) = "11" Then BahtText = Replace(BahtText, "ÊԺ˹Öè§ÅéÒ¹", "ÊÔºàÍç´ÅéÒ¹")
If Len(BahtText) > 0 Then BahtText = BahtText & "ºÒ·"
If nLen > 4 Then BahtText = Replace(BahtText, "˹Ö觺ҷ", "àÍç´ºÒ·")
sNum = Right(sNum, 2)
If sNum = "00" Then
BahtText = BahtText & "¶éǹ"
Else
If Left(sNum, 1) <> "0" Then BahtText = BahtText & sDigit10(Left(sNum, 1))
If Right(sNum, 1) <> "0" Then BahtText = BahtText & sNumber(Right(sNum, 1))
BahtText = BahtText & "ʵҧ¤ì"
If Left(sNum, 1) <> "0" Then BahtText = Replace(BahtText, "˹Öè§ÊµÒ§¤ì", "àÍç´ÊµÒ§¤ì")
End If
End Function
58 @R13487
พอหนูเปลี่ยนไปเข้าcodeคำอ่านภาษาอังกฤษไม่ขึ้นerror mismatchค่ะ runได้แต่ผลคือ error อยู่ดีค่ะ

59 @R13488
ฟิลด์ InvoiceTotal ของคุณมีค่าเป็น zero-length string ("") หรือเป็นประเภทตัวอักษร (Text) หรือเปล่า เช็คดูดีๆครับ
60 @R13489
เห็นแล้ว ผิดตรงคุณใช้ฟังก์ชั่น Sum(ExtendedPrice) ในส่วนของ PageFooter section มันจะไม่ยอมครับ วิธีแก้คือต้องสร้างเท็กซ์บ็อกซ์ T ใน OrderID Footer section โดยมี ControlSource เป็น =Nz(Sum(....),0) แทน และกำหนดให้ Visible=False ส่วนใน PageFooter section ก็ให้อ้างถึง T แทน ก็จะเป็น =T ครับ   ในฟังก์ชั่น BathText ก็อ้างถึง T แทน ลองดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1908s