Hale, Jim
Jim.Hale at FleetPride.com
Fri May 12 08:58:38 CDT 2006
I am really curious if the SQL solution I sent you is faster. Did you have
an opportunity to try it? I always tend to use SQL solutions if they are
available over code on the theory they are faster. This may just be
programmer's lore however, so I am curious about this instance.
Jim Hale
-----Original Message-----
From: Kaup, Chester [mailto:Chester_Kaup at kindermorgan.com]
Sent: Thursday, May 11, 2006 4:14 PM
To: Access Developers discussion and problem solving
Subject: Re: [AccessD] Top values query problem
Against an SQL server table with the wells and the date sorted ascending
461,569 records run time was 23.6094 seconds. Against a native Access
table with the wells sorted ascending and date sorted descending run
time was 11.7656 seconds. The only problem I found was dates did not
sort ascending. I see any reason why. Thanks for the code.
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of A.D.TEJPAL
Sent: Thursday, May 11, 2006 12:52 PM
To: Access Developers discussion and problem solving
Cc: ADT
Subject: Re: [AccessD] Top values query problem
Chester,
Sample subroutine given below should get you exceptionally fast
results. T_Result is the target table to which top 6 results for each
value of PT_Well get appended.
Could you please try it out on your large size data set and confirm
?
A.D.Tejpal
---------------
Code in Click event of command button on Main form
(SF_ResultSub is the name of control on main form
acting as container for the subform fed by table T_Result)
=============================================
Private Sub CmdResult_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim Qst As String, PtWell As String
Qst = "SELECT DISTINCT PT_Well " & _
"FROM dbo_Prod_Tests ORDER BY PT_Well;"
Set db = CurrentDb
Set rst = db.OpenRecordset(Qst)
' Clear table T_Result
Qst = "Delete * From T_Result;"
db.Execute Qst, dbFailOnError
Do While Not rst.EOF
' Append Top 6 records pertaining to current value
' of PT_Wells, from main table into T_Result
PtWell = rst.Fields("PT_Well")
Qst = "INSERT INTO T_Result " & _
"(PT_Well, PT_Date, PT_Status) " & _
"SELECT Q1.PT_Well, Q1.PT_Date, " & _
"Q1.PT_Status FROM [SELECT TOP 6 " & _
"PT_Well, PT_Date, PT_Status " & _
"FROM dbo_Prod_Tests " & _
"WHERE PT_Well = '" & PtWell & "' " & _
"ORDER BY PT_Well, PT_Date DESC]. AS Q1;"
db.Execute Qst, dbFailOnError
rst.MoveNext
Loop
Me.SF_ResultSub.Requery
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
=============================================
***********************************************************************
The information transmitted is intended solely for the individual or
entity to which it is addressed and may contain confidential and/or
privileged material. Any review, retransmission, dissemination or
other use of or taking action in reliance upon this information by
persons or entities other than the intended recipient is prohibited.
If you have received this email in error please contact the sender and
delete the material from any computer. As a recipient of this email,
you are responsible for screening its contents and the contents of any
attachments for the presence of viruses. No liability is accepted for
any damages caused by any virus transmitted by this email.