iifในคิวรี่ก่อนพิมพ์ป้ายฉลากQbizStickerอยากพิมพ์เฉพาะตำแหน่งแถวและคอลัมน์


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

20 พ.ค. 64 , 07:58:52
อ่าน 517 ครั้ง

SakDa

SELECT [56].l_no, [56].la_id, [56].l_details, [56].Print, [56].LandC, [56].LineX, [56].ColumnX
FROM 56
WHERE ((([56].l_details)=IIf([print]=-1,[l_details]," ")));
อยากให้แทนข้อความในฟิล์ว l_details ด้วยความว่างเปล่าแม้จะข้อความอยู่ในนั้น กรณีที่ field print เป็นค่า No แต่ยังคงป้ายลาเบลอยู่บนกระดาษสติกเกอร์ ใช้วิธีแบบง่ายๆ คือ ทำฟอร์มสติกเกอร์เรียบร้อยแล้ว บางช่วงกระดาษสติกเกอร์เหลือจำนวนดวง2แถวล่าง จาก 14 แถว เราจะขอพิมพ์ดวงที่ 1ของแถวที่13 แบบนี้ครับ โดยที่ไม่ต้องตัดแถวที่ 1-12 ทิ้ง จะทำให้พิมพ์ไม่ตรงกับแถวในกระดาษสติกเกอร์สำเร็จรูปของคิวบิซ  ดัดแปลงจากคำตอบในเว็บ IIf(IsNull([ADDRMU]),"-",Replace(Replace([ADDRMU],"ม.",""),"หมู่ที่ ","")) แล้วไม่สำเร็จครับ ในไฟล์แนบมี mdb กับ ภาพสติกเกอร์ที่ใช้ ภาพอันเดียวกันกับที่แสดงบนหน้าเว็บครับ

เคยได้รับความช่วยเหลืออาจารย์สุภาพ เหยียดรัมย์ไปเมื่อหลายปีก่อนแต่เป็นการสั่งพิมพ์แบบใช้โค้ด แล้วรายงานชิ้นนั้นมันไม่รู้อยู่ในไฟล์ไหน เลยมาทำแนวนี้ที่ไม่ต้องใช้คำสั่ง vba แทนจะง่ายกว่า

 

20 พ.ค. 64 , 09:39:33
ตอบกลับ #1

SakDa

ถ้าแบบทำด้วยตนเองก่อนคือสั่งอัพเดทคิวรี่ ที่ฟิลด์ print ว่าถ้าเป็น no ให้ข้อมูลใน L-details เป็นค่า “ “ ตอนสั่งพิมพ์ก็จะพิมพ์ออกมาเป็นแบบเปล่าไม่ลงหมึก หรือ อีกวิธีหนึ่งตรงรายงานเงื่อนไขเป็นสีขาวกรณีมีค่าเป็น no วิธีหลังคาดว่ามันต้องสั่งพิมพ์โดยให้เป็นสีขาวคงไม่ดีวิธีนี้...คิดรอคำตอบ

 

20 พ.ค. 64 , 11:42:13
ตอบกลับ #2

PNR

จากที่ดู LINE X และ COLUMN X เป็นตัวระบุ ตำแหน่งแนวตั้งและแนวนอนของ RecordSorce นั้น

วิธีการที่ให้แสดงเฉพาะ l_details ที่ Print = Yes นั้นสามารถทำได้ครับ ส่วนที่ Print = No ก็ให้ข้ามการแสดงไป
ใช้การ Loop Check ค่าและสั่งให้ไปแสดงในtextbox ที่เราตั้งชื่อเรียงไว้ ตั้งแต่ 1 - 56 ครับ
และที่ตัวรายงานก็ออกแบบจำนวนช่องไว้ทั้ง 56 ช่อง โดยสามารถตั้งชื่อไว้เช่น

L1C1   L1C2    L1C3    L1C4
L2C1   L2C2    L2C3    L2C4
L3C1   L3C2    L3C3    L3C4
...............................L14C4

ถ้ามีถ้าท่านส่งการออกแบบรายงานที่ทำเป็นช่องไว้ 56 ช่อง มาด้วยเดี่ยวผมเพิ่มโค้ดให้ครับ
ผมพอจะทำได้ครับ
« แก้ไขครั้งสุดท้าย: 20 พ.ค. 64 , 12:03:36 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

20 พ.ค. 64 , 13:14:30
ตอบกลับ #3

SakDa

บรรทัดแรกของสติกเกอร์คือพ่นหมึกมีข้อจำกัด แต่ไม่เป็นปัญหา ทำแบบคัดลอกวางไปพลางๆครับ เสียไป 7 แผ่นกว่าจะได้ค่าที่ลงตัวพอดีมาก ปรับอีกทีหลังจากได้รับคำตอบครับ ซ้ายสุดคือดีที่สุด

 

21 พ.ค. 64 , 10:04:22
ตอบกลับ #4

PNR

ผมลองสร้าง รายงานโดย
ที่ตัวรายงานก็ออกแบบโดยใส่ Textbox ไว้ 56 อัน โดยสามารถตั้งชื่อไว้เช่น

L1C1   L1C2    L1C3    L1C4
L2C1   L2C2    L2C3    L2C4
L3C1   L3C2    L3C3    L3C4
...............................L14C4


และในEvent Report_Load ผมใส่โค้ดเข้าไป
โค๊ด: [Select]
Private Sub Report_Load()
Dim rst As dao.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT [56].l_details, [56].LandC, [56].Print FROM 56 WHERE ((([56].Print)=True));", dbOpenDynaset)
   
    rst.MoveFirst
    Do Until rst.EOF
    If Not IsNull(rst!LandC) Then
    Me(rst!LandC) = rst!l_details
    End If
        rst.MoveNext
    Loop
   
End Sub
โดยเรากำหนด Recordsource ให้เอาเฉพาะ ข้อมูลที่ Print = true หรือถูกติ๊กเลือกอยู่มาเท่านั้น
และใช้ If กำหนด ว่าถ้า LandC นั้นมีอยู่
ก็ให้ textbox  Me(rst!LandC) ที่มีชื่อเหมือนกับ LandC ของตารางนั้นนำค่า l_details ลงไปแสดงที่ textbox นั้น

ไม่แน่ใจว่าท่านต้องการแบบนี้ไหมลองดูตัวอย่างนะครับ
« แก้ไขครั้งสุดท้าย: 21 พ.ค. 64 , 10:11:35 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa, Shutchan Gumpanavarawan

16 มิ.ย. 65 , 10:31:03
ตอบกลับ #5

SakDa

วันนี้แก้ปัญหาบางตำแหน่งที่ไม่ต้องการพิมพ์สติกเกอร์ โดยเพิ่ม field ลงไปในตาราง ว่าจะพิมพ์สติกเกอร์ตำแหน่งนี้ไหม เป็นแบบ number ว่าจะทำแบบนี้ได้ไหม ลองครั้งแรกใช้ condition formatting ทำ textbox คลุมเนื้อหาในสติกเกอร์ทั้งหมดไม่สำเร็จ ค้นบนกูเกิ้ลใหม่ เอาแบบถ้าตรงเงื่อนไขถ้าเป็นเลข 1 แสดงข้อความ ถ้าว่างให้คลุมด้วยสีขาว สำเร็จตาม

Open your report in design view, right click "Detail" select Properties and put the code (in bold) in the OnFormat. Change MyMemo to the name of your memo control.

Code:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) 

 Me.MyMemo.Visible = Not IsNull(Me.MyMemo)

End Sub



 


บอร์ดเรียนรู้ Access สำหรับคนไทย