กระทู้เก่าบอร์ด อ.Yeadram
        
           18,520   31		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        Run เล่มที่ เลขที่ ในใบเสร็จฯ      
    
      รบกวนอาจารย์ทั้งหลายอีกแล้วครับ
เวลาเราออกใบเสร็จรับเงิน มันจะรันเล่มที่ เลขที่เองอัตโนมัติ โดยเลขที่ถ้าถึง100
จะขึ้นเล่มใหม่ แล้วเลขที่จะขึ้น 1 ไปเรื่อยๆ ถ้าเราทำทีละใบ ผมทำให้รันอัตโนมัติได้ครับ แต่ตอนนี้ปัญหาคือ ต้องการทำทีเดียวทั้งหมด โดยบันทึกข้อมูลไปก่อน แต่ไม่ได้บันทึกตัวเลขเล่มที่ เลขที่ เข้าไป เวลาเปิด Report ก็จะสามารถเปิดดูตั้งแต่คนที่ 1 ถึง สุดท้ายได้
ปัญหาของผมคือ จะรันเล่มที่ เลขที่ยังงัยให้เลข ต่อจากของเก่า โดยเมื่อรันเลขถึงร้อย ก็จะขึ้นเล่มใหม่
ฝากอาจารย์ทั้งหลายช่วยหน่อยครับ อย่างน้อยวิธีคิดก่อนก็ยังดี เพราะคิดเท่าไหร่ก็ไม่ออก
    
  เวลาเราออกใบเสร็จรับเงิน มันจะรันเล่มที่ เลขที่เองอัตโนมัติ โดยเลขที่ถ้าถึง100
