Page 1 of 1

สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:07 am
by walrus
ผมต้องการนำข้อมูลจากฐานข้อมูล ดึงไปอีกชีทเพื่อไว้ทำการพิมพ์ออกมา ในรูปแบบคล้ายๆ Slip
ไม่ทราบว่ามีวิธีอะไรที่ดึงข้อมูลไปได้บ้างครับ ?
แบบฟอร์มจะเป็นขนาดกระดาษ A4 แต่แบ่งเป็น 6 ช่อง
โดยสมมติว่ามี Order 5 Order ให้ดึงออกมาแล้วหยุดที่ 1 หน้า ช่องที่ 6 ที่ไม่มีออร์เดอร์จะว่างไว้
สมมติอีกตัวอย่าง
หากมี Order 10 Order จะดึงออกมาได้ 2 หน้า โดย หน้าที่ 1 order ครบ 6 ช่อง แต่หน้าที่ 2 order จะมีแค่ 4 และ 2 ช่องล่างสุดว่างไว้ และหยุดส่วนที่ว่างไว้เท่านี้น่ะครับ ไม่มีช่องว่าง เลยไปหน้า 3 , 4 , 5 .......

ในไฟล์ตัวอย่าง ผมใส่สูตร Vlookup ไว้ดึงคำตอบที่ต้องการออกมาเฉยๆ ครับ ผมเกรงว่าหากมี Order มากๆ ผมมานั่งใส่ Vlookup ทีละ Order ไม่ไหวครับ อยากให้ดึงออกมาได้เลยเหมือนจดหมายเวียนน่ะครับ

รบกวนหน่อยนะครับ :oops:
print slip.xlsx

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:24 am
by bank9597
:D ลองทำฟอร์มอีกฟอร์ม เพื่อดึงออร์เดอร์ที่ต้องการพิมพ์ออกมาว่า ต้องการพิมพ์ออร์เดอร์ จะได้ใช้สูตรง่ายขึ้น

ตัวอย่างที่ทำมาใช้ดึงโดยตรงจาก DB อีกทั้งยังไม่มีตัวที่เป็นคีย์หลักที่ใช้ในการดึงข้อมูลครับ :D

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:33 am
by walrus
bank9597 wrote::D ลองทำฟอร์มอีกฟอร์ม เพื่อดึงออร์เดอร์ที่ต้องการพิมพ์ออกมาว่า ต้องการพิมพ์ออร์เดอร์ จะได้ใช้สูตรง่ายขึ้น

ตัวอย่างที่ทำมาใช้ดึงโดยตรงจาก DB อีกทั้งยังไม่มีตัวที่เป็นคีย์หลักที่ใช้ในการดึงข้อมูลครับ :D
ผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 11:02 am
by bank9597
:D
ผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?
:D ไม่เป็นไรครับ แนวทางการทำไม่จำเป็นต้องเหมือนกันครับ แต่ที่ผมถนัดคือการดึงข้อมูลมาจาก Database ก่อน เช่น ต้องการดูข้อมูลออร์เดอร์ 101 ผมก็คีย์รหัสออร์เดอร์ลงไปแล้วดึงข้อมูลขึ้นมา เมื่อข้อมูลมาแสดงแล้ว หากต้องการพิมพ์ กดให้กดปุ่มพิมพ์ ข้อมูลที่อยู่ในฟอร์มก็จะถูกดึงไปจัดวางตามฟอร์มที่เราต้องการพิมพ์อีกทีอย่างถูกต้องครับ

อันนี้เป็นวิธีการที่ผมใช้อยู่ สำหรับที่คุณ walrus ถามมา ผมเกรงว่าผมจะใช้สูตรในการทำยากกว่าของคุณ walrus เสียอีกครับ :tt:
อีกวิธีนึงคือใช้ VBA ครับ แต่ต้องเขียนโค๊ดมาดูก่อน จะได้ปรับปรุงต่อไปครับ :D

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 11:14 am
by walrus
bank9597 wrote::D
ผมไม่เข้าใจอ่ะครับ สมมติว่าในไฟล์ตัวอย่างคือสิ่งที่ตอ้งการพิมพ์ทั้งหมดแล้วหล่ะครับ ? แล้วตัวที่เป็นคีย์หลักที่ใช้ในการดึง อิงจาก Order ได้หรือไม่ครับ ?
:D ไม่เป็นไรครับ แนวทางการทำไม่จำเป็นต้องเหมือนกันครับ แต่ที่ผมถนัดคือการดึงข้อมูลมาจาก Database ก่อน เช่น ต้องการดูข้อมูลออร์เดอร์ 101 ผมก็คีย์รหัสออร์เดอร์ลงไปแล้วดึงข้อมูลขึ้นมา เมื่อข้อมูลมาแสดงแล้ว หากต้องการพิมพ์ กดให้กดปุ่มพิมพ์ ข้อมูลที่อยู่ในฟอร์มก็จะถูกดึงไปจัดวางตามฟอร์มที่เราต้องการพิมพ์อีกทีอย่างถูกต้องครับ

อันนี้เป็นวิธีการที่ผมใช้อยู่ สำหรับที่คุณ walrus ถามมา ผมเกรงว่าผมจะใช้สูตรในการทำยากกว่าของคุณ walrus เสียอีกครับ :tt:
อีกวิธีนึงคือใช้ VBA ครับ แต่ต้องเขียนโค๊ดมาดูก่อน จะได้ปรับปรุงต่อไปครับ :D
ขอบคุณ คุณ bank9597 มากครับสำหรับแนวทาง VBA ยังไม่เคยแตะเลยครับ :cry:
ถ้าใช้แนวทาง Mail Merge พอทำได้หรือเปล่าครับ ? กำลังศึกษาว่า Mail Merge มันจะทำได้มั้ย
ก่อนหน้านี้ผมเคยใช้ Mail Merge พิมพ์ซองงานแต่งงานตัวเอง :lol:

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 11:26 am
by bank9597
:shock:
ขอบคุณ คุณ bank9597 มากครับสำหรับแนวทาง VBA ยังไม่เคยแตะเลยครับ
ถ้าใช้แนวทาง Mail Merge พอทำได้หรือเปล่าครับ ? กำลังศึกษาว่า Mail Merge มันจะทำได้มั้ย
ก่อนหน้านี้ผมเคยใช้ Mail Merge พิมพ์ซองงานแต่งงานตัวเอง
:D ผมก็ไม่เคยใช้ Mail Merge พอๆกับคุณ walrus ไม่เคยแตะ VBA เลยครับ :lol: :lol:

เดี๋ยวผมจะลองหาวิธีดูครับ :D

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 2:04 pm
by ZEROV
เพื่อความเข้าใจให้ตัดเรื่อง Form ออกไปก่อน
ที่ชีท "Database"
ref =$A$3:$G$7
Page = $J$1
h3=INDEX(OFFSET(ref,Page*5-5,0),ROW(A1),COLUMN(A1))
Copy สูตร ไป 5R x 7C

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 6:54 pm
by snasui
walrus wrote:ผมต้องการนำข้อมูลจากฐานข้อมูล ดึงไปอีกชีทเพื่อไว้ทำการพิมพ์ออกมา ในรูปแบบคล้ายๆ Slip
ไม่ทราบว่ามีวิธีอะไรที่ดึงข้อมูลไปได้บ้างครับ ?
แบบฟอร์มจะเป็นขนาดกระดาษ A4 แต่แบ่งเป็น 6 ช่อง
โดยสมมติว่ามี Order 5 Order ให้ดึงออกมาแล้วหยุดที่ 1 หน้า ช่องที่ 6 ที่ไม่มีออร์เดอร์จะว่างไว้
สมมติอีกตัวอย่าง
หากมี Order 10 Order จะดึงออกมาได้ 2 หน้า โดย หน้าที่ 1 order ครบ 6 ช่อง แต่หน้าที่ 2 order จะมีแค่ 4 และ 2 ช่องล่างสุดว่างไว้ และหยุดส่วนที่ว่างไว้เท่านี้น่ะครับ ไม่มีช่องว่าง เลยไปหน้า 3 , 4 , 5 .......

ในไฟล์ตัวอย่าง ผมใส่สูตร Vlookup ไว้ดึงคำตอบที่ต้องการออกมาเฉยๆ ครับ ผมเกรงว่าหากมี Order มากๆ ผมมานั่งใส่ Vlookup ทีละ Order ไม่ไหวครับ อยากให้ดึงออกมาได้เลยเหมือนจดหมายเวียนน่ะครับ

รบกวนหน่อยนะครับ :oops:
print slip.xlsx
กรณีต้องการให้เป็นอัตโนมัติคงต้องพึ่ง VBA หรือสูตรร่วมกับ VBA เพื่อ Run ทีละหน้าแล้วสั่งพิมพ์ ผมได้ทำตัวอย่างการใช้สูตรและ Scroll bar เพื่อเลื่อนไปยังหน้าถัด ๆ ไป ดูได้ตามไฟล์แนบครับ

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:02 pm
by walrus
snasui wrote:
walrus wrote:ผมต้องการนำข้อมูลจากฐานข้อมูล ดึงไปอีกชีทเพื่อไว้ทำการพิมพ์ออกมา ในรูปแบบคล้ายๆ Slip
ไม่ทราบว่ามีวิธีอะไรที่ดึงข้อมูลไปได้บ้างครับ ?
แบบฟอร์มจะเป็นขนาดกระดาษ A4 แต่แบ่งเป็น 6 ช่อง
โดยสมมติว่ามี Order 5 Order ให้ดึงออกมาแล้วหยุดที่ 1 หน้า ช่องที่ 6 ที่ไม่มีออร์เดอร์จะว่างไว้
สมมติอีกตัวอย่าง
หากมี Order 10 Order จะดึงออกมาได้ 2 หน้า โดย หน้าที่ 1 order ครบ 6 ช่อง แต่หน้าที่ 2 order จะมีแค่ 4 และ 2 ช่องล่างสุดว่างไว้ และหยุดส่วนที่ว่างไว้เท่านี้น่ะครับ ไม่มีช่องว่าง เลยไปหน้า 3 , 4 , 5 .......

