-
11-23-2009, 08:20 AM #1
Junior 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:
- Help viết code dùm mình cái form nay voi
- xin hỏi cách tìm record giống nhau giữa hai table
- Ai giúp mình với nhỉ? Sao không ai giúp vậy :(
- Làm thế nào để lấy dữ liệu phát sinh cuối cùng trong Table!
- Convert font VNI sang UNI trong ACCESS!
- Cách tạo mã số và lọc các mặt hàng theo mã số ấy!
- gán giá trị vào textbox như thế nào
- lấy dử liệu từ file excel sang table của acess
- Cho mình hỏi Tạo msgbox xác nhận trước khi xoá bản ghi trên form
- Xây dựng CSDL in hóa đơn thanh toán tiền bắt đầu như thế nào?
-
11-23-2009, 12:31 PM #2
Junior 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 #3
Silver 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 #4
Silver 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 #5
Junior 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 #6
Junior 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 #7
Junior 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
Trong thế giới đồ chơi tình dục hiện đại, máy rung vùng kín Super Bullet đang trở thành cái tên được nhắc đến nhiều nhất. Với thiết kế nhỏ gọn nhưng mang lại khoái cảm bất thần, liệu sản phẩm này có...
Review máy rung vùng kín Super Bullet: Có đáng mua không?