-
11-23-2009, 08:20 AM #1Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Không chạy được query trong ACCESS!
Các bác PRO xem giúp em đoạn code này, sao em chạy không được:
Mã:Sub DSKH() Dim DB As Database Dim QR1 As QueryDef Dim tbl2 As Recordset Dim sql As String Set DB = CurrentDb Set QR1 = DB.CreateQueryDef QR1.sql = " select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso;" DB.Execute "select qr1.maso, tblKH.ten, qr1.sotien, qry.slhd into tbl2 from QRA left join tblKH on qr1.maso=tblKH.maso;" Set DB = Nothing End Sub
View more random threads:
- Thiết lập mối quan hệ dữ liệu kiểu gì đây nhỉ?
- TIP: Kiểm tra dung lượng file Access .
- Khái niệm đầu tiên về lập trình trên Access
- tẠo màn hình chờ trong Access 2010
- Cho em hỏi lỗi này là do đâu ?
- Xin giúp đỡ về việc kết hợp giữa hai bảng
- Thay đổi kích cỡ khi ở chế độ kích cỡ màn hình khác nhau?
- Về các bài hướng dẫn tạo một phần mềm quản lý bán hàng bằng Access
- [Hỏi] Biểu tượng hình tam giác màu vàng có dấu chấm thang trong macro !!!
- Sự kiện Timer trong Access
-
11-23-2009, 12:31 PM #2Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Không chạy được query trong ACCESS!
Gửi bởi haquocquan
-
11-23-2009, 02:46 PM #3Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 16
Ðề: Không chạy được query trong ACCESS!
Gửi bởi LoveBlue
Set QR1 = currentdb.CreateQueryDef
QR1.sql = " select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso;"
-
11-24-2009, 08:35 AM #4Silver member
- Ngày tham gia
- Nov 2015
- Bài viết
- 2
Ðề: Không chạy được query trong ACCESS!
Gửi bởi haquocquan
Và nó chỉ được nhìn thấy ở trong đoạn sub ấy, tức là chỉ thấy được đối với lúc đang chạy nó.
Nó không tạo ra query lưu trong data.
Mà ở câu sau đó:
DB.Execute "select ... from QR1 left join tblKH on ..."
Thì máy sẽ gửi câu sql đó cho ODBC thực hiện và ODBC không thấy table hay query nào tên QR1 cả.
Hoặc là bạn phải lưu sẵn 1 query QR1 trên data.
Hoặc là bạn gửi trực tiếp câu lệnh:
Ví dụ:
....
Dim mysql as string
mysql = " [select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso]."
mysql = "select qr1.maso, tblKH.ten, qr1.sotien, qry.slhd into tbl2 from " _
& mysql & " As QR1 left join tblKH on qr1.maso=tblKH.maso;"
DB.Execute mysql
....
-
11-24-2009, 03:24 PM #5Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Không chạy được query trong ACCESS!
Gửi bởi muontennguoi
-
11-24-2009, 03:57 PM #6Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Ðề: Không chạy được query trong ACCESS!
Gửi bởi muontennguoi
Khi chúng ta khai báo một biến kiểu QueryDef, nó có thể được gán với một query có sẵn trong database hoặc có thể được tạo mới, ...
1. Gán với một query sẵn có:
Dim qr As DAO.QueryDef
Set qr = CurrentDB.QueryDefs("queryname")
2. Tạo mới một query:
Dim qr As DAO.QueryDef
CurrentDB.QueryDefs.Add("queryname", "sql text")
Do vậy, code của haquocquan thiếu một phần quan trọng là khi CreateQueryDef không cho nó một cái tên. Ngoài ra tbl2 của bạn không cần thiết trong đoạn này. Đoạn code đó có thể chỉnh lại một chút như sau:
Mã:Sub DSKH() Dim DB As Database Dim QR1 As QueryDef ' Dim tbl2 As Recordset Dim sql As String Set DB = CurrentDb Dim daco As Boolean For Each qr1 In CurrentDb.QueryDefs If qr1.Name = "qrA" Then daco = True Exit For End If Next If daco Then Set qr1 = CurrentDb.QueryDefs("qrA") qr1.SQL = "select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso" Else Set qr1 = CurrentDb.Createquerydefs("qrA", "select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso") End If DB.Execute "select qr1.maso, tblKH.ten, qr1.sotien, qry.slhd into tbl2 from QRA left join tblKH on qr1.maso=tblKH.maso" Set DB = Nothing End Sub
-
11-24-2009, 06:13 PM #7Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 1
Ðề: Không chạy được query trong ACCESS!
Ý em là: em không tạo query trong MDB, em muốn nó là một câu lệnh nhưng sẽ lấy được dữ liệu từ đó như là lấy dữ liệu từ một query.
Cám ơn các bác PRO nhiều.
Tôi tạo lại, các bác PRO xem giúp nhé:
Mã:Sub DSKH() Dim DB As Database Dim sql As String Set DB = CurrentDb SQL = "([select count(sohd) as slhd, maso, sum(table1.sotien) as sotien from table1 group by maso]. as qr1)" DB.Execute "select qr1.maso, tblKH.ten, qr1.sotien, qr1.slhd into tbl2 from "& SQL &" left join tblKH on qr1.maso=tblKH.maso;" Set DB = Nothing End Sub
Dr. Care cam kết mang đến cho bạn giải pháp trồng răng Implant với chất lượng cao nhất, giúp bạn có lại nụ cười tự tin. Mất răng ở người trung niên tại Việt Nam không chỉ là vấn đề cá nhân mà còn là...
Trồng Răng không Đau: Sự Linh Hoạt và Tiện Lợi tại Dr. Care Implant Clinic