กระทู้เก่าบอร์ด อ.Yeadram
2,824 9
URL.หัวข้อ /
URL
รายงานเลขไม่รันตามที่สั่งครับ
คืออยากทราบว่าทำไมเวลาที่ผมเขียนโค๊ตใน sql ให้มันเรียงจากวันที่ (Report)
พอกดแสดงแล้วปรากฏว่ามันไม่ยอมรันตามวันที่ กระโดดไป กระโดดมา พอผมเอา
โค๊ตที่เขียนหาผลรวมใน textbox ออก มันก็จะรันวันทีั่่ได้ปกติครับ ซึ่งโค๊ตที่ผมเขียนหาผลรวม
ก็คือ =Sum([amount]) เป็นต้นครับ
มันเป็นเพราะอะไรหรอครับ
พอกดแสดงแล้วปรากฏว่ามันไม่ยอมรันตามวันที่ กระโดดไป กระโดดมา พอผมเอา
โค๊ตที่เขียนหาผลรวมใน textbox ออก มันก็จะรันวันทีั่่ได้ปกติครับ ซึ่งโค๊ตที่ผมเขียนหาผลรวม
ก็คือ =Sum([amount]) เป็นต้นครับ
มันเป็นเพราะอะไรหรอครับ
9 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R03495
เพราะอะไรหรอครับ
2 @R03499
โค้ด ใน sql ของคุณ เป็นอย่างไร
โค้ด ใน textbox ของคุณ เป็นอย่างไร
textbox ของคุณวางไว้ section ไหนใน Report
Report ของคุณ มีกรุ๊ป หรือไม่
มีการเรียงลำดับหรือไม่ เรียงตามอะไร
โค้ด ใน textbox ของคุณ เป็นอย่างไร
textbox ของคุณวางไว้ section ไหนใน Report
Report ของคุณ มีกรุ๊ป หรือไม่
มีการเรียงลำดับหรือไม่ เรียงตามอะไร
3 @R03518
งั้นผมรบกวนถามคุณ yeadram หน่อยครับว่า
ถ้าเราจะเขียนโค๊ตหาผลรวมของ amount ที่หน้า vba เนี่ยต้องเขียนยังไงหรอครับ
ถ้าเราจะเขียนโค๊ตหาผลรวมของ amount ที่หน้า vba เนี่ยต้องเขียนยังไงหรอครับ
4 @R03519
sum(amount)
5 @R03525
ไม่ไ้ด้ครับ
ผมเขียนไว้ที่ส่วนของ Private Sub ReportFooter_Print(Cancel As Integer, PrintCount As Integer)
Text40 = Sum(amount)
มันก็ฟ้องว่า
Compile Error
Sub or function not define
ผมเขียนไว้ที่ส่วนของ Private Sub ReportFooter_Print(Cancel As Integer, PrintCount As Integer)
Text40 = Sum(amount)
มันก็ฟ้องว่า
Compile Error
Sub or function not define
6 @R03527
แก้ปัญหาผิดจุดแล้วล่ะครับ
ไม่จำเป็นต้องเขียน vba หรอกครับ
ถ้าจะเขียน vba คุณต้อง จำลองเรคคอร์ดเซ็ต แล้ว sum เอาจากตรงนั้น
ทำไม ไม่กลับไปเขียนเป็น นิพจน์ ใน textbox เอาล่ะครับ
ปัญหาที่มัน เรียงลำดับผิดๆ ถูกๆ ก็ไปแก้ปัญหามันตรงนั้นเลย ไม่ต้อง มาเขียน sum ด้วย vba หรอก
- การแก้ปัญหา เรียงผิดๆ ถูกๆ ให้ตรวจสอบ ตามความเห็น (R03499)
- แต่ถ้าอยากเขียนเป็นโค้ด อาจต้องเขียนเยอะกว่านั้นนะ เท่าที่ผมเข้าใจ เพราะระบบรายงาน มันไม่ได้ทำงานแบบพรึ่บเดียว เห็นข้อมูลทั้งหมด แต่มันจะไล่วนลูปแสดงผลทีละรายการ ตั้งแต่รายการแรก จนรายการสุดท้าย นั่นหมายความว่า เมื่อมันแสดงผลรายการที่ 2 มันก็จำค่าต่างๆ ของรายการที่ 1 ไม่ได้แล้วเพราะมันไม่สนจะจำหรอก มันแค่วนรอบ
- 1 หาค่าทุกๆ ฟิลด์ ของรายการนั้นๆ
- 2 โปรยค่าต่างๆ นั้นลงใน control (จะทำตามเงื่อนไขของแต่ละคอนโทรลในจังหวะนี้ รวมถึงการประมวลผลนิพจน์ด้วย)
- 3 ไปทำงานในรายการใหม่ (ลืมค่าของรายการก่อนหน้านี้หมดแล้ว)
ดังนั้นการ sum คุณต้องไปเขียนโค้ดในเหตุการณ์อื่นก่อน คืออาจจะเขียนยอดบวกเอาไว้ใน เหตุการณ์ตอนที่มันกำลังโปรยข้อมูล แล้วบวกเพิ่มเรื่อยๆ เข้าตัวแปร พอมาถึงเหตุการณ์ ReportFooter_Print ของคุณนี้ ค่อยเอาค่าตัวแปรมาแสดงผล
การเขียนด้วยนิพจน์ คือการพึ่งความสามารถของ Access สำหรับงานอย่างนี้ ผมว่ามันง่ายกว่าเยอะ
การเขียนด้วย โค้ด คือการพึ่งพาความสามารถของ VBA มันก็ทำได้แต่มันจะยากกว่าสักหน่อย
-นั่นสำหรับส่วน "รายงาน" นะครับ
-ส่วน "ตาราง" ควบคุมด้วย Access ง่ายกว่า VBA
-ส่วน "คิวรี่" ควบคุมด้วย Access ง่ายกว่า VBA
-ส่วน "ฟอร์ม" ควบคุมด้วย VBA ง่ายกว่า Access
- การควบคุม "รายงาน" ด้วย VBA มีข้อจำกัดเยอะ บางครั้งผมยังได้ยิน อ.สันติสุข บ่นๆ เลยว่า "ระบบรายงานของ Access ยังไม่ดีพอ" เพราะฉะนั้นถ้าเลือกได้ ขอให้ควบคุมมันด้วยการเขียนเป็น นิพจน์ดีกว่าครับ
ถ้ามองหาสาเหตุไม่เจอจริงๆ (เป็นไปได้ที่เราจะมีช่วงมืดตึ๊บ ทุกคนเคยเป็นทั้งนั้นครับ) ลองส่งตัวอย่างเข้า เมล์ของบอร์ดมาครับ (คัดข้อมูลเฉพาะที่จำเป็นมาก็ได้ เพื่อให้ไฟล์เล็กๆ)
เขียนหัวข้ออีเมล์ให้ สังเกตง่าย (เผื่อคนอื่นๆ ตามเข้ามาค้นความรู้ในภายหลัง)
เดี๋ยวจะช่วยดูให้ครับ
ไม่จำเป็นต้องเขียน vba หรอกครับ
ถ้าจะเขียน vba คุณต้อง จำลองเรคคอร์ดเซ็ต แล้ว sum เอาจากตรงนั้น
ทำไม ไม่กลับไปเขียนเป็น นิพจน์ ใน textbox เอาล่ะครับ
ปัญหาที่มัน เรียงลำดับผิดๆ ถูกๆ ก็ไปแก้ปัญหามันตรงนั้นเลย ไม่ต้อง มาเขียน sum ด้วย vba หรอก
- การแก้ปัญหา เรียงผิดๆ ถูกๆ ให้ตรวจสอบ ตามความเห็น (R03499)
- แต่ถ้าอยากเขียนเป็นโค้ด อาจต้องเขียนเยอะกว่านั้นนะ เท่าที่ผมเข้าใจ เพราะระบบรายงาน มันไม่ได้ทำงานแบบพรึ่บเดียว เห็นข้อมูลทั้งหมด แต่มันจะไล่วนลูปแสดงผลทีละรายการ ตั้งแต่รายการแรก จนรายการสุดท้าย นั่นหมายความว่า เมื่อมันแสดงผลรายการที่ 2 มันก็จำค่าต่างๆ ของรายการที่ 1 ไม่ได้แล้วเพราะมันไม่สนจะจำหรอก มันแค่วนรอบ
- 1 หาค่าทุกๆ ฟิลด์ ของรายการนั้นๆ
- 2 โปรยค่าต่างๆ นั้นลงใน control (จะทำตามเงื่อนไขของแต่ละคอนโทรลในจังหวะนี้ รวมถึงการประมวลผลนิพจน์ด้วย)
- 3 ไปทำงานในรายการใหม่ (ลืมค่าของรายการก่อนหน้านี้หมดแล้ว)
ดังนั้นการ sum คุณต้องไปเขียนโค้ดในเหตุการณ์อื่นก่อน คืออาจจะเขียนยอดบวกเอาไว้ใน เหตุการณ์ตอนที่มันกำลังโปรยข้อมูล แล้วบวกเพิ่มเรื่อยๆ เข้าตัวแปร พอมาถึงเหตุการณ์ ReportFooter_Print ของคุณนี้ ค่อยเอาค่าตัวแปรมาแสดงผล
การเขียนด้วยนิพจน์ คือการพึ่งความสามารถของ Access สำหรับงานอย่างนี้ ผมว่ามันง่ายกว่าเยอะ
การเขียนด้วย โค้ด คือการพึ่งพาความสามารถของ VBA มันก็ทำได้แต่มันจะยากกว่าสักหน่อย
-นั่นสำหรับส่วน "รายงาน" นะครับ
-ส่วน "ตาราง" ควบคุมด้วย Access ง่ายกว่า VBA
-ส่วน "คิวรี่" ควบคุมด้วย Access ง่ายกว่า VBA
-ส่วน "ฟอร์ม" ควบคุมด้วย VBA ง่ายกว่า Access
- การควบคุม "รายงาน" ด้วย VBA มีข้อจำกัดเยอะ บางครั้งผมยังได้ยิน อ.สันติสุข บ่นๆ เลยว่า "ระบบรายงานของ Access ยังไม่ดีพอ" เพราะฉะนั้นถ้าเลือกได้ ขอให้ควบคุมมันด้วยการเขียนเป็น นิพจน์ดีกว่าครับ
ถ้ามองหาสาเหตุไม่เจอจริงๆ (เป็นไปได้ที่เราจะมีช่วงมืดตึ๊บ ทุกคนเคยเป็นทั้งนั้นครับ) ลองส่งตัวอย่างเข้า เมล์ของบอร์ดมาครับ (คัดข้อมูลเฉพาะที่จำเป็นมาก็ได้ เพื่อให้ไฟล์เล็กๆ)
เขียนหัวข้ออีเมล์ให้ สังเกตง่าย (เผื่อคนอื่นๆ ตามเข้ามาค้นความรู้ในภายหลัง)
เดี๋ยวจะช่วยดูให้ครับ
7 @R03533
ผมลองๆมาเช็คดูแล้วเหมือนว่า มันไม่ยอมรันตามที่ผมเขียน order by ไว้อะครับ
คือผมเขียน select ไว้ในส่วนคิวรี่ ครับ ผมรองรันในคิวรี่เลยมันก็รันเลขให้นะครับ
แต่พอรันที่หน้ารายงานมันกลับไม่ยอมรันเลขให้ครับ ตอนแรกที่เป็นที่หน้าอื่นๆคือ พอผมเอา =Sum([amount]) ที่เขียนไว้ใน textbox ออกมันก็จะสามารถรันเลขที่ได้ครับ
แต่หน้าที่เป็นปัญหาอยู่ตอนนี้ผมลองเอาออกหมดก็รันไม่ได้ครับ มันเกิดเพราะอะไรหรอครับ แล้วเมล์ของบอร์ดนี่อะไรหรอครับผมหาไม่เจอเลยอะ ตอนนี้กำลังเข้าสู่โหมดมึนตึ๊บจริงๆครับ
คือผมเขียน select ไว้ในส่วนคิวรี่ ครับ ผมรองรันในคิวรี่เลยมันก็รันเลขให้นะครับ
แต่พอรันที่หน้ารายงานมันกลับไม่ยอมรันเลขให้ครับ ตอนแรกที่เป็นที่หน้าอื่นๆคือ พอผมเอา =Sum([amount]) ที่เขียนไว้ใน textbox ออกมันก็จะสามารถรันเลขที่ได้ครับ
แต่หน้าที่เป็นปัญหาอยู่ตอนนี้ผมลองเอาออกหมดก็รันไม่ได้ครับ มันเกิดเพราะอะไรหรอครับ แล้วเมล์ของบอร์ดนี่อะไรหรอครับผมหาไม่เจอเลยอะ ตอนนี้กำลังเข้าสู่โหมดมึนตึ๊บจริงๆครับ
8 @R03537
accboard @ gmail . com
เผื่ออยากเข้าไปค้นหาตัวอย่างอื่นๆ ก็เข้าได้ครับ
www.gmail.com
user : accboard
pwd : accgmail
เข้าไปดูก่อนก็ได้ครับ อาจจะได้รู้ว่า
ส่วนใหญ่แล้วเวลาคนอื่นเขาฝากไฟล์เข้ามา เข้าเขียน หัวข้อจดหมายกันอย่างไร ถึงจะค้นหาง่าย
เผื่ออยากเข้าไปค้นหาตัวอย่างอื่นๆ ก็เข้าได้ครับ
www.gmail.com
user : accboard
pwd : accgmail
เข้าไปดูก่อนก็ได้ครับ อาจจะได้รู้ว่า
ส่วนใหญ่แล้วเวลาคนอื่นเขาฝากไฟล์เข้ามา เข้าเขียน หัวข้อจดหมายกันอย่างไร ถึงจะค้นหาง่าย
9 @R06381
เขียน Code แล้วพอขึ้นหน้าใหม่ค่ามันกระโดดไปทีละ 1 record ไม่รู้ไปเอาค่าจากไหนมาบวกเพิ่มหาแล้วไม่เจอ
Time: 0.3707s