ในไฟล์ตัวอย่าง ผมใส่สูตร Vlookup ไว้ดึงคำตอบที่ต้องการออกมาเฉยๆ ครับ ผมเกรงว่าหากมี Order มากๆ ผมมานั่งใส่ Vlookup ทีละ Order ไม่ไหวครับ อยากให้ดึงออกมาได้เลยเหมือนจดหมายเวียนน่ะครับ

รบกวนหน่อยนะครับ :oops:
print slip.xlsx
กรณีต้องการให้เป็นอัตโนมัติคงต้องพึ่ง VBA หรือสูตรร่วมกับ VBA เพื่อ Run ทีละหน้าแล้วสั่งพิมพ์ ผมได้ทำตัวอย่างการใช้สูตรและ Scroll bar เพื่อเลื่อนไปยังหน้าถัด ๆ ไป ดูได้ตามไฟล์แนบครับ
ขอบคุณมากครับ สะดวกมากๆเลยครับ ถ้าไม่เป็นการรบกวนผมอยากทราบขั้นตอนการทำได้หรือไม่ครับ ?
หากไม่สะดวกไม่เป็นไรครับ :D

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:22 pm
by snasui
:lol: ขั้นตอนมีดังนี้ครับ
  1. เพิ่ม Scroll bar โดย
    1. เข้าเมนู Developer
    2. คลิก Insert
    3. ที่ Form Control คลิก Scroll Bar
    4. นำมาวาดลงในพื้นที่ที่ต้องการ
    5. คลิกขวาลงใน Scroll Bar > Format Control
    6. ที่ Current value: คีย์ 1 > ที่ Cell Link: คลิก J1 > OK
  2. เขียนสูตรใน Form แรกโดย
    1. ที่ B2 คีย์
      =INDEX(Database!$B$3:$G$1000,COUNTIF(A$2:A2,A2)+6*($J$1-1),MATCH(A2,Database!$B$2:$G$2,0))
      Enter > Copy ไปวางที่ B4, D4, F4
    2. ที่ E2 คีย์
      =INDEX(Database!$C$3:$C$1000&" "&Database!$D$3:$D$1000,COUNTIF(A$2:A2,A2)+6*($J$1-1))
      Enter
  3. Copy Form แรกไปวางที่ตำแหน่ง Form อื่น ๆ

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Wed Mar 28, 2012 10:43 pm
by bank9597
:D :D :D :D

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Thu Mar 29, 2012 9:05 am
by walrus
snasui wrote::lol:
  1. ที่ B2 คีย์
    =INDEX(Database!$B$3:$G$1000,COUNTIF(A$2:A2,A2)+6*($J$1-1),MATCH(A2,Database!$B$2:$G$2,0))
    Enter > Copy ไปวางที่ B4, D4, F4
ที่ต้องก็อบปี้ ไปวางที่ B4,D4,F4 ต้องแก้ให้มัน Match กับหัวเรื่องด้วยใช่มั้ยครับ ผมก็อปปี้ไปอย่างเดียวมันเป็นแต่ออร์เดอร์อย่างเดียว แต่พอลองแก้ให้มัน match กันแล้ว OK แล้วครับ 8-)

แต่ยังไงขอบคุณมากมากครับสำหรับความรู้ไม่รู้จะขอบคุณยังไงดี ผมรักเว็บบอร์ดนี้จริงๆเลย :roll:

Re: สอบถามวิธีการดึงข้อมูลออกไปทำแบบฟอร์มเพื่อพิมพ์ครับ

Posted: Fri Mar 30, 2012 6:53 am
by snasui
:lol:
walrus wrote:ที่ต้องก็อบปี้ ไปวางที่ B4,D4,F4 ต้องแก้ให้มัน Match กับหัวเรื่องด้วยใช่มั้ยครับ ผมก็อปปี้ไปอย่างเดียวมันเป็นแต่ออร์เดอร์อย่างเดียว แต่พอลองแก้ให้มัน match กันแล้ว OK แล้วครับ
ขึ้นอยู่กับวิธีการ Copy และ Paste ครับ ผม Copy และ Pasteโดยไม่ต้องแก้สูตรเพิ่มเติมโดย
  1. คลิกขวาที่ B2 > Copy
  2. กดแป้น Ctrl ค้างไว้แล้วคลิก B4, D4, F4
  3. คลิกขวา > Paste Special > Formulas > OK