Accessデータベースからランダムに異なる行を返すクエリがあります。なぜAccessDataSourceはAccessでクエリに異なる結果を返しますか?
SELECT * FROM
(SELECT DISTINCT m.MemberID, m.Title, m.FullName, m.Address,
m.Phone, m.EmailAddress, m.WebsiteAddress FROM Members AS m INNER JOIN MembersForType AS t ON m.MemberID = t.MemberID WHERE
(Category = 'MemberType1' OR Category = 'MemberType2')) as Members
ORDER BY RND(members.MemberID) DESC
これをAccessで実行すると、ランダムなソート順に従って、毎回異なる順序で行が返されます。しかし、私はそれを私のWebアプリケーションを介して実行すると、行は毎回同じ順序で戻ります。ここで私は私のコードビハインドでそれを呼び出す方法です:私は多分、クエリがキャッシュされていたが、結果は同じだと思ったので、
private void BindData()
{
using (AccessDataSource ds = new AccessDataSource("~/App_Data/mydb.mdb", GetSQLStatement()))
{
ds.DataSourceMode = SqlDataSourceMode.DataReader;
ds.CacheDuration = 0;
ds.CacheExpirationPolicy = DataSourceCacheExpiry.Absolute;
ds.EnableCaching = false;
listing.DataSource = ds.Select(new DataSourceSelectArguments());
listing.DataBind();
if (listing.Items.Count == 0)
noResults.Visible = true;
else
noResults.Visible = false;
}
}
私は、キャッシュに関するすべてのものに追加しました。私はコードにブレークポイントを入れて、クエリが上記と同じであったことを確認しました。
アイデア?これは私をナットにしている。
同じランダムな順番で返されますか、または表示されている順序に何らかの情報がありますか? –
同じランダムな順序で表示されます。 – Phill
私はこれをコメントに入れておきます。私はトラブルシューティングのアイデアで回答ではありませんが、Web版のselect節に "RND(members.MemberID)"を追加してみましたが、同じランダムを返すかどうか確認しています毎回ナンバー? 1つの考えは、結果をキャッシュすることでRND()を最適化することです。 – JohnFx