กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
324 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
2 @R04351
อาจารย์สุภาพเคยแนะนำวิธีสร้างฟิลด์ใหม่ให้เป็น Autonumber ซึ่งก็ไม่มีปัญหาสามารถใช้ได้ดีครับ เป็นอีกทางเลือกครับ
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "ALTER TABLE ชื่อตารางที่ต้องการเพิ่มฟีลด์ " _
& "ADD COLUMN ชื่อฟีลด์ใหม่ AUTOINCREMENT;"
dbs.Close
Set dbs = Nothing
Dim dbs As Database
Set dbs = CurrentDb
dbs.Execute "ALTER TABLE ชื่อตารางที่ต้องการเพิ่มฟีลด์ " _
& "ADD COLUMN ชื่อฟีลด์ใหม่ AUTOINCREMENT;"
dbs.Close
Set dbs = Nothing
3 @R04369
ลองทดสอบกับไฟล์ต้นฉบับของต่างประเทศ อีกที
โดยการรันคำสั่ง SQL โดยระบุเงื่อนไขการค้นหา
เข้าไปใน query
พบว่าผลการเรียงเลขลำดับของต่างประเทศ
เมื่อใส่เงื่อนไข ผลก็สับสน
เช่นกัน
......................
สนใจคำสั่งคุณประพันธ์
แต่ผมไม่มีความรู้มากนัก
ขอคำชี้แนะด้วยว่า คำสั่งดังกล่าว
เริ่มต้นจะให้เข้าไปที่ไหน ตรงไหนของ Access97 เพื่อใส่คำสั่งนี้
ขอช่วยเหลือให้รายละเอียดอธิบายด้วย ขอบคุณครับ
ลองทดสอบกับไฟล์ต้นฉบับของต่างประเทศ อีกที
โดยการรันคำสั่ง SQL โดยระบุเงื่อนไขการค้นหา
เข้าไปใน query
พบว่าผลการเรียงเลขลำดับของต่างประเทศ
เมื่อใส่เงื่อนไข ผลก็สับสน
เช่นกัน
......................
สนใจคำสั่งคุณประพันธ์
แต่ผมไม่มีความรู้มากนัก
ขอคำชี้แนะด้วยว่า คำสั่งดังกล่าว
เริ่มต้นจะให้เข้าไปที่ไหน ตรงไหนของ Access97 เพื่อใส่คำสั่งนี้
ขอช่วยเหลือให้รายละเอียดอธิบายด้วย ขอบคุณครับ
Time: 0.1195s
เช่น อาจมีฟีลด์ที่เป็นวันที่ที่เข้ารับการฝึกอบรม ก็ใช้ได้ครับ
SELECT (Select Count(*) From [tblMain] as Temp
Where [Temp].[AttendDate]<[tblMain].[AttendDate]+1) AS No, ...
โดยให้เรียงตามวันที่ที่เข้ารับการฝึกอบรมของแต่ละคน