مرجع خطاهای ASP کلاسیک - 1 (10 خطای 80004005)


در بخش اول از سری مقالات معرفی خطاهای رایج در زبان برنامه نویسی کلاسیک به معرفی 10 خطا از سری خطاهای 80004005 می پردازیم. این خطاها عبارتند از :

  • Couldn't use '(unknown)'; file already in use.
  • The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.
  • Could not find file 'xxxxxx'.
  • Operation must use an updateable query.
  • Cannot update. Database or object is read-only.
  • Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.
  • Unrecognized database format '.MDB'
  • Expecting string input
  • The function expects a string as input.
  • Missing close of script delimiter /.asp, line The Script block lacks the close of script tag (%>).
 

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] Couldn't use '(unknown)'; file already in use.

 

و

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver]
The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.

 

به يوزر IUSR_ پوشه محل ذخيره بانک اطلاعاتي دسترسي کامل (Full Control) دهيد. (براي مشاهده نحوه انجام اين کار به اولين پست همين تاپيك مراجعه کنيد.)
در صورتي که برنامه شما در سرور محلي (Local Web Server) اجرا مي شود، مطمئن شويد که Share Permissions دسترسي کامل (Full Control) داشته باشد.

 


 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver]
The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.

 

آدرس بانک اطلاعاتي نادرست است. يکي از رايجترين اشتباهاتي که باعث پيدايش اين خطا مي شود نحوه نادرست آدرس دهي بانک است.
براي مثال استفاده از کد زير خطايي مشابه خطاي بالا را نمايش مي دهد:

 

filepath ="DB.mdb"
set conn = server.CreateObject("ADODB.Connection")
conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath

 

براي حل اين مشکل مي بايست آدرس فيزيكي فايل را وارد کنيم. بدين منظور از server.MapPath استفاده مي کنيم.

 

filepath = server.MapPath("DB.mdb")
set conn = server.CreateObject("ADODB.Connection")
conn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath

 


 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

 

یا

 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only.

 

اين خطا به هنگامي رخ ميدهد که دسترسي اعمال تغييرات روي بانک را نداشته باشيد. براي حل اين مشکل روش توضيح داده شده در اولين پست همين تاپيك را دنبال كنيد.

 


 

Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt.

 

یا

 

Microsoft JET Database Engine error '80004005'
Unrecognized database format '.MDB'

 

دلايل بروز اين خطا :
1. فايل MDB مورد استفاده صدمه ديده است.
راه حل:
در اكثر مواقع ميتوان با استفاده از بخش compact and repair database موجود در برنامه اكسس اين مورد را بر طرف نمود.
2. ارتباط با بانك Access 97 با استفاده از درايور Access 2000 يا نسخه هاي بالاتر آن و برعكس.
راه حل:
الف) اطمينان حاصل كنيد كه آخرين نسخه از MDAC ( Microsoft Data Downloads ) و آخرين نسخه درايور JET ( JET drivers ) بر روي سرور نصب شده است.
ب) سعي كنيد بانك اكسس خود را به نسخه هاي جديدتر اين نرم افزار ارتقا دهيد.

 


 

Request object error 'ASP 0102 : 80004005'
Expecting string input

 

یا

 

Request object, ASP 0102 (0x80004005)
The function expects a string as input.

 

وقتي با استفاده از request.querrystring يا request.form مقداري را دريافت مي كنيد در صورتي كه متغير ذكر شده در جايي تعريف نشده باشد٬ چنين خطايي رخ مي دهد.
براي مثال وقتي در يك فرم ثبت نام فيلدي با نام txttest وجود نداشته باشد ولي در صفحه اكشن شما اين مقدار درخواست شود با چنين خطايي روبرو خواهيد شد.
كد نمونه :

 

Request object error 'ASP 0102 : 80004005'
Expecting string input

 

یا

 

Request object error 'ASP 0102 : 80004005'
Expecting string input

 

براي رفع اين خطا٬ از وجود چنين فيلدي اطمينان حاصل كنيد.