สร้าง recordset จาก recordset อีกตัว
กระทู้เก่าบอร์ด อ.Yeadram

 2,394   6
URL.หัวข้อ / URL
สร้าง recordset จาก recordset อีกตัว

รบกวนผู้รู้หน่อยค่ะ เราสารมารถสร้าง Recordset เก็บ crosstab query จาก recordset อีกตัวหนึ่งได้ไหมคะ ?


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

1 @R12833
ไม่ค่อยแน่ใจคำถามนะครับ

ถ้าเป็นการสร้างใน Query Design View ก็เพียงแต่เราเลือกคิวรี่ที่ได้สร้างไว้ก่อนหน้านี้แล้วเอามาเป็นแหล่งข้อมูล เหมือนการเลือกเทเบิลเลย เพียงแต่ตอนเลือกมันจะอยู่อีกแทปเท่านั้น
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")

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 ...")
4 @R12855
เข้าใจแล้ว ขอบคุณมากค่ะ จะโพสต์ต่อแต่โพสต์ไม่ติด T_T

ถ้าอย่างนั้น หากจะสร้าง 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
6 @R12859
ขอบคุณมากๆๆๆๆๆๆๆค่ะ ตอนนี้ทำได้อย่างที่ต้องการแล้วค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2481s