Bu yazımızda asp ile çalışırken karşılaşacağımız ASP Hataları ve Çözümleri yani bu hataları çözmenin yollarından bahsedeceğiz.

Syntax error(missing operator) in query expressio

Hata Nedeni :
Bu hatayı genelde eğer database de querystring ile aldığınız alanı seçtirmek isterken alırsınız. Yani anlamı id no yu doğru alamadığınızdan dolayıdır.

Hata Çözümü :
Sayfada id no yu nasıl aldığınız bir daha kontrol edin ve ona göre asp kodunu yazın.

Database or object is read-only (80004005)

Hata Nedeni :
Bu hatayı db nizin olduğu işlem yaptığınız klasörde eğer yazma izni yoksa alırsınız.

Hata Çözümü :
Bu problemin çözümü için hosting’i sağlayan kişiyle bağlantıya geçip klasörünüze yazma izni vermesini söylemeniz lazım.

 

Expected ‘End’ 800a03f6

Expected ‘End’ (800a03f6) adlı hata raporunun açıklaması ve çözüm yolu.

Hata Nedeni :
Açmış olduğunuz If döngüsünü kapamamış olabilirsiniz.

Hata Çözümü :
If döngülerinizi tekrardan gözden geçirin. Hata da gösterilen satıra end if yazmayı deneyin.

 

Expected statement (800A0400)

Expected statement (800A0400) adlı hata raporunun açıklaması ve çözüm yolu.

Hata Nedeni :
Açmış olduğunuz ASP tag’ını kapamamış olabilirsiniz.

Hata Çözümü :
ASP tag lerini gözden geçirin. <% ile %> taglerinin eşit sayıda olduğundan emin olun.

 

Expected End of Statement (BC30205)

Expected End of Statement (BC30205) adlı hata raporunun açıklaması ve çözüm yolu.

Hata Nedeni :
ASP kodlarını belirten <% ve %> açma kapama imleç lerini yanlış kullandığınızdan dolayı olur.

Hata Çözümü :
ASP kodunun bittiği yere %> koyduğunuza emin olun. Veya fazladan <% olmadığından emin olun.

 

Expected statement (800A0400)

Expected statement (800A0400) adlı hata raporunun açıklaması ve çözüm yolu.

Hata Nedeni :
Açmış olduğunuz ASP tag’ını kapamamış olabilirsiniz.

Hata Çözümü :
ASP tag lerini gözden geçirin. <% ile %> taglerinin eşit sayıda olduğundan emin olun.

 

Geçersiz Null Kullanımı Hatası

Boş veriyi replace ederken çıkan hatayı engellemek için kullanılan yollar.

 

Örneğin bir fonksiyonumuz var.
Zararlı karkterleri replace ediyor. Yalnız boş veride bu fonksiyonu uyguladığımızda ‘geçersiz null kullanımı’ gibi hata veriyor.

<%
Function temizle(veri)
veri=replace(veri,”<“,””)
veri=replace(veri,”>”,””)
temizle=veri
End Function
%>

 

Bu hatayı engellemek için şöyle bir mantık izleyebiliriz.
Eğer veri değişkeni boşsa fonksiyondan çıkabiliriz veya bir if(şart) koyarak sadece veri null (boş) olmadığında işlem yaptırabiliriz.
Mantık her zaman koddan önce gelir. İstediğiniz yöntemi kullanabilirsiniz.

1. Exit Yöntemi

<%
Function temizle(veri)
if veri=”” then exit function
veri=replace(veri,”<“,””)
veri=replace(veri,”>”,””)
temizle=veri
End Function
%>

Bu şekilde kullanırsak replace edilen veri boş ise fonksiyondan çıkılır.
Hata engellenir.

2. If ile Veri Kontrolü

<%
Function temizle(veri)
if not veri=”” then
veri=replace(veri,”<“,””)
veri=replace(veri,”>”,””)
end if
temizle=veri
End Function
%>

Bu şekilde ise replace olayını sadece veri dolu olduğunda kullandırırız.

 

Loop Without Do (800a040e)

Loop Without Do (800a040e) adlı hatanın açıklaması ve çözüm yolu.

Hata Nedeni :
Bu hatayı eğer bir döngünün devam etmesini belirtmiş ve nerden başlayacağını belirtmediyseniz alırsınız.

Hata Çözümü :
Döngüye girmesini istediğiniz yerin başına aşağıdaki kodu koyarak sorunu çözebilirsiniz.

<% do while not recordsetname.eof %>

 

Permission Denied (800a0046)

Permission Denied (800a0046) adlı hatanın açıklaması ve çözüm yolu

 

Hata Nedeni :
Sunucunuzda FSO desteği pasif durumdayken FSO (File System Object) kullanmaya çalışırken alırsınız.

Hata Çözümü :
FSO desteğini açmak için klasörlerinize yazma izni ve tam kontrol vermelisiniz. Sunucunuzda çalıştırmak için hosting sağlayıcınızla iletişim kurmalısınız.

 

The Microsoft Jet Database Engine Cannot Find…

The Microsoft Jet database engine cannot find the input table or query tablo. Make sure it exists and that its name is spelled correctly. (80040e37)

