PDA

View Full Version : مشکل



mhjb
پنج شنبه 17 شهریور 1384, 12:46 عصر
من یه دیتابیس اکسس دارم که روی سرور است. یه برنامه هم با ADO نوشتم که به این دیتابیس وصل می‌شه (Provider=Microsoft Jet 4.0) و از دیتابیس یه سری فیلدهای خاص رو به کاربر نشون میده. ولی اگر من به دیتابیس پرمیژن Write رو بدم برنامه اجرا میشه ولی اینجوری کاربران می‌تونند به دیتابیس دسترسی داشته باشند و اونو عوض کنند اما اگر پرمیژن write رو از فایل دیتابیسم بردارم برنامه دیگه اجرا نمیشه و میگه که من بهش Access ندارم. سوال من اینه آخه واسه چی یه همچین اتفاقی می‌افته مگه برنامه من می‌خواد توی دیتابیس تغییر بده!! خواهشا کمک کنید چند روز سر کارم و دیگه دارم کلافه میشم. Connection Stringکانکشنم هم اینه:

;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\MHJB\Info\pm.mdb;Persist Security Info=False

JavanSoft
پنج شنبه 17 شهریور 1384, 14:07 عصر
چرا از Jet استفاده کردید؟

mhjb
شنبه 19 شهریور 1384, 07:46 صبح
چرا از Jet استفاده کردید؟

پس از چی استفاده کنم؟

Naficy
شنبه 19 شهریور 1384, 09:08 صبح
هرچند این جواب شما نیست، اما شاید بد نباشه برین سراغ SQL-Server. چون کلا اکسس چیز خوبی روی شبکه نیست.
بانکهای اطلاعاتی هنگام استفاده چند کاربره مجبورند روی جداول قفل بذارند تا مثلا وسط یه تغییر در رکوردها کسی اونا رو نخونه و ... این قفل ها باید جایی ذخیره بشن. (نمی دونم یا تو فایل mdb یا ldb) خب اینکار به معنی تغییر دادن توی فایله.
اما شما می تونید تغییر دادن مقادیری مثل CursorType و LockType و غیره رو امتحان کنین. شایدبتونین جلوی این کارو بگیرین...

mhjb
شنبه 19 شهریور 1384, 09:51 صبح
تمام حالات ممکن رو تست کردم ولی بازهم نشد. خواهشا یکی بهم کمک کنه.

vcldeveloper
یک شنبه 20 شهریور 1384, 04:35 صبح
بجای تغییر سطح دسترسی فایل Access، اون dataset هایی که با بانک در ارتباط هستند رو در داخل برنامه ReadOnly کن، به این ترتیب کاربران نمی تونند از طریق برنامه تغییری در بانک بدند.

mhjb
یک شنبه 20 شهریور 1384, 07:31 صبح
آقای کشاورز از جوابتان ممنون. ولی مشکل من اینه که احتمال داره کاربران به صورت دستی بر روی دیتابیس من تغییراتی اعمال کنند.

m-khorsandi
یک شنبه 20 شهریور 1384, 07:43 صبح
درود
منظورت اینه که دایرکتوری Share شده مربوط به فایل Access رو میبینه و میتونه یه کارهایی بکنه؟

vcldeveloper
یک شنبه 20 شهریور 1384, 07:59 صبح
ولی مشکل من اینه که احتمال داره کاربران به صورت دستی بر روی دیتابیس من تغییراتی اعمال کنند.
اگر نگرانی شما مربوط به امنیت فایل به اشتراک گذاشته شده است، دیگه ربطی به دلفی و نحوه اتصال برنامه شما به بانک نحواهد داشت، بلکه به امکانات امنیتی Access مربوط میشه.

mhjb
یک شنبه 20 شهریور 1384, 12:39 عصر
نه آخه مشکل من اینه که من نمی‌خوام چیزی توی دیتابیس تغییر دهم ولی تا پرمیژن Write رو ندم از داخل برنامه نمی‌توانم به دیتابیس وصل شوم.

Naficy
یک شنبه 20 شهریور 1384, 13:27 عصر
حتی زمانی که ReadOnly داخل برنامه ست شده؟
تست کنین که مثلا فایل ldb رو پرمیژن Write بدین، Mdb رو نه.

mhjb
یک شنبه 20 شهریور 1384, 14:39 عصر
آخه من موقعی که از داخل برنامه به دیتابیس وصل میشم که فایل ldb ساخته نمیشه. موقعی که فایل رو با خود Access باز می‌کنم فایل ldb ساخته میشه.

m-khorsandi
یک شنبه 20 شهریور 1384, 15:52 عصر
پیشنهاد میکنم یکبار هم این مشکل رو در "مباحث مربوط به Microsoft Access" مطرح کنید.

Naficy
دوشنبه 21 شهریور 1384, 09:06 صبح
من هم چیز دیگه ای به ذهنم نمی رسه. البته بجز تبدیل دیتابیستون، کار راحتی هم هستا...!!! :چشمک: :لبخند:

SalarSoft
دوشنبه 21 شهریور 1384, 11:28 صبح
آخه من موقعی که از داخل برنامه به دیتابیس وصل میشم که فایل ldb ساخته نمیشه. موقعی که فایل رو با خود Access باز می‌کنم فایل ldb ساخته میشه.
از موقع باز شدن کاننکشن تا بستن آن فایل ldb مربوطه ساخته میشه و مشکل شما دقیقا همینه.

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

