-
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:
- [Hỏi] Xếp hạng theo điểm bằng Update Query
- Cho em hỏi lỗi này là do đâu ?
- Code khóa phím Shift
- Chuyển dữ liệu từ EXcel vào ACCESS
- Không cập nhật được khi tiến hành Append rồi Delete
- Lựa chọn và mặc định máy in trên access
- Giải pháp nào cho compact CSDL lớn !
- TIP :Cho Access thoát khỏi .... Access !
- Chọn 1 record trong listbox để insert vào textbox trong 1 form khác
- Làm sao để tắt chế độ Read Only khi mở file Access qua mạng Lan ?
-
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
Khu dự án cao cấp Moonlight Avenue được phát triển bởi Tập đoàn Hưng Thịnh phù hợp khách hàng đẳng cấp nhất tiện ích phù hợp. Moonlight Thủ Đức phù hợp khách hàng khu an ninh phong cách nghỉ dưỡng....
Moonlight Avenue Dự án chung cư không gian thoáng mát thoải mái nhất