• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

مشکل در ارتباط با Access در ASP

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
من برای ارتباط با بانک اطلاعاتی به صورت زیر کدنویسی کردم:

<%
Set adoCon = Server.CreateObject("ADODB.Connection")
strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("D:\vhosts\***.ir\private\***.mdb") 'This one is for Access 2000/2002
adoCon.Open strCon
Set rsConfiguration = Server.CreateObject("ADODB.Recordset")
%>​


اما الآن این خطا رو دارم. کسی می تونه کمک کنه؟

Server.MapPath() error 'ASP 0172 : 80004005'

Invalid Path

/sms2/inc/conn.asp, line 3

The Path parameter for the MapPath method must be a virtual path. A physical path was used.​
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
خود error همه چی رو میگه.مشکل از دیتابیس نیست مشکل از Server.MapPath ِ.
آدرس فیزیکی بهش دادی باید آدرس مجازی بهش بدی.مثلا اگه فایل تو توی :
کد:
D:\vhosts\site.ir\httpdocs\ConnectToDB.asp
باشه و دیتا بیس توی
کد:
D:\vhosts\site.ir\private\db.mdb
باشه باید از
کد:
Server.MapPath("..\private\db.mdb")
استفاده کنی
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
خود error همه چی رو میگه.مشکل از دیتابیس نیست مشکل از Server.MapPath ِ.
آدرس فیزیکی بهش دادی باید آدرس مجازی بهش بدی.مثلا اگه فایل تو توی :
کد:
D:\vhosts\site.ir\httpdocs\ConnectToDB.asp
باشه و دیتا بیس توی
کد:
D:\vhosts\site.ir\private\db.mdb
باشه باید از
کد:
Server.MapPath("..\private\db.mdb")
استفاده کنی
از توجه شما ممنونم دوست عزیز.
کاری که شما گفتید را انجام دادم، Disallow Caracter گرفتم و با مسئول سرور تماس گرفتم گفت بنا به دلایل امنیتی /.. را بستیم.
الآن از سورس زیر استفاده کردم و این Error را دارم. حالا باید چه کار کرد؟


New Source:
Driver={Microsoft Access Driver (*.mdb)};
DBQ=C:\Inetpub\wwwroot\accounts\users\jsmith\data\statistics.mdb

New Error:
Server.MapPath() error 'ASP 0171 : 80004005'
Missing Path
/jsmith/data/conn.asp, line 4
The Path parameter must be specified for the MapPath method​
.
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
توی New Source من اصلا Server.MapPath نمیبینم که برنامه روی Error,Server.MapPath گرفته
کدی که گذاشتی کامل نیست!
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
از توجه شما ممنونم دوست عزیز.
کاری که شما گفتید را انجام دادم، Disallow Caracter گرفتم و با مسئول سرور تماس گرفتم گفت بنا به دلایل امنیتی /.. را بستیم.
الآن از سورس زیر استفاده کردم و این Error را دارم. حالا باید چه کار کرد؟


New Source:
Driver={Microsoft Access Driver (*.mdb)};
DBQ=C:\Inetpub\wwwroot\accounts\users\jsmith\data\statistics.mdb

New Error:
Server.MapPath() error 'ASP 0171 : 80004005'
Missing Path
/jsmith/data/conn.asp, line 4
The Path parameter must be specified for the MapPath method​
.
عزیز من خوب شما آدرس دهی نکردی دیگه .
کد:
DBQ=" & Server.MapPath("_private/Business.mdb")
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
سورس ها رو به شکل زیر تغییر دادم و خطای جدید زیر رو دریافت کردم:

New Source 2:
<%

Set adoCon = Server.CreateObject("ADODB.Connection")
DBQ=" & Server.MapPath("D:\vhosts\taknet.ir\private\**.mdb")
adoCon.Open strCon
Set rsConfiguration = Server.CreateObject("ADODB.Recordset")

%>

New Error 2:
Microsoft VBScript compilation error '800a0401'

Expected end of statement

/sms2/inc/conn.asp, line 4

DBQ=" & Server.MapPath("D:\vhosts\taknet.ir\private\**.mdb")
------------------------^
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
باز هم اشتباه کردی دیگه
کد:
adoCon.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("D:\vhosts\taknet.ir\private\**.mdb ")
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
باز هم اشتباه کردی دیگه
کد:
adoCon.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("D:\vhosts\taknet.ir\private\**.mdb ")

اینطوری که شما گفتید عمل کردم و حالا خطای زیر رو دارم:
Server.MapPath() error 'ASP 0172 : 80004005'

Invalid Path

/sms2/inc/conn.asp, line 4

The Path parameter for the MapPath method must be a virtual path. A physical path was used.​

در ضمن، سروری که من روش هاست دارم Plesk هست.
 

SoftDevCo

Registered User
تاریخ عضویت
26 آپریل 2006
نوشته‌ها
365
لایک‌ها
0
محل سکونت
Tehran
اگه بانک اطلاعاتی و فایل هات توی یه پوشه باشند:

PHP:
adoCon.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("M.mdb")


اگه بانک اطلاعاتی توی پوشه exp باشند:

PHP:
adoCon.ActiveConnection = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\exp\M.mdb")
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
اینطوری که شما گفتید عمل کردم و حالا خطای زیر رو دارم:
Server.MapPath() error 'ASP 0172 : 80004005'

Invalid Path

/sms2/inc/conn.asp, line 4

The Path parameter for the MapPath method must be a virtual path. A physical path was used.​

