กระทู้เก่าบอร์ด อ.Yeadram
        
           1,380   3		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        แจ้งการบริการครั้งต่อไปเพิ่มครั้งละ 1(2ตัวอักษร)      
    
      เรียนท่านอาจารย์ทุกท่าน
ฟิลด์เดิมขนาด 2 ตัวอักษร ชื่อฟิลด์ RegNo(ครั้งบริการครั้งเก่า)
ถ้ามีฟิลดิ์ ครั้งบริการขนาด 2 ตัวอักษร ชื่อฟิลด์ RegNoNew อยู่ในตารางเดียวกัน
โดยลักษณะข้อมูลมีการเพิ่มครั้งล่ะ 1 ดังนี้(RegNoNew)
เริ่มจาก 01 ถึง 99 จากนั้น A1 ถึง A9 จนถึง Z1 ถึง Z9
จากนั้นก็Za จนถึง ZZ
สมมติว่า regno = 11 regnonewให้เท่ากับ 12
= b1 b2
=za zb
ขอบคุณทุกท่านที่แสดงความคิดเห็น
    
  ฟิลด์เดิมขนาด 2 ตัวอักษร ชื่อฟิลด์ RegNo(ครั้งบริการครั้งเก่า)
ถ้ามีฟิลดิ์ ครั้งบริการขนาด 2 ตัวอักษร ชื่อฟิลด์ RegNoNew อยู่ในตารางเดียวกัน
โดยลักษณะข้อมูลมีการเพิ่มครั้งล่ะ 1 ดังนี้(RegNoNew)
เริ่มจาก 01 ถึง 99 จากนั้น A1 ถึง A9 จนถึง Z1 ถึง Z9
จากนั้นก็Za จนถึง ZZ
สมมติว่า regno = 11 regnonewให้เท่ากับ 12
= b1 b2
=za zb
ขอบคุณทุกท่านที่แสดงความคิดเห็น
				3 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R10869    
        
  
      ผมว่าปัญหาข้อนี้ไม่ได้อยู่ที่การเขียนโค้ด แต่เป็นที่การออกแบบนะครับ ถ้าจะให้ดี ควรออกแบบใหม่นะครับ มีเหตุผลอะไรในการออกแบบในลักษณะนี้ครับพอจะอธิบายได้ไหมครับ
ถ้าจะทำให้ได้แบบนี้จริงๆ ให้ง่ายควรเขียนโค้ด(ง่ายกว่าเขียนคิวรี่) โดยเขียนฟังก์ชั่น convert ค่าปัจจุบันจากตัวอักษรเป็นตัวเลขว่ามีค่าเท่าไร เช่น A0 = 100, B0 = 110, ZA = ?, แล้วบวก 1 จากนั้นจึงผ่านค่าเข้าอีกฟันก์ชั่นหนึ่ง ซึ่งทำหน้าที่ convert ค่าจากตัวเลขกลับเป็น ตัวอักษร เช่น 100 = A0 - โดยโลจิกจากโจยท์นี้ ต้องแบ่งเงื่อนไขในการตรวจสอบค่าเป็น 3 ส่วน คือ 1) ช่วง 00 - 99, 2) ช่วง A0 - Z9, 3) ช่วง ZA - ZZ
หรืออีกวิธีหนึ่ง แบบง่ายนะครับ ไม่ต้องโค้ด ให้คุณสร้างตารางเทียบค่าขึ้นมาตามนี้
Table: QueValue
Column: Que (text(2)), QueValue (integer)
Data:
00, 0
01, 1
....
A0, 100
A1, 101
...
แล้วใช้ query หรือ function DLookup เทียบค่าเอาได้เลยครับ
    
  ถ้าจะทำให้ได้แบบนี้จริงๆ ให้ง่ายควรเขียนโค้ด(ง่ายกว่าเขียนคิวรี่) โดยเขียนฟังก์ชั่น convert ค่าปัจจุบันจากตัวอักษรเป็นตัวเลขว่ามีค่าเท่าไร เช่น A0 = 100, B0 = 110, ZA = ?, แล้วบวก 1 จากนั้นจึงผ่านค่าเข้าอีกฟันก์ชั่นหนึ่ง ซึ่งทำหน้าที่ convert ค่าจากตัวเลขกลับเป็น ตัวอักษร เช่น 100 = A0 - โดยโลจิกจากโจยท์นี้ ต้องแบ่งเงื่อนไขในการตรวจสอบค่าเป็น 3 ส่วน คือ 1) ช่วง 00 - 99, 2) ช่วง A0 - Z9, 3) ช่วง ZA - ZZ
หรืออีกวิธีหนึ่ง แบบง่ายนะครับ ไม่ต้องโค้ด ให้คุณสร้างตารางเทียบค่าขึ้นมาตามนี้
Table: QueValue
Column: Que (text(2)), QueValue (integer)
Data:
00, 0
01, 1
....
A0, 100
A1, 101
...
แล้วใช้ query หรือ function DLookup เทียบค่าเอาได้เลยครับ
        
    3 @R10870    
        
    
      ขอบคุณทุกคำตอบครับ
เป็นระบบที่set ไว้แล้ว ดังนั้นจะออกแบบใหม่คงไม่ได้ครับ
(ถ้าออกแบบใหม่ได้จัดการไปแล้ว dmax+1)
database เป็น sql server และ app. เป็น เดลไฟล์
แต่ผมต้องการเขียนใหม่บางรายการเพื่อตอบสนองลูกค้า
เลยเขียน รัน sql ผ่าน access (ทำแบบรีบ เร็ว ปัญหาอื่นค่อยว่ากันอีกที)
จะลองค้นดู ผลเป็นอย่างไรหรือติดปัญหาอย่างไรจะแจ้งให้ทราบครับ
    
  เป็นระบบที่set ไว้แล้ว ดังนั้นจะออกแบบใหม่คงไม่ได้ครับ
(ถ้าออกแบบใหม่ได้จัดการไปแล้ว dmax+1)
database เป็น sql server และ app. เป็น เดลไฟล์
แต่ผมต้องการเขียนใหม่บางรายการเพื่อตอบสนองลูกค้า
เลยเขียน รัน sql ผ่าน access (ทำแบบรีบ เร็ว ปัญหาอื่นค่อยว่ากันอีกที)
จะลองค้นดู ผลเป็นอย่างไรหรือติดปัญหาอย่างไรจะแจ้งให้ทราบครับ
      Time: 0.2932s
    
      
		
จำได้ว่า เคยทำเป็นตัวอย่างให้ใครสักคนไปแล้ว
หรือถ้าหาไม่เจอ ลองไปค้นๆ ดูใน เมล์ของเว็บบอร์ดก็ได้ครับ น่าจะเคยส่งไฟล์ตัวอย่างซื่งมีการเขียนฟังก์ชั่นไว้ในนั้นแล้ว