จะขึ้นเล่มใหม่ แล้วเลขที่จะขึ้น 1 ไปเรื่อยๆ ถ้าเราทำทีละใบ ผมทำให้รันอัตโนมัติได้ครับ แต่ตอนนี้ปัญหาคือ ต้องการทำทีเดียวทั้งหมด โดยบันทึกข้อมูลไปก่อน แต่ไม่ได้บันทึกตัวเลขเล่มที่ เลขที่ เข้าไป เวลาเปิด Report ก็จะสามารถเปิดดูตั้งแต่คนที่ 1 ถึง สุดท้ายได้
ปัญหาของผมคือ จะรันเล่มที่ เลขที่ยังงัยให้เลข ต่อจากของเก่า โดยเมื่อรันเลขถึงร้อย ก็จะขึ้นเล่มใหม่
ฝากอาจารย์ทั้งหลายช่วยหน่อยครับ อย่างน้อยวิธีคิดก่อนก็ยังดี เพราะคิดเท่าไหร่ก็ไม่ออก
				31 Reply in this Topic. Dispaly 2  pages and you are on page number 2 
				
        
    22 @R07330    
        
  
      SQL = "insert into Table2(IM, AccCode,Unit,BKno,RBno) select(ID_Member, AccCode, Unit, """ & NewBKNo & """, """ & NewRBNo & """) from Table1 where ID_Member = " & RS!ID_member
อาจารย์ครับผมว่าบรรทัดนี้ Syntax Err นะครับ มันเลยไม่มีข้อมูลใน Table2 เลย
    
  อาจารย์ครับผมว่าบรรทัดนี้ Syntax Err นะครับ มันเลยไม่มีข้อมูลใน Table2 เลย
        
    23 @R07331    
        
  
      - ใน Table1 ฟิลด์ ID_Member ใช้ชื่อว่าอะไร และมีข้อมูลเป็นประเภทอะไร (Text หรือ Numeric)
- ใน Table2 ฟิลด์ BKNo และ RBNo มีข้อมูลเป็นประเภทอะไร (Text หรือ Numeric)
- รันแล้วมี error อะไรแสดงออกมาหรือไม่
    
    
  - ใน Table2 ฟิลด์ BKNo และ RBNo มีข้อมูลเป็นประเภทอะไร (Text หรือ Numeric)
- รันแล้วมี error อะไรแสดงออกมาหรือไม่
        
    24 @R07332    
        
  
      ฟิลด์ตามรูปเลยครับ ตรงตามโคต ประเภท เป็น Text  ทุกฟิลด์
รันแล้ว ตามรูป Err ที่โพสครับ
    
  รันแล้ว ตามรูป Err ที่โพสครับ
        
    25 @R07333    
        
  
      - error ที่แสดงในภาพคำตอบ R07324 แก้ด้วยคำตอบ R07325 ครับ
- คุณไปแก้ให้ BKNo และ RBNo ทั้งใน Table1 และ Table2 ให้เป็นประเภท Integer เสีย แล้วแก้โค้ดเป็น
SQL = "insert into Table2(IM, AccCode,Unit,BKno,RBno) select(ID_Member, AccCode, Unit, " & NewBKNo & ", " & NewRBNo & ") from Table1 where ID_Member = """ & RS!ID_member & """ "
ถ้า ID_Member ไม่ใช่ชื่อนี้ ก็แก้ให้ถูกต้องด้วย
ถ้ามีอะไรผิดพลาดใน SQL มันควรจะแสดง error ออกมาครับ ไม่ใช่ทำงานผ่านไปได้เฉยๆ
ถ้าแก้แล้วยังทำงานไม่ได้ เอาโค้ดทั้งหมดมาแสดงให้เห็นอีกที
    
  - คุณไปแก้ให้ BKNo และ RBNo ทั้งใน Table1 และ Table2 ให้เป็นประเภท Integer เสีย แล้วแก้โค้ดเป็น
SQL = "insert into Table2(IM, AccCode,Unit,BKno,RBno) select(ID_Member, AccCode, Unit, " & NewBKNo & ", " & NewRBNo & ") from Table1 where ID_Member = """ & RS!ID_member & """ "
ถ้า ID_Member ไม่ใช่ชื่อนี้ ก็แก้ให้ถูกต้องด้วย
ถ้ามีอะไรผิดพลาดใน SQL มันควรจะแสดง error ออกมาครับ ไม่ใช่ทำงานผ่านไปได้เฉยๆ
ถ้าแก้แล้วยังทำงานไม่ได้ เอาโค้ดทั้งหมดมาแสดงให้เห็นอีกที
        
    26 @R07334    
        
  
      อาจารย์ครับยัง Eror เหมือนเดิม ผมฝากไฟล์ไว้ที่ AccBoard ครับ ชื่อ ฝากอาจารย์สันติสุขครับ    
    
  
        
    27 @R07335    
        
  
      ดูแล้ว
1) ไม่เห็นคุณแก้ตามที่ผมบอกใน R07325 เลย มันมี ExitRoutine กับ ErrRoutine นะครับ
2) คำสั่ง SQL ผิดตรงมีวงเล็บหลัง select ที่ถูกต้องเป็น
SQL = "insert into Table2(IM, AccCode,Unit,BKno,RBno) select ID_Member, AccCode, Unit, " & NewBKNo & ", " & NewRBNo & " from Table1 where ID_Member = """ & RS!ID_member & """ "
3) ให้แก้ฟิลด์ใน tblRunNo ให้เป็น Numeric ด้วยทั้ง 2 ฟิลด์
4) ฟิลด์ unit ทั้งใน table1 และ table2 ควรจะเป็นประเภท numeric, field size = decimal, scale = 2
    
  1) ไม่เห็นคุณแก้ตามที่ผมบอกใน R07325 เลย มันมี ExitRoutine กับ ErrRoutine นะครับ
2) คำสั่ง SQL ผิดตรงมีวงเล็บหลัง select ที่ถูกต้องเป็น
SQL = "insert into Table2(IM, AccCode,Unit,BKno,RBno) select ID_Member, AccCode, Unit, " & NewBKNo & ", " & NewRBNo & " from Table1 where ID_Member = """ & RS!ID_member & """ "
3) ให้แก้ฟิลด์ใน tblRunNo ให้เป็น Numeric ด้วยทั้ง 2 ฟิลด์
4) ฟิลด์ unit ทั้งใน table1 และ table2 ควรจะเป็นประเภท numeric, field size = decimal, scale = 2
        
    28 @R07336    
        
  
      ขอบคุณมากครับอาจารย์ สงสัยคงตาลาย Exit กับ Err มันคล้ายกันก็สงสัยอยู่ว่าทำไมมันติดที่เดิม เพราะมันไม่วิ่งไป Exit นี่เอง แล้วผมลองใช้ Text เหมือนเดิม มันก็สามารถ วิ่งจาก Table1 ไป Table2 ได้ แต่ผมจะเปลี่ยนตามที่อาจารย์แนะนำครับ
นอกเรื่องนิดนึงครับ โคตที่เขียนนี้เค้าเรียกว่าอะไรครับ อาจารย์มีหนังสือแนะนำให้ซื้อรึปล่าวครับ ผมหาหลายที่มันไม่มีสอนเขียนโคตครับ
    
  นอกเรื่องนิดนึงครับ โคตที่เขียนนี้เค้าเรียกว่าอะไรครับ อาจารย์มีหนังสือแนะนำให้ซื้อรึปล่าวครับ ผมหาหลายที่มันไม่มีสอนเขียนโคตครับ
        
    29 @R07337    
        
  
      - ค่าต่างๆที่เป็นค่าทางจำนวน,มูลค่า ที่สามารถนำไปคำนวนทางคณิตศาสตร์ได้ ควรเก็บเป็น Numeric ให้หมด ดังนั้น Unit, BKNo, RBNo ก็ควรเปลี่ยน   ส่วน ID_Member อันนี้แล้วแต่คุณแต่ถ้าเก็บเป็น Text อย่างนึงที่ต้องระวังไว้คือเวลาเรียงลำดับด้วยข้อมูล "1","2","10","100"  มันจะเรียง "1","10","100","2" นะครับ
- เป็นภาษา Visual Basic ที่ใช้เฉพาะกับโปรแกรมต่างๆในระบบ Micorosft Office ครับ มีชื่อเรียกเฉพาะว่า VBA (Visual Basic for Application) นั่นหมายถึงทุกโปรแกรมในชุด MS Office คุณสามารถโปรแกรมสั่งมันทำได้ทุกอย่างที่คุณใช้มือทำด้วยภาษา VBA นี้ครับ เช่นคุณเขียนหน้าจอใน Access สั่งให้เอาข้อมูลในฐานข้อมูลของ Access ไปออกใน Excel แล้วแสดงกราฟใน Excel แล้วเอายอดสรุปใน Excel ไปแสดงเป็นพรีเซนเตชั่นใน PowerPoint พร้อมแนบพรีเซนเตชั่นนี้ส่งไปให้ลูกค้าทุกรายด้วย email ผ่านทาง OutLook เป็นต้น
    
  - เป็นภาษา Visual Basic ที่ใช้เฉพาะกับโปรแกรมต่างๆในระบบ Micorosft Office ครับ มีชื่อเรียกเฉพาะว่า VBA (Visual Basic for Application) นั่นหมายถึงทุกโปรแกรมในชุด MS Office คุณสามารถโปรแกรมสั่งมันทำได้ทุกอย่างที่คุณใช้มือทำด้วยภาษา VBA นี้ครับ เช่นคุณเขียนหน้าจอใน Access สั่งให้เอาข้อมูลในฐานข้อมูลของ Access ไปออกใน Excel แล้วแสดงกราฟใน Excel แล้วเอายอดสรุปใน Excel ไปแสดงเป็นพรีเซนเตชั่นใน PowerPoint พร้อมแนบพรีเซนเตชั่นนี้ส่งไปให้ลูกค้าทุกรายด้วย email ผ่านทาง OutLook เป็นต้น
        
    30 @R07338    
        
  
      ผมลองทดสอบรันดูจำนวน  2 พันกว่าเรคคอร์ด กับ 6 ร้อยกว่าเรคคอร์ด
มันช้าพอๆ กันครับ ไม่รู้เพราะระบบ Transaction Control หรือไม่
แล้วระบบนี้ ถ้าผมรัน เลขที่ เล่มที่ ไปถึงเลขที่ นึง เกิดไฟฟ้าขัดข้องการรันจะเริ่มใหม่หรือ ต่อเนื่องครับ
    
  มันช้าพอๆ กันครับ ไม่รู้เพราะระบบ Transaction Control หรือไม่
แล้วระบบนี้ ถ้าผมรัน เลขที่ เล่มที่ ไปถึงเลขที่ นึง เกิดไฟฟ้าขัดข้องการรันจะเริ่มใหม่หรือ ต่อเนื่องครับ
        
    31 @R07339    
        
      
	  
      
    
      ถ้าไฟฟ้าดับ ไม่ว่าจะใช้ Transaction Control หรือไม่ ก็ไม่มีอะไรการันตีครับว่าข้อมูลนั้นๆจะถูกต้องหรือไม่  อย่าพูดถึงระดับเรคอร์ดเลย แม้แต่ระดับฐานข้อมูล ก็ยังไม่แน่ใจเลยว่าจะเกิดปัญหาหรือไม่  คุณจึงควรมี UPS ไว้สำหรับใช้ยามฉุกเฉิน
อย่างนึงที่ต้องไม่ลืมคือข้อมูลใน Table1 นั้นยังคงอยู่เสมอแม้ผ่านการรันเลขที่ไปแล้ว ถ้าคุณคลิกปุ่มเพื่อรัน 2 ครั้ง มันก็จะสร้างข้อมูลเบิ้ลซ้ำลงใน Table2 เพียงแต่ได้เลขที่/เล่มที่ใหม่ครับ คุณก็ต้องหาวิธีจัดการกับข้อมูลใน Table1 เพื่อทำให้รู้ว่า รายการนั้นๆได้สร้างเลขที่/เล่มที่ไปแล้ว
    
  อย่างนึงที่ต้องไม่ลืมคือข้อมูลใน Table1 นั้นยังคงอยู่เสมอแม้ผ่านการรันเลขที่ไปแล้ว ถ้าคุณคลิกปุ่มเพื่อรัน 2 ครั้ง มันก็จะสร้างข้อมูลเบิ้ลซ้ำลงใน Table2 เพียงแต่ได้เลขที่/เล่มที่ใหม่ครับ คุณก็ต้องหาวิธีจัดการกับข้อมูลใน Table1 เพื่อทำให้รู้ว่า รายการนั้นๆได้สร้างเลขที่/เล่มที่ไปแล้ว
      Time: 0.3108s
    
      
		
' ถ้ามี error เกิดขึ้นในโปรแกรมและอยู่ระหว่าง Transaction Control เราต้อง Rollback Transaction ไม่เช่นนั้นจะเกิดปัญหาในภายภาคหน้าได้
If InTransaction then DBEngine.Rollback
exit sub
ErrRoutine:
Msgbox Err.Code & " : " & Err.Description
Resume ExitRoutine
End Sub