در ضمن، سروری که من روش هاست دارم Plesk هست.
ببینم شما این تست ها رو داخل کامپیوتر خودتو انجام میدید ؟
یا روی سرور تون ؟

ببینم بجای اون ستاره ها اسم فایل بانک اطلاعاتی رو میزاری یا نه ؟؟؟
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
ببینم شما این تست ها رو داخل کامپیوتر خودتو انجام میدید ؟
یا روی سرور تون ؟

ببینم بجای اون ستاره ها اسم فایل بانک اطلاعاتی رو میزاری یا نه ؟؟؟
تست ها روی سرور انجام می شود و ** با نام اصلی Database تعویض می شود.
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
خوب شما از کجا میدونی که آدرس سایت شما داخل سرور درایو D و ... می باشد .

چرا از Server.MapPath استفاده نمی کنی ؟
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
خوب شما از کجا میدونی که آدرس سایت شما داخل سرور درایو D و ... می باشد .

چرا از Server.MapPath استفاده نمی کنی ؟

Server.MapPath که روی این سرور جواب نمیده و حتماً باید از ODBC استفاده کرد.
آدرس فیزیکی هم به خاطر این مطمئن هستم که هنگام تعریف ODBC خودش این آدرس رو برای بانک اطلاعاتی مورد نظر من ثبت کرد.
در ضمن در لینک مثال زیر نحوه ربط دادن Access برای Plesk توضیح داده شده، اما طبق مثال که جلو میرم این خطا رو دارم:
لینک مثال: https://www.mdwebhosting.com.au/sup...ledgebase&_a=viewarticle&kbarticleid=28&nav=0

Source 1:
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\vhosts\taknet.ir\private\**.mdb"

Error 1:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/sms2/login.asp, line 6


Source 2:
Set adoCon = Server.CreateObject("ADODB.Connection")
strConn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\vhosts\taknet.ir\private\**.mdb"
adoCon.Open strCon

Error 2:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/sms2/inc/conn.asp, line 7​

فکر می کنم اگر روی حالت دوم بیشتر کار بشه بهتر از حالت اول میشه نتیجه گرفت !!!
از اینکه اینقدر پیگیر مشکل بنده هستید سپاسگذارم. ...
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
به ODBC چه ربطی داره
ایروری که سیستم میگیره از آدرس فایل بانک اطلاعاتی شماست . Server.MapPath فقط آدرس دهی می کنه . فرقی نداره که شما از Provider استفاده کنی یا از DRIVER .

آدرس دهیه شما اشتباست عزیزم .

من نمی دونم چرا شما نمیتونید مسیر جاریه سیستم رو تشخیص دهید . خوب اگه این طوریه که میگید چرا از DSN استفاده نمی کنید . یه DSN رویه سرورت درست کن دیگه خیال خودتو راحت کن .
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
آدرس فیزیکی هم به خاطر این مطمئن هستم که هنگام تعریف ODBC خودش این آدرس رو برای بانک اطلاعاتی مورد نظر من ثبت کرد.
ببینم ODBC چطوری آدرس رو برای شما ثبت کرده ؟:blink:
میشه توضیح بدید
7.gif
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
این همه دردسر واسه چی ؟ :D مگه مشکلت این نبود که نمیتونستی از ../ استفاده کنی؟
بجای اینکه فایل db رو توی یه folder کنار httpdocs بگذاری اون رو توی یه فولدر داخل httpdocs بگذار که مجبور نشی از ../ استفاده کنی و روی اون فولدر هم از توی plesk پسورد بگذار تا کسی نتونه به فایلت دسترسی پیدا کنه...
برای Server.mappath هم میشه
کد:
Server.MapPath("/Dir/db.mdb")
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
این همه دردسر واسه چی ؟ :D مگه مشکلت این نبود که نمیتونستی از ../ استفاده کنی؟
بجای اینکه فایل db رو توی یه folder کنار httpdocs بگذاری اون رو توی یه فولدر داخل httpdocs بگذار که مجبور نشی از ../ استفاده کنی و روی اون فولدر هم از توی plesk پسورد بگذار تا کسی نتونه به فایلت دسترسی پیدا کنه...
برای Server.mappath هم میشه
کد:
Server.MapPath("/Dir/db.mdb")
اینکار شدنی نیست !!!
برای اینکه چند Page دیگر هم در Directory های دیگر هست که باید به این DB وصل بشه، بنابراین بازهم مجبور میشم از ..\ استفاده کنم.
 

masood_y

Registered User
تاریخ عضویت
15 ژانویه 2005
نوشته‌ها
70
لایک‌ها
0
سن
40
ببینم ODBC چطوری آدرس رو برای شما ثبت کرده ؟:blink:
میشه توضیح بدید
7.gif

والله که من خودمم حسابی قاطی کردم. هر کس یه چیزی میگه.
فکر کنم قضیه اینطوری مطرح بشه بهتره:
ما می خوایم به واسطه فایل connect.asp به Access Database که در 4 پوشه قبل تر قرار دارد وصل شویم. برای آدرس دهی \.. مجاز نمی باشد و بایستی از آدرس فیزیکی استفاده کرد.
سورس از چه قرار است؟ :lol:
 

mehdi25

کاربر تازه وارد
تاریخ عضویت
28 اکتبر 2004
نوشته‌ها
1,318
لایک‌ها
2
محل سکونت
طهران
با این تفاصیر بهترین و تنها راه ماند استفاده از DSN هست
 
بالا