برای رفع مشکلت یا به sql-server مراجعت کن یا یک فولدر اختصاصی برای فایل بانک ایجاد کن و حق نوشتن فایل رو فقط به برنامه سایت بده .
این تصویر نمونه نحوه دادن اجازه دسترسی به برنامه ست. در برنامه flashFxp:

mhjb
دوشنبه 21 شهریور 1384, 18:38 عصر
منظور شما از برنامه سایت همین برنامه‌ای است که من نوشته‌ام یا نه؟
ضمنا میشه بگین این برنامه FlashFXp چی کار میکنه؟

SalarSoft
سه شنبه 22 شهریور 1384, 10:45 صبح
منظور شما از برنامه سایت همین برنامه‌ای است که من نوشته‌ام یا نه؟بله.

ضمنا میشه بگین این برنامه FlashFXp چی کار میکنه؟یک برنامه FTP client
البته هر برنامه ftp میتونه این تنظیم رو انجام بده.

mhjb
سه شنبه 22 شهریور 1384, 16:36 عصر
من فکر نمی‌کنم FTP مشکل رو حل کنه. چون در تنظیم FTP سرور شما بیا باید پرمیژن Write رو بدین یا نه. که در این صورت اگر بدین که کاربران میتونند فایل شما را خارج از برنامه نیز تغییر بدن و اگر ندین که اونوقت برنامه اجرا نمی‌شه. واقعا که دیگه شورش رو درآورده این مایکروسافت. یه مقاله تو سایتش پیدا کردم که اونجا گفته بود برای اینکه Jet بتونه بهش وصل بشه باید پرمیژن Write رو حتما بهش بدین. مسخره است نه!!!!!

SalarSoft
سه شنبه 22 شهریور 1384, 17:32 عصر
اگر منظور شما اینه که کاربر میتونه خارج از برنامه شما(مثلا ftp) بانک رو دستکاری کنه، باید بگم که اگر به تصویر مربوطه توجه می کردین شما سه تا سطح اختیار می تونید تعریف کنید.
1-کاربر (public)
-2سطح گروهی (group)
3-سطح صاحب سایت(owner)

تنها کاری که باید انجام بدید اجازه دادن به سطح owner است.
در ضمن بهتر است اجازه ورود بینام(anonymous) از ftp را غیر فعال کنید (از کنترل پانل سایت در صورت وجود).
پس از این مراحل باید به فکر امنیت برنامه خود باشید.

mhjb
سه شنبه 22 شهریور 1384, 18:53 عصر
من خودم یه سرور دارم و روش IIS نصبه و از این چیزها خیلی خوب سر در میارم. اما همینطور که قبلا گفتم شما دو کار بیشتر نمی‌توانید بکنید یا اینکه پرمیژن رایت بدین یا ندین که اگر بدین هر کسی که به FTP لاگین کنه می‌تونه فایل رو تغییر بده و اگر ندین برنامه کار نمی‌کنه. فکر می‌کنم خیلی واضح باشه.

SalarSoft
پنج شنبه 24 شهریور 1384, 11:42 صبح
من خودم یه سرور دارم و روش IIS نصبه و از این چیزها خیلی خوب سر در میارم.
!!!!!!

شما دو کار بیشتر نمی‌توانید بکنید یا اینکه پرمیژن رایت بدین یا ندین که اگر بدین هر کسی که به FTP لاگین کنه می‌تونه فایل رو تغییر بده
!!!!!!
هیچ کاربری در صورت غیر فعال بودن اکاینت anonymous نمی تونه وارد سایت بشه مگر پاسورد داشته باشه.

بهتر است اجازه ورود بینام(anonymous) از ftp را غیر فعال کنید (از کنترل پانل سایت در صورت وجود).

mhjb
پنج شنبه 24 شهریور 1384, 14:46 عصر
اخه مشکل من با یوزرهایی هستند که پسورد دارند. نمی‌دونم این و به چه زبونی باید بگم. در ضمن اصلا هم ربطی به FTP نداشت ولی بحث بیخود و بیجهت به اینجاها کشیده شد. من خودم اعلام کردم که یه مقاله تو سایت مایکروسافت پیدا کردم که گفته بود کاریش نمیشه کرد.

Naficy
پنج شنبه 24 شهریور 1384, 16:59 عصر
یه مقاله تو سایتش پیدا کردم که اونجا گفته بود برای اینکه Jet بتونه بهش وصل بشه باید پرمیژن Write رو حتما بهش بدین. مسخره است نه!!!!!
بد نیست آدرس اون مقاله رو بذارین اینجا، تا بقیه هم بدونن.
ضمنا بله دیگه. "اکسس" "مال" "شبکه" "نیست". (هنگام خواندن روی هر کلمه تاکید کنید!!)

mhjb
شنبه 26 شهریور 1384, 18:25 عصر
آخه اونو ذخیره نکردم. توی سایتش search کردم وقتی پیدا کردم و فهمیدم چاره‌ای نیست اینقدر اعصابم خورد شد که فکر نمی‌کردم به درد بخوره. ضمنا منظورتان هم از (هنگام خواندن روی هر کلمه تاکید کنید!!) نفهمیدم.

Naficy
یک شنبه 27 شهریور 1384, 13:57 عصر
اون مال جمله آخری (اکسس مال شبکه نیست) بود! منظورم اینه که درسته که مسخره س، ولی خب برای اینکار ساخته نشده دیگه...!