BANNER SORUNU (ASP)

0
Onaylı Üye
Üye
Katılım
13 Mart 2008
Mesajlar
2
Tepki puanı
0
Merhaba arkadaşlar. Bir script kullanıyorum. Banner Yönetim panelim var. sayfada gösterdiğim banner bir kaç gösterimden sonra aşağıdaki hatayı veriyor.

//////////////////////////////////////////////////////////// /////
Microsoft JET Database Engine error '80040e21'

The Microsoft Jet database engine stopped the process because you and another user are attempting to change the same data at the same time.

/inc_fonksiyonlar.asp, line 699
//////////////////////////////////////////////////////////// /////

Bunun sebebi sanırım bannerı iki kişi aynı anda görüntülemeye çalışınca script hata veriyor. işte aşağıda ilgili kodlar şimdenden teşekkür ederim yardım edicek arkadaşlara...

///////////////////////////////////////////////

Function BannerGoster(intBannerTur)

If intBannerTur = "" OR IsNumeric(intBannerTur) = False Then Exit Function
Dim bSQL, intRandNo, intBannerGosterim

bSQL = "SELECT * FROM tblBanner "
bSQL = bSQL & "WHERE Durum = True AND Baslangic <= #"& Date() &"# AND Bitis >= #"& Date() &"# AND Alan_ID = "& intBannerTur
kdFonksiyon.Open bSQL, adoCon, 1, 3
If kdFonksiyon.Eof Then
'// Bu alana sabit reklam kodu ekleyebilirsiniz.
Else
' Rastgele banner seçimi
Randomize
intRandNo = Int((Rnd*kdFonksiyon.RecordCount)+0)
kdFonksiyon.Move(intRandNo)

intBannerGosterim = kdFonksiyon("Gosterim")
' Reklam HTML kodu ise
If kdFonksiyon("HTML") = True Then
Response.Write kdFonksiyon("Kod")

Else
Response.Write("<a href="""& strScriptYolu &"reklam_yonlendir.asp?rID="& kdFonksiyon("Banner_ID") &""" target="""& kdFonksiyon("Pencere") &""">" & _
"<img src="""& kdFonksiyon("Resim") &""" alt="""& kdFonksiyon("Baslik") &""" style=""border:0; width:"& kdFonksiyon("Genislik") &";height:"& kdFonksiyon("Yukseklik") &""" /></a>")
End If
kdFonksiyon("Gosterim") = intBannerGosterim + 1
kdFonksiyon.Update
End If
kdFonksiyon.Close

End Function
%>

///////////////////////////////
 
0
Onaylı Üye
Üye
Katılım
24 Mart 2008
Mesajlar
26
Tepki puanı
0
bSQL = "SELECT * FROM tblBanner "
bSQL = bSQL & "WHERE Durum = True AND Baslangic <= #"& Date() &"# AND Bitis >= #"& Date() &"# AND Alan_ID = "& intBannerTur
kdFonksiyon.Open bSQL, adoCon, 1, 3

Bunun sebebi muhtemelen buradaki kod olabilir. kdFonksiyon.Open bSQL, adoCon, 1, 3 Oradaki 3 yazısını 1 yapmayı dene bence. Çünkü sen sadece SELECT ile veri çekmeye çalışıyorsun. Ancak banner gösterim sayısını da arttırmak için yazma izniyle tabloyu açıyorsun. Tablolar yazma izniyle açılınca Access ortak kullanımlara izin vermeyebiliyor. Oradaki 3 iznini 1'e çevir. "kdFonksiyon.Open bSQL, adoCon, 1, 1" olacak yani.

Bunu yapınca

kdFonksiyon("Gosterim") = intBannerGosterim + 1
kdFonksiyon.Update

kısmında hata verecek. Tabloyu okumak için açtığından dolayı gösterim sayısını arttıramayıp kızacak. O 2 satırı da silip yerine

sql="update tblBanner set Gosterim=Gosterim+1 WHERE Durum = True AND Baslangic <= #"& Date() &"# AND Bitis >= #"& Date() &"# AND Alan_ID = "& intBannerTur
adoCon.execute sql

gibi bir kod yazabilirsin.

Böylece iki kişi aynı anda banner görüntülemeye kalktığında paylaşım hatasından kurtulursun diye tahmin ediyorum.
 
Geri
Üst