Access97:-การปรับใช้คำสั่ง SQL รันลำดับที่อัตโนมัติในคิวรี่
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 260   3
URL.หัวข้อ / URL
Access97:-การปรับใช้คำสั่ง SQL รันลำดับที่อัตโนมัติในคิวรี่



Access97:-การปรับใช้คำสั่ง SQL รันลำดับที่อัตโนมัติในคิวรี่

ได้ search พบคำสั่ง SQL ตัวอย่าง

ที่ อจ.นำมาให้ดู เกี่ยวกับการคิวรี่ออกมาให้มีลำดับอัตโนมัติ

ก๊อปจากตัวอย่าง อจ. คือดังนี้

SELECT (Select Count(*) From [Orders] as Temp
Where [Temp].[OrderID] < [Orders].[OrderID]+1) AS No, Orders.OrderID, Orders.CustomerID
FROM Orders
ORDER BY Orders.OrderID;

.............................................

ซึ่งก็เวิร์คดีครับ คำสั่งนี้

...........................................

จึงได้นำตัวอย่างของ อจ. ไปปรับใช้จริง

.....มีปัญหาบางประการ คือ

มีสองตาราง tblMain / tblSubMain

ใน tblMain มี 2 ฟิลด์สำคัญคือ Code (primary key) กับ name

ใน tblSubMain มีฟิลด์ Code , ฟิลด์ DateSeminar , ฟิลด์ ItemSeminar

ไม่มี primary key เพราะทุกคนไป seminar กันบ่อย

สองตารางสัมพันธ์กันด้วยลากเชื่อม code กันเฉยๆ

เพื่อสะดวกการป้อนข้อมูลใน subform จะได้ขึ้น Code อัตโนมัติ

....................................

ปัญหาคือในกรณีนับซ้ำกัน เช่น นายสมชาย ไปสัมมนา hardware บ่อยๆ

พอคิวรี่ criteria ว่า hardware ตามคำสั่ง

การนับเลขลำดับที่ในตารางคิวรี่จะทับซ้อนกันไม่เรียง 1,2,3,.....

..............................

คำสั่ง SQL คือ

SELECT (Select Count(*) From [tblMain] as Temp
Where [Temp].[code]<[tblMain].[code]+1) AS No, tblMain.code, tblMain.name, tblSubmain.DateSeminar, tblSubmain.ItemSeminar
FROM tblMain INNER JOIN tblSubmain ON tblMain.code = tblSubmain.Code
WHERE (((tblSubmain.ItemSeminar)="hardware"))
ORDER BY tblMain.code;

......................................

ขอความกรุณา อจ. แก้ไข statement นี้ด้วย ขอบคุณครับ



3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04348
ถ้าไม่มีฟีลด์ไหนช่วยจัดลำดับให้ จะทำไม่ได้ครับ

เช่น อาจมีฟีลด์ที่เป็นวันที่ที่เข้ารับการฝึกอบรม ก็ใช้ได้ครับ

SELECT (Select Count(*) From [tblMain] as Temp
Where [Temp].[AttendDate]<[tblMain].[AttendDate]+1) AS No, ...

โดยให้เรียงตามวันที่ที่เข้ารับการฝึกอบรมของแต่ละคน
2 @R04351
อาจารย์สุภาพเคยแนะนำวิธีสร้างฟิลด์ใหม่ให้เป็น Autonumber ซึ่งก็ไม่มีปัญหาสามารถใช้ได้ดีครับ เป็นอีกทางเลือกครับ
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "ALTER TABLE ชื่อตารางที่ต้องการเพิ่มฟีลด์ " _
& "ADD COLUMN ชื่อฟีลด์ใหม่ AUTOINCREMENT;"
dbs.Close
Set dbs = Nothing


3 @R04369






ลองทดสอบกับไฟล์ต้นฉบับของต่างประเทศ อีกที

โดยการรันคำสั่ง SQL โดยระบุเงื่อนไขการค้นหา

เข้าไปใน query

พบว่าผลการเรียงเลขลำดับของต่างประเทศ

เมื่อใส่เงื่อนไข ผลก็สับสน

เช่นกัน

......................

สนใจคำสั่งคุณประพันธ์

แต่ผมไม่มีความรู้มากนัก

ขอคำชี้แนะด้วยว่า คำสั่งดังกล่าว

เริ่มต้นจะให้เข้าไปที่ไหน ตรงไหนของ Access97 เพื่อใส่คำสั่งนี้

ขอช่วยเหลือให้รายละเอียดอธิบายด้วย ขอบคุณครับ



@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0828s