Hata Nedeni :
Adında anlaşılacağı gibi bir tablo’yu açarken tablo’yu bulamadığını belirtiyor.

Hata Çözümü :
Tablo’nun database’inizde olduğundan veya veritabanının açık olmadığından emin olun.

 

The Microsoft Jet Database Engine Cannot Find…

The Microsoft Jet database engine cannot find the input table or query tablo. Make sure it exists and that its name is spelled correctly. (80040e37)

Hata Nedeni :
Adında anlaşılacağı gibi bir tablo’yu açarken tablo’yu bulamadığını belirtiyor.

Hata Çözümü :
Tablo’nun database’inizde olduğundan veya veritabanının açık olmadığından emin olun.

 

Yanıt Nesnesi Error, Üstbilgi Hatası (80004005)

Yanıt Nesnesi Error, Üstbilgi Hatasi (80004005) adlı hatanın açıklaması ve çözüm yolu.

 

Hata Çözümü :
Hatayı aşağıda ki kodu sayfanınızın başına koyarak düzeltebilirsiniz.

<% Response.buffer = True %>

 

Active Server Pages error ‘ASP 0131’ Hatası

Active Server Pages error ‘ASP 0131’ hatasının açıklaması ve çözümü için izlenecek adımlar.

 

Disallowed Parent Path

asp sayfalarında eminim hepiniz sık sık hata ile karşılaşırsınız. Hata raporunda belirtilen satıra giderek hatanın nereden kaynaklandığını bulabilirsiniz. burada satır 1 de aşağıdaki kod satırı yer almaktadır.

line : 1 bu satırda include etmiş olduğumuz sayfamız yer almaktadır.

Hatanın sebebi üst yolların etkinleştirilmemesinden kaynaklanıyor. yani ../ dizinin üstündeki dosyaları okuyamıyor ve bu hatayı veriyor.

Hatanın Çözümü:
– IIS’i açıyoruz, Web sitelerinden hata veren sitenin üzerine sağ tıklıyoruz ve “Özellikler (Properties)” menüsüne giriyoruz.

– Giriş dizini (Home Directory) sekmesine tıklıyoruz ve alttaki “Yapılandırma (Configuration)” butonuna tıklıyoruz.

– Açılan pencereden Seçenekler (Options) sekmesine geçiyoruz.

– Burada bulunan “Üst yolları etkinleştir (Enable parent paths)” kutusunu
işaretliyoruz ve Tamam’a tıklıyoruz.

 

Operation is not allowed when object is closed

Operation is not allowed when object is closed (0x800A0E78) adlı hataya sebebiyet veren durumun açıklaması ve çözüm için gerekli müdahale.

Hata Sebebi :
Bu hatayı DB’den veri sildikten sonra değişkeni kapatırsanız alırsınız.

Hata Çözümü :
Veritabanından verinizi sildikten sonra;

<%
degiskenadi.close
%>

kodunu kaldırarak çözebilirsiniz.

 

Type mismatch (0x800A000D)

Type mismatch (0x800A000D) adlı hataya sebebiyet veren durumun açıklaması ve hatanın giderilmesi için gereken çözüm.

 

Hata Sebebi :
İsim yazan yerde sub (altsayfa) adı olabilir. Eğer bu hatayı alıyorsanız isim (sizin değişkeninize göre değişir) adlı sub’ı tanıtmamışsınız demektir.

Hata Çözümü :
İsim adlı sub’a gitmek için “islem” değişkenini kullanacağız.
Sayfanızın başına şu kodları yerleştirin;

<%
If islem = “isim” then
call isim
end if
%>

 

Data type mismatch in criteria expression

Data type mismatch in criteria expression (80040e07) adlı hataya sebebiyet veren durumun açıklaması ve çözümü.

 

Hata Sebebi :
Bu hatayı sql komutunuzda yanlış seçim yaparak alırsınız. Mesela veritabanınızda bir alana numara (değeri number olan) alana yazı eklemeye çalışırsanız bu hatayı alırsınız.

Hata Çözümü :
Veritanınızdaki data türü’nü değiştirerek sorunu çözebilirsiniz.

 

Object Required (0x800A01A8)

Object Required (0x800A01A8) adlı hatanın açıklaması ve çözümü

 

Hata Nedeni :
Kullanılan değişkenin tanımlanmamış olmasından dolayı bu hata çıkar.

Hata Çözümü :
Değişken’i tanımlayarak ve doğru olarak kullanarak bu sorunu çözersiniz.

 

Unspecified Error (Belirtilmemiş Hata)(0x80004005)

Unspecified Error adı altında 0x80004005 nolu hata türünün nedenini ve çözümlerini merak ediyorsanız, işte çözümü.

Hata Sebebi :
Bu hatayı almanız için geçerli bir neden yoktur. Web üzerindeki bir sunucuda genellikle almazsınız, genelde localhost’da rastlarsınız.

Hata Çözümü :
Veritabanı ismini değiştirerek bu sorunu çözebilirsiniz. Veritabanınız olan *.mdb dosyasının ismini değiştirmeniz ve bağlantınızı ona göre ayarlamanız yeterli olacaktır.