กระทู้เก่าบอร์ด อ.Yeadram
1,223 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.3615s
จำได้ว่า เคยทำเป็นตัวอย่างให้ใครสักคนไปแล้ว
หรือถ้าหาไม่เจอ ลองไปค้นๆ ดูใน เมล์ของเว็บบอร์ดก็ได้ครับ น่าจะเคยส่งไฟล์ตัวอย่างซื่งมีการเขียนฟังก์ชั่นไว้ในนั้นแล้ว