list box to report
กระทู้เก่าบอร์ด อ.Yeadram

 3,040   12
URL.หัวข้อ / URL
list box to report

ด้านซ้ายมือ (list1) ขวามือ (list2)
list1 มี รหัส,ชื่อ
ผมต้องการ
1. สามารถเลือก รายการจาก list1 กดปุ่ม แทรก รายการที่เลือก อยู่ใน list2
2. สามารถลบรายการจาก list2 โดยกดปุ่ม ลบ
3. เมื่อกดปุ่ม Print สามารถนำรายการที่อยู่ ใน list2 ออกมาปริ้นได้
ไม่ทราบว่าต้องเขียนโค้ดยังไงบ้างครับ หรือว่าต้องใช้เครื่องมืออื่นในการกำหนด

ขอบคุณครับ

12 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R11125
รูปครับ



2 @R11129
เรียน คุณ SAKNOI
1 List1 และ List2 มีการ bound กับ table หรือ query หรือไม่
มันจะสัมพันธ์กับการเขียน code
2 อยู่ใน table เดียวกัน หรือ แยกกัน
3 ถ้าอยู่ใน table เดียวกัน ใช้ field อะไรในการแยก เป็นตัวอักษร หรือตัวเลข
ตัวอย่าง คนละ table
กรณีที่ใช้ row source type เป็น table/query
การกดปุ่ม >> เป็นการย้ายข้อมูล จาก List1 ไป List2
    ถ้าเป็นการลบข้อมูลจากตาราง ที่ bound กับ list1 แล้ว
   currentdb.execute "Delete * FROM ตาราง where FIELD เงื่อนไขที่จะลบ = '" & LIST1.VALUE & "'"
    list1.requery
   ไป add ในตาราง ที่ bound กับ list2
    ใช้ insert into ชื่อ table น่าจะทำได้ต่อนะครับ
    จากนั้นก็สั่ง list2.requery
3 @R11130
การลบรายการใน list 2 ก็เหมือนลบ ใน list1

การ print ใน list2 ไม่ทราบ print ทั้งหมด หรือ print รายการเดียว
น่าจะเป็นรายการเดียว
สร้าง report ชื่อ report1

    Dim stDocName As String
    Dim stLinkCriteria as string
    stDocName = "Report1"
    stLinkCriteria ="[ชื่อ field เงื่อนไข] = '" & list2.value & "'"
    DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria

ไม่ทราบตรงกับความต้องการหรือไม่
4 @R11132
จากที่ได้ลองอ่านดูแล้ว ยังงงกับตอนย้ายข้อมูลมาไว้ใน list2 อยู่นะครับ

ตอนนี้
list1 มีแหล่งข้อมูลแถว มาจาก คิวรี่ มี 2 คอลัม ซึ่งได้แก่ รหัส(text),ชื่อ(text)
list2 เป็น list เปล่า ๆ ไม่มีอะไรครับ ตรงนี้ผมต้องสร้างตารางใหม่ มารับข้อมูล รหัส,ชื่อ ที่มาจาก list1 แล้วนำมาผูกกับ list2 ใช่ไหมครับ

การย้ายจาก list1 อยากให้เป็นการก๊อปปี้ ดีกว่า กลัวข้อมูลใน คิวรี่หายครับ
การแอดไป list2 คำสั่ง insert into ยังทำไม่เป็นครับ

หลังจากกดปริ้นแล้วอยากให้ปริ้นรายการใน list2 ทั้งหมดเลยครับ เสร็จแล้วให้เคลียร์ list2 ให้ว่าง และสามารถเลือกรายการสำหรับพิมพ์ใหม่ได้เลยครับ
5 @R11133
ผมพิมพ์คำตอบ คงยาวไปมั้ง (555) พอ save มันหายไปเลย
ต้องพิมพ์ใหม่
สร้าง Field อีก 1 Field ชื่อ Active Text(1)

เป็น Y แสดงใน List1 ซึ่งต้องสร้างเงื่อนไข จาก query ด้วย Active=Y
เป็น N แสดงใน List2 --->Active=N
Bound List1 และ List2 กับ query เดียวกัน แต่เงื่อนไขต่างกัน

คำสั่งปุ่ม >>
Dim strSQL AS STRING
Dim iFlag as string
iFlag="N"
strSQL="Update ชื่อตาราง Set Active ='" & iFlag & "' "
currentdb.execute strSQL
List1.requery
List2.Requery

6 @R11153
ขอบคุณ คุณ ditasilk มากครับ

ผมยังสังสัยตรง
เป็น Y แสดงใน List1 ซึ่งต้องสร้างเงื่อนไข จาก query ด้วย Active=Y
เป็น N แสดงใน List2 --->Active=N
Bound List1 และ List2 กับ query เดียวกัน แต่เงื่อนไขต่างกัน

ต้องไปกำหนดตรงไหน
รบกวนขอแบบละเอียดได้ไหมครับ
ขอบคุณครับ
7 @R11154
คุณสักน้อยต้องสร้าง Field เพิ่มขึ้น อีก 1 field ชื่อ field Active ชนิดข้อมูล เป็น text ขนาด 1 ตัวอักษร ในตาราง ที่คุณสักน้อยนำมาทำ query
ใน query เดิมมี 2 field จะเพิ่มเป็น 3 field เป็น รหัส ชื่อ Active
ใน List1 จะแสดงจาก query ตรง row source ซึ่งต้องเขียนหรือ
กดปุ่ม ... ด้านหลัง (จะแสดง query wizard) สิ่งที่ต้องการคือ
"Select รหัส ,ชื่อ ,Active From ชื่อ query Where Active='Y' "
(ตรงนี้คือ List1 BOUND กับ query มีเงื่อนไข Active=Y)
DC0001-1     บริษัท ABC      Y
ถ้าไม่ต้องการให้ Y แสดงกำหนดให้ ความกว้างColumn เป็น 0

ใน List2 BOUND กับ query เดียวกัน ทำเหมือน List1
เปลี่ยนเงื่อนไขเป็น Active=N
ตรง Row source ของ List2 จะได้
"Select รหัส ,ชื่อ ,Active From ชื่อ query Where Active='N' "

ต้องอ่านแล้วปฏิบัติไปด้วย หรือ ให้ชื่อฟิลด์ ชื่อตาราง หรือ query
มาจะได้เขียนตามความเป็นจริงได้ครับ
ตรงนี้เป็นเรื่องของคุณสมบัติของ ListBox ขอให้คุณสักน้อยอ่านเพิ่มเติม นะครับ
หมายเหตุ ผม POST หลายครั้ง จนเบื่อไปเลยครับ มัน post ไม่ขึ้น
ไม่ทราบว่าเป็นเพราะอะไรเหมือนกัน
8 @R11156
ต้องขอบคุณ คุณditasilk มากครับ

และต้องขอโทษด้วยครับที่บอกความต้องการผิดตั้งแต่แรกครับ

ตอนนี้สามรถทำตามที่คุณ ditasilk บอกได้แล้วครับ
คือ มือกดปุ่ม >> ข้อมูลก็จะย้ายมา list2 ครับ แต่มันมาหมดเลยครับ

คือ อยากให้มาเฉพาะรายการที่เลือก ใน list1 (บ้าง รหัส เท่านั้น) เช่น เลือกจาก list1 มาแค่ DD0001,DD0002 ให้มาอยู่ใน list2
เมื่อกด pirnt ให้ปริ้นแค่รายการใน list2 แล้วให้เคลีย์รายการใน list2 ให้ว่าง

ตามนี้ครับ

รบกวนด้วยครับ
ขอบคุณครับ

ปล. ใส่ชื่อ saknoi แล้วโพสไม่ได้ อิอิ
9 @R11157
ที่จริง คุณ SAKNOI ไม่ได้บอกความต้องการผิดหรอกครับ
ผมเห็นว่า การจะ พิมพ์ ข้อมูลใน List2 หลังจากที่เลือกแล้ว
จะต้องอ้างอิงแหล่งข้อมูล เพื่อทำ report
ไม่เช่นนั้น ก็ต้อง ใช้ Object Printer ซึ่งอาจจะควบคุมแล้วไม่เป็นไปตามที่ต้องการ

การพิมพ์ออก REPORT ก็จะใช้วิธีอ้างอิงจากตาราง/คิวรี่ เพื่อให้รู้ว่า
ข้อมูลไหนอยู่ใน List1 ข้อมูลไหนอยู่ใน List2 ซึ่งง่ายต่อการ
ควบคุม และปฏิบัติ โดยใช้ ฟิลด์ Active มาควบคุม
ผมถามตัวเองว่า
เราจะแยกข้อมูลใน List2 ได้อย่างไร
ตอบกำปั้นทุบดินว่า ก็เอาข้อมูลที่โชว์ใน List2 ไปแสดงเลย
ก็ทำได้ครับ ใช้วิธีวนลูป List2 เก็บค่า แล้วส่งไป Report
(ซึ่งหน้าตา report ไม่ทราบเป็นอย่างไร )
แต่วิธีสอนยาก เข้าใจยาก
เอาวิธีง่าย ไว้ก่อน
ลองส่งข้อมูลเท่าที่จำเป็น เข้า email ของ board หน่อยครับ เดี๋ยวจะลองดูให้ครับ จะได้รู้ว่า ทำไปถึงไหน จุดไหนไม่เข้าใจ
ผมต้องการสอน แล้ว เข้าใจ ต่อยอดได้ ดีกว่า
10 @R11160
ส่งไปให้แล้วนะครับ ชื่อ คำถาม T02373      list box to report
11 @R11162
ส่งตัวอย่างใน email แล้วครับ
12 @R11163
ขอบคุณมากครับ ตรงตามต้องการเลยครับ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3352s