กระทู้เก่าบอร์ด อ.Yeadram
2,441 6
URL.หัวข้อ /
URL
สร้าง recordset จาก recordset อีกตัว
รบกวนผู้รู้หน่อยค่ะ เราสารมารถสร้าง Recordset เก็บ crosstab query จาก recordset อีกตัวหนึ่งได้ไหมคะ ?
6 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R12847
ขอบคุณคุณสันติสุขมากค่ะ
คือที่จะทำเป็นประมาณนี้อ่าค่ะ
rs1 เป็น Recordset ตัวที่หนึ่ง
Set rs1 = dbs.OpenRecordset("SELECT tblZONE.ZONE_NAME, tblHOLDER.ASSET_CODE, tblASSET.ASSET_TYPE_CODE, tblHOLDER.HOLDER_EXPIRE_DATE FROM (((tblZONE INNER JOIN tblDEPARTMENT ON tblZONE.ZONE_ID = tblDEPARTMENT.ZONE_ID) INNER JOIN tblEMPLOYEE ON tblDEPARTMENT.DEPT_CODE = tblEMPLOYEE.DEPT_CODE) INNER JOIN tblHOLDER ON tblEMPLOYEE.EMP_ID = tblHOLDER.EMP_ID) INNER JOIN tblASSET ON tblHOLDER.ASSET_CODE = tblASSET.ASSET_CODE")
คือที่จะทำเป็นประมาณนี้อ่าค่ะ
rs1 เป็น Recordset ตัวที่หนึ่ง
Set rs1 = dbs.OpenRecordset("SELECT tblZONE.ZONE_NAME, tblHOLDER.ASSET_CODE, tblASSET.ASSET_TYPE_CODE, tblHOLDER.HOLDER_EXPIRE_DATE FROM (((tblZONE INNER JOIN tblDEPARTMENT ON tblZONE.ZONE_ID = tblDEPARTMENT.ZONE_ID) INNER JOIN tblEMPLOYEE ON tblDEPARTMENT.DEPT_CODE = tblEMPLOYEE.DEPT_CODE) INNER JOIN tblHOLDER ON tblEMPLOYEE.EMP_ID = tblHOLDER.EMP_ID) INNER JOIN tblASSET ON tblHOLDER.ASSET_CODE = tblASSET.ASSET_CODE")
3 @R12848
ถ้าเป็น vba คุณจะสร้าง rs2 จาก rs1 ไม่ได้ ที่พอทำได้มี 2 วิธีคือ
1. นำ SQL ของ rs1 ไปสร้างเป็น Query object Q1 เสียก่อน แล้ว rs ก็อ้างจาก Q1 อีกที
dim db as dao.database
dim rs as dao.recordset
set db = currentdb
set rs = db.openrecordset("transform ... select .... from [Q1] as Q where ... group by ... pivot ...")
2. ไม่สร้าง Query object แต่นำ SQL นั้นไปเป็นส่วนหนึ่งของแหล่งข้อมูลไปเลย
dim db as dao.database
dim rs as dao.recordset
dim sql as string
sql = "SELECT tblZONE.ZONE_NAME..."
set db = currentdb
set rs = db.openrecordset("transform ... select .... from (" & sql & ") as Q where ... group by ... pivot ...")
1. นำ SQL ของ rs1 ไปสร้างเป็น Query object Q1 เสียก่อน แล้ว rs ก็อ้างจาก Q1 อีกที
dim db as dao.database
dim rs as dao.recordset
set db = currentdb
set rs = db.openrecordset("transform ... select .... from [Q1] as Q where ... group by ... pivot ...")
2. ไม่สร้าง Query object แต่นำ SQL นั้นไปเป็นส่วนหนึ่งของแหล่งข้อมูลไปเลย
dim db as dao.database
dim rs as dao.recordset
dim sql as string
sql = "SELECT tblZONE.ZONE_NAME..."
set db = currentdb
set rs = db.openrecordset("transform ... select .... from (" & sql & ") as Q where ... group by ... pivot ...")
4 @R12855
เข้าใจแล้ว ขอบคุณมากค่ะ จะโพสต์ต่อแต่โพสต์ไม่ติด T_T
ถ้าอย่างนั้น หากจะสร้าง Query โดยใช้โค้ด VBA จะเขียนโค้ดอย่างไรคะ?
ถ้าอย่างนั้น หากจะสร้าง Query โดยใช้โค้ด VBA จะเขียนโค้ดอย่างไรคะ?
5 @R12857
dim db as dao.database
dim qd as dao.querydef
dim sql as string
sql = "SELECT tblZONE.ZONE_NAME..." set db = currentdb
set qd = db.createquerydef("ชื่อคิวรี่",sql)
แต่การสร้างด้วยวิธีนี้ ถ้าชื่อคิวรี่มีอยู่แล้ว จะเกิด runtime error นะครับ สร้างครั้งเดียวพอครับ หรือไม่ คุณใช้เสร็จก็ต้องลบออกครับ ด้วยคำสั่ง
db.querydefs.delete qd.name
dim qd as dao.querydef
dim sql as string
sql = "SELECT tblZONE.ZONE_NAME..." set db = currentdb
set qd = db.createquerydef("ชื่อคิวรี่",sql)
แต่การสร้างด้วยวิธีนี้ ถ้าชื่อคิวรี่มีอยู่แล้ว จะเกิด runtime error นะครับ สร้างครั้งเดียวพอครับ หรือไม่ คุณใช้เสร็จก็ต้องลบออกครับ ด้วยคำสั่ง
db.querydefs.delete qd.name
6 @R12859
ขอบคุณมากๆๆๆๆๆๆๆค่ะ ตอนนี้ทำได้อย่างที่ต้องการแล้วค่ะ
Time: 0.2656s
ถ้าเป็นการสร้างใน Query Design View ก็เพียงแต่เราเลือกคิวรี่ที่ได้สร้างไว้ก่อนหน้านี้แล้วเอามาเป็นแหล่งข้อมูล เหมือนการเลือกเทเบิลเลย เพียงแต่ตอนเลือกมันจะอยู่อีกแทปเท่านั้น