Solved

Recors no randomising on web page (With Access db)

Posted on 2007-04-09
8
166 Views
Last Modified: 2010-03-20
Hi Experts.

I have an Access database, and a website (dev only at this time) and I'm getting a parculiar problem and wondered if anyone else has come across it.

I have a query that hits the database and should return the records in a randomised fashion. If I run the query from the database it works, but the records always come back in the same order from the website. If I write the sql to the page and run it in Access the records do ranomise so ithe SQL generated from the page is working. I have placed every bit of 'do not cache' code I can find in the page, and the connection is set to nothing and closed every time.

I have tried different cursors all to no avail.

Can anyone offer and help.

Andy
0
Comment
Question by:Andy Green
  • 4
  • 4
8 Comments
 
LVL 11

Expert Comment

by:JohnModig
ID: 18875147
Hi Andy.
So if I understand you correctly, your database query works, right? So why not just simply run the query from your website?

Assuming you are using ASP, the code would be something like this:
--------------------------
'name of the database query  
sql = "MyQuery"
'connectionstring
conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\MyWebsite\MyDatabase.mdb;"
'create a recordset
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql,conn

'...do whatever you want with the data

'close the recordset
rs.close
set rs=nothing
--------------------------
Regards,
John
0
 
LVL 3

Author Comment

by:Andy Green
ID: 18877384
Hi John

This is exactly what I'm doing, the sql runs and returns randomised records, and each time I rerun the query I get a differtent order, but when run from the web page they always return in the same order no matter what I do (I've even appended the data and time to the url so the can be no caching and still I get the same order.

I'm using ASP (Classic) and just looping trhough the records and displaying them.
Strange eh!

ANdy
0
 
LVL 11

Expert Comment

by:JohnModig
ID: 18878504
Very strange indeed. How do you call the query in your ASP pages? May I see some of your code?
0
 
LVL 3

Author Comment

by:Andy Green
ID: 18878654
Hi John

Here is the code


<!--#include file="../../Connections/adovbs.inc" -->
<!--#include file="../../Connections/DataConn.asp"-->

<%            

'Anti cache
response.expires = 0
response.ExpiresAbsolute = Now() -1
response.addheader "pragma", "no-cache"
response.addheader "cache-control","private"
response.CacheControl = "no-cache"


intCountyID = request.querystring("County")
intServiceID = request.querystring("Service")
            
            'Local Recordset
            sql = "SELECT tblCompanies.CompanyID, tblServiceType.CategoryID, tblCompanies.CompanyName, tblCompanies.ContactName, tblCompanies.Address1, tblCompanies.Address2, tblCompanies.Town, tblCompanies.PostCode, tblCompanies.Coverage, tblCompanies.Email, tblCompanies.Website, tblCompanies.Telephone, tblCompanies.JoiningDate, tblCompanies.PromoText, tblCompanies.Imagepath, tblCompanies.Notes, tblCounty.CountyName, tblServiceType.Servicetype, tbllevel.LevelID, tbllevel.LevelName, tblCompanies.RankingSeed "
            sql = sql & "FROM tblServiceType INNER JOIN (tblCounty INNER JOIN (((tbllevel INNER JOIN tblCompanies ON tbllevel.LevelID = tblCompanies.LevelID) INNER JOIN tblCountyXref ON tblCompanies.CompanyID = tblCountyXref.CompanyID) INNER JOIN tblServiceXRef ON tblCompanies.CompanyID = tblServiceXRef.CompanyID) ON tblCounty.CountyID = tblCountyXref.CountyID) ON tblServiceType.ServicetypeID = tblServiceXRef.ServiceTypeID "
            sql = sql & "WHERE (((tblCompanies.Live)=True) AND ((tblCounty.CountyID)=" & intCountyID & ") AND ((tblServiceType.ServicetypeID)= " & intServiceID & ")) "
            sql = sql & "ORDER BY  Rnd([tblCompanies.CompanyID]); "            
            
            response.write sql
            set rstLocalServices = server.createobject("adodb.recordset")
               rstLocalServices.open sql, WD_Conn,adopenKeyset


this is my connection

      set WD_Conn= Server.CreateObject("ADODB.Connection")
      DSNLessConn="DRIVER={Microsoft Access Driver (*.mdb)}; "
      'DSNLessConn=DSNLessConn & "DBQ= c:\user\database\system.mdb"
      DSNLessConn=DSNLessConn & "DBQ=" & server.mappath("..\..\Database\Wedding.mdb")
      WD_Conn.Open DSNLessConn

to display I'm just using movenext & loop.

Andy
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 11

Expert Comment

by:JohnModig
ID: 18878696
Ok, so you are in fact using the sql written in ASP. Try to call the Access query from ASP instead.  

Change this line:
-----------------------
rstLocalServices.open sql, WD_Conn,adopenKeyset
-----------------------

To something like this:
-----------------------
rstLocalServices.open "MyQuery", WD_Conn,adopenKeyset
-----------------------

...and you will get all the fields from your Access query instead. See what I mean?
0
 
LVL 3

Author Comment

by:Andy Green
ID: 18878752
OK, how do I pass the 2 parameters in?

This seems a lot of work for 125 points. :-)

Andy
0
 
LVL 3

Author Comment

by:Andy Green
ID: 18878775
This has something to do with using Randomize, but I still cant make it work. It's because the Rnd() is inside the SQL, so I'd have thought it would not be needed.

On On.

Andy
0
 
LVL 11

Accepted Solution

by:
JohnModig earned 125 total points
ID: 18884078
Pass two parameters like this:
-----------------------
rstLocalServices.open "MyQuery 'parameter1','parameter2'", WD_Conn,adopenKeyset
-----------------------
Notice the single quotes around the two parameters. Also notice the comma. It should be after the first parameter and not before.
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

Turn A Profile Picture Into A Cartoon Using Photoshop And Illustrator This tutorial will teach you how to make a cartoon style image out of a regular picture. I have tried to keep the tutorial as simple as possible. I used Adobe CS4 for this tuto…
Objective of This Article In 1990’s, when I was a budding software professional, I had a lot of confusion about which stream or technology, I had to choose to build my career. In those days, I had lot of confusion like whether to choose System so…
The purpose of this video is to demonstrate how to Import and export files in WordPress. This will be demonstrated using a Windows 8 PC. Go to your WordPress login page. This will look like the following: mywebsite.com/wp-login.php : Click on Too…
The purpose of this video is to demonstrate how to set up the permalinks on a WordPress Website. This will be demonstrated using a Windows 8 PC. Go to your WordPress login page. This will look like the following: mywebsite.com/wp-login.php : Go t…

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now