-
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:
- Xin tài liệu VBA, có video thì càng tốt!
- cần giúp đỡ về bài này
- Tính tổng tiền kiểu gì bây giờ?
- Cách tính tỷ lệ giảm trừ % trong 1 danh sách có nhiều người
- Tách chữ trong một dòng thành hai dòng?
- Liên kết hai Combo boxes với Subform
- Quy định dấu "." và "," trong textbox access
- Gán giá trị trong table vào biến trong ACCESS!
- Cho mình hỏi một số hàm Visual Basic dùng trong Access:
- A/c giúp e hàm Do while với.
-
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
Tem ngậm Vinix là sản phẩm thuộc nhóm thực phẩm hỗ trợ sinh lý có tác dụng tăng cường nhu cầu, kích thích dương vật cương cứng ngay tức khắc. Từ khi ra đời, sản phẩm này đã được xem là giải pháp hàng...
Tem Vinix tăng cường "chuyện ấy" cho bạn trai đến từ xứ kim chi