Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 7 của 7
  1. #1
    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

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Không chạy được query trong ACCESS!




    Trích dẫn Gửi bởi haquocquan
    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
    Mấy đoạn code này mà khong có chương trình demo thì chả khác nào hành xác người đọc. :ngacnhien:

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    16
    Ðề: Không chạy được query trong ACCESS!




    Trích dẫn Gửi bởi LoveBlue
    Mấy đoạn code này mà khong có chương trình demo thì chả khác nào hành xác người đọc. :ngacnhien:
    Hai dòng lệnh này của em có đúng không các bác ơi:
    Set QR1 = currentdb.CreateQueryDef
    QR1.sql = " select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso;"

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    2
    Ðề: Không chạy được query trong ACCESS!




    Trích dẫn Gửi bởi haquocquan
    Các bác PRO xem giúp em đoạn code này, sao em chạy không được:


    Mã nguồn PHP:
    [COLOR=#000000]
    Sub DSKH[/COLOR][COLOR=#007700]() [/COLOR][COLOR=#0000BB]Dim DB [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Database Dim QR1 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]QueryDef Dim tbl2 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Recordset Dim sql [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String Set DB [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]CurrentDb Set QR1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]DB[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]CreateQueryDef QR1[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]sql [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]" select count(sohd) as slhd, maso, sum(sotien) as sotien from table1 group by maso;" [/COLOR][COLOR=#0000BB]DB[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Execute [/COLOR][COLOR=#DD0000]"select qr1.maso, tblKH.ten, qr1.sotien, qry.slhd into tbl2 from QRA left join tblKH on qr1.maso=tblKH.maso;" [/COLOR][COLOR=#0000BB]Set DB [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]NothingEnd Sub[/COLOR] 
    bạn khai báo 1 cái queryDef thì nó cũng chỉ là 1 cái recordset mà thôi.
    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
    ....

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Không chạy được query trong ACCESS!




    Trích dẫn Gửi bởi muontennguoi
    bạn khai báo 1 cái queryDef thì nó cũng chỉ là 1 cái recordset mà thôi.
    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:

    ....
    Hihi! Có bấy nhiêu đó mà em chả biết giải thích thế nào cho cậu ấy hiểu. Cậu ấy vẫn muốn tạo 1 query mà nó không hiện trong khung Query trong Access. ( Sao giống có 1 thằng con mà nó không tồn tại thế không biết! :-( )

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Không chạy được query trong ACCESS!




    Trích dẫn Gửi bởi muontennguoi
    bạn khai báo 1 cái queryDef thì nó cũng chỉ là 1 cái recordset mà thôi.
    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
    ....
    Nói thêm một chút, QueryDef là một object của collection QueryDefs, nó đại diện cho một query trong tập các query có trong database.

    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  

  7. #7
    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

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •