به تمامی کاربران دارای هر نوع مدال پنل رایگان پیامک اهداء می گردد . لذا کاربران دارای مدال می توانند با کد تخفیف medals ، به صورت رایگان ثبت نام نمایند .

انجمن تخصصی اکسس

جامع ترین انجمن تخصصی اکسس در خانه اکسس ایران

hamid-nice
hamid-nice
آفلاین
0
با سلام چطور می توان بوسیله یک دکمه در یک فرم در یک فایل اکسس یک فرم در فایل اکسس دیگری را که دارای پسورد 123 هست در حالت runtime باز کرد ؟ با تشکر فراوان
تشکر ها

پاسخ پذیرفته شده

hamid-nice
hamid-nice
آفلاین
پنج شنبه 18 - مهر - 1392 21:35:09 - #لینک دائمی
0
با سلام و تشکر از همکاری خوبتان
1- مشکل پرش برنامه اکسس که ابتدا نمایش و سپس hide می شود نیز برطرف شد
2- مشکل ناتوانی در استفاده از VbHide در دستور Shell هم برطرف شد و اینک به خوبی می توان از آن استفاده کرد (البته هنوز از vbMinimize نمی توان استفاده کرد زیرا راست کلیک با آن فعال نمی شود )
3- فایل Dummy را دیگر بوسیله برنامه تولید نمی کنیم بلکه آنرا در درایو D قرار داده ایم زیرا باید ماکروی autoexec را در آن قرار دهیم

توجه :

از این روش برای باز کردن فایلهای mdb , accdb , accdr نیز می توان استفاده کرد

فایل زیر با اصلاحات فوق در ضمیمه قرار داده شده است

موفق باشید
پاسخ به درستی کمینه شد نمایش
پاسخ ها (16)
  • پاسخ پذیرفته شده

    rezr
    rezr
    آفلاین
    چهارشنبه 12 - خرداد - 1395 11:35:33 - #لینک دائمی
    0
    با سلام و تشکر
    متاسفانه در این روش اشکلاتی در باز کردن گزارش رخ می دهد و سیستم هنگ می کند در خصوص باز کردن فرمها هم سرعت سیستم کمتر می شود. لطفاً بررسی فرمایید.
    با تشکر
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    پنج شنبه 24 - بهمن - 1392 13:11:16 - #لینک دائمی
    0
    با سلام
    از اطلاع رسانی تون بسیار سپاسگذار هستیم .
    پیروز و سربلند
    کاویان
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    چهارشنبه 23 - بهمن - 1392 11:14:52 - #لینک دائمی
    0
    در پستهای قبل گفته بودم که اگر در سایت میکروسافت به نتیجه در مورد Vbminimize رسیدم به اطلاع می رسانم که خیلی سرو کله زدیم اما به نتیجه نرسیدیم و موضوع خاتمه یافت
    موفق باشید
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    شنبه 27 - مهر - 1392 22:57:00 - #لینک دائمی
    1
    با سلام
    ضمن سپاس از زحمات بی دریغ جنابعالی پیشنهاد می شود که در صورتی که مورد برای توسعه در این تاپیک نمی بینید ، پست قبلی را به عنوان پاسخ مورد تایید قرار دهید .
    در ضمن
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    یکشنبه 07 - مهر - 1392 21:04:45 - #لینک دائمی
    0
    با سلام
    می تونید عملیات Hide کردن اکسس و مینیمم کردن سایر پنجره ها رو به درون فایلی که قرار است اجرا شود منتقل کنید . تابع مورد نیاز اضافه گردیده است .
    نکته جالب این است که هنگامی که فایل را به صورت runtime باز می کنید استفاده از این توابع در خود فرم اصلی مثمر ثمر نبوده و بایستی حتما از طریق ماکروی autoexec استفاده شود تا راست کلیک فعال شود .
    دستور minimizeall رو در ماکروی autoexec در صورتی که احساس می کنید مشکل ساز می شود می توانید حذف کنید .
    فایل رو مانند پست های قبل در درایو D کپی کنید .
    البته در دستور shell نیز از vbNormalFocus به جای موارد بالا استفاده کنید .
    اگر بحث پرش برنامه اکسس که ابتدا نمایش و سپس hide می شود رو بتونیم ازش چشم پوشی کنیم یا یه طور دیگه ای حلش کنیم فکر می کنم این تاپیک به هدف خودش بسیار نزدیک شده است .

    با سپاس
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    یکشنبه 07 - مهر - 1392 19:48:13 - #لینک دائمی
    0
    با سلام
    با شخصی که راه حل فوق را در سایت مایکروسافت ارائه داده بود مکاتبه کردم و ایشان ابراز داشتن که در حال حاضر سرشان بسیار شلوغ است و تاکنون پاسخی نداده اند
    اما من بررسی هایی که انجام دادم متوجه شدم که این اشکال زمانی که در دستور shell یی که بکاررفته از VbMinimize یا VbHide یا کلا چیزی در آن قسمت ننویسیم رخ می دهد و اگر از سایر گزینه ها استفاده کنیم راست کلیک فعال خواهد شد و مشکلی وجود ندارد
    اما علت این مساله را نفهمیدم لطفا شما نیز بررسی کنید که راهی برای فعال شدن مخصوصا در حالت استفاده از Vbminimize ها هست یا نه ؟ و اینکه اصلا علت چیست ؟شاید زودتر به نتیجه رسیدیم
    با تشکر
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    پنج شنبه 04 - مهر - 1392 06:47:17 - #لینک دائمی
    0
    با سلام
    از نظر لطفي كه نسبت به من داريد ممنون .
    منتظر پاسخ مناسب شما هستم .
    با تشكر
    كاويان
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    شنبه 30 - شهریور - 1392 18:00:32 - #لینک دائمی
    0
    با سلام
    من هم به نوبه خود از زحمات و پی گیری جنابعالی دربررسی سایتهای مختلف و یا همچنین سعی در ابداع راهکارهایی برای حل سوالاتی که مطرح می شود متشکرم
    از تذکر به جای شما برای وجود این مشکل ممنونم و آنرا در سایت مایکروسافت مطرح کردم و در صورتی که پاسخ مناسبی را بدست آوردم در اینجا نیز قرار خواهم داد
    موفق باشید
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    پنج شنبه 28 - شهریور - 1392 11:00:52 - #لینک دائمی
    0
    با سلام
    ضمن ستایش تلاش مستمر شما برای رسیدن به بهترین راه حل از طریق سایت های متفاوت ، پاسخ سایت مایکروسافت که در پاسخ به سوال شما ارائه شده است برای اطلاع سایر دوستان دراینجا قرار داده شده است .


    Private Sub Command43_Click()
    Call CreateDummyfile
    StartPasswordedDatabaseRuntime "D:\sa.accdr", 123
    End Sub

    Sub StartPasswordedDatabaseRuntime( _
    strPathToDatabase As String, _
    Optional strPassword As String, _
    Optional strPathToRuntime As String, _
    Optional blnQuit As Boolean)
    ' Start a runtime database that has a database password.
    Dim appRT As Access.Application
    Dim strPathToDummy As String
    Dim blnStillOpen As Boolean
    Const Q As String = """"
    If Len(strPassword) = 0 Then
    strPassword = InputBox("Please enter password:")
    End If
    If Len(strPathToRuntime) = 0 Then
    strPathToRuntime = SysCmd(acSysCmdAccessDir) & "msaccess.exe"
    End If
    strPathToDummy = CurrentProject.path & "\Dummy.accdb"
    Shell _
    Q & strPathToRuntime & Q & " " & Q & strPathToDummy & Q & " /runtime", vbMinimizedFocus
    Set appRT = GetObject(strPathToDummy)
    With appRT
    .CloseCurrentDatabase
    .OpenCurrentDatabase strPathToDatabase, , strPassword
    End With
    On Error Resume Next
    blnStillOpen = True
    Do While blnStillOpen
    DoEvents
    Err.Clear
    If appRT Is Nothing Then
    blnStillOpen = False
    ElseIf Len(appRT.CurrentProject.Path) = 0 Then
    blnStillOpen = False
    End If
    If Err.Number <> 0 Then
    blnStillOpen = False
    End If
    Loop
    If blnQuit Then
    Application.Quit ' if we're done here.
    End If
    End Sub

    Private Sub CreateDummyfile()
    Dim obj As Object
    Set obj = CreateObject("access.application")
    If Dir("D:\Dummy.accdb") = "" Then
    obj.NewCurrentDatabase ("D:\Dummy.accdb")
    End If
    End Sub


    لینک تاپیک مطرح شده در سایت مایکروسافت نیز برای استفاده سایر کاربران در زیر آورده شده است .

    http://answers.microsoft.com/en-us/office/forum/office_2010-access/open-accdr-file-protected-with-database-password/0c363087-577e-4888-a970-d2a67276bae5

    تنها مشکل باقیمانده غیر فعال بودن منوی راست کلیک در این حالت می باشد که حتی با استفاده از امکانات اکسس 2003 نیز تاکنون محقق نشده که امیدواریم هر چه زودتر پاسخ داده شود . همچنین پیشنهاد می گردد در همان تاپیکی که در سایت مایکروسافت مطرح کردید این مورد راست کلیک را هم مطرح نمایید .
    همچنین فایل این روش نیز تهیه و پیوست گردیده است .
    فایل ها را بعد از باز کردن از حالت فشرده به درایو D منتقل نموده و فایل open another را اجرا نمایید.

    پیروز و سربلند
    کاویان
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    پنج شنبه 14 - شهریور - 1392 22:19:34 - #لینک دائمی
    0
    با سلام و تشکر از زحمتی که برای پاسخها می کشید و نمونه و راهکار خوبتان در پست قبل
    اما 2 تا سوال دیگری دارم :
    1-وقتی از دستور OpenCurrentDatabase برای باز کردن فایل دیگری استفاده می کنیم ، برای مخفی کردن پنجره اصلی اکسس هنگام باز شدن فایل مورد نظر دیگر ، به جز دستورات api چه روشهاییی را می شناسید ؟
    2- در فایل ضمیمه زیر از دستورات Api استفاده شده است :
    نکتاتی وجود دارد به قرار زیر :
    الف : اگر کد خط apiShowWindow .hWndAccessApp, 2 را حذف کنیم پنجره دیتابیس هنگام باز شدن مخفی می شود ولی اگر خوب دقت کنیم یک پرش یا چمک زده شده ولی در صورتی که این کد خط را بنویسیم این حالت به خوبی از بین می رود
    اما وقتی این کد خط را می نویسیم یک نقیصه ای ایجاد می شود که منوی راست کلیک ساخته شده در فرم باز شده دیگر عمل نمی کند
    چطور می توان این نقص را در هنگام حفظ کد خط فوق برطرف نمود ؟
    در ضمیمه زیر فایل 2test.mdb را در درایو D قرار دهید با زدن command0 در form1 که در فایل
    Database (5).mdb تعبیه شده فرم مورد نظر در فایل 2test.mdb باز می شود که راست کلیک تعبیه شده در آن کار نمی کند!
    با تشکر

    اگر نمونه هم بگذارید که خیلی ممنون می شم
    ضمنا یک قابلیت در قسمت ویرایش ساییتان بذارید که وقتی مثل الان دوبار فایلی اشتباها ضمیمه می شود را بتوانیم حذف و اصلاح کنیم
    با تشکر
    پیوست ها:
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    جمعه 01 - شهریور - 1392 21:25:42 - #لینک دائمی
    0
    با سلام
    در خصوص مطلب 1 که متاسفانه قبل از مطالعه من توسط شما حذف گردیده ، ذکر این نکته لازم است که اشاره به پست های حذف شده درپست های بعدی ، سایر کاربران را سردرگم نموده و بهتر است که درصورتی که توضیحی برای یک پست لازم است ، بدون حذف یا ویرایش آن پست ، در پست بعدی آورده شود .
    متاسفانه امکان بازنمودن فایل اکسس دارای کلمه عبور از طریق خط فرمان بدون تایپ کلمه عبور به نوشته مایکروسافت امکان پذیر نیست .

    نمونه این تاپیک در سایت مایکروسافت:
    http://answers.microsoft.com/en-us/office/forum/office_2007-access/open-password-protected-access-database-with-a/6f62ec27-a7e4-4102-9df6-4071ca4039ff


    مقاله مربوط به این تاپیک در سایت مایکروسافت:
    http://support.microsoft.com/kb/292302


    احتمالا به دلایل امنیتی این سویچ پیش بینی نشده است زیرا با یک فایل TXT شامل فرهنگ لغت و ... می توانستیم به راحتی کلمه عبور اکثر فایلهای اکسس را هک نماییم . هر چند بعدها روش های ساده تری برای انجام این کار بوجود آمد .

    با توجه به شرایط موجود برنامه ، می توان دو راه حل برای انجام این کار علاوه بر سه راه حل اول که در واقع هر سه ، یک راه می باشند ( باز کردن فایل از طریق کد vba ) ارائه داد :
    راه حل اول : همان است که در در پست های قبلی ذکر گردید .
    در خصوص نقص شماره 1 ، باز کردن فایل در حالت انفرادی می توان سویچ /excl را حذف نمود تا برنامه دراین حالت اشتراکی اجرا شود .
    البته مزیت این روش باز کردن ، این بود که شما می توانستید در رویداد on open از فرم مقصد که قرار است باز شود این کلمه عبور را مجددا تنظیم نمایید و با این روش نقص شماره 2 را برطرف کنید .
    به عبارت بهتر نقص یک و دو با هم برطرف نمی شود . ولی می توان نقص یک را به این روش برطرف نمود :
    باsplit کردن پایگاه داده مقصد قسمت front end آنرا به صورت client درهرکامپیوتر کپی کرد تا اجرا به صورت exclusive ، مشکلی را به وجود نیاورد و قسمت backend آن را دریک آدرس share به اشتراک گذاشت و با برطرف کردن نقص دو به روش ذکرشده در بالا به هدف تاپیک رسید .
    راه حل دوم : درصورتی امنیت برنامه را به روشی غیر ازmde یاaccde کردن فراهم نموده اید ، دراین روش می توان گونه ای عمل کرد که با زدن دکمه اجرا مراحل زیر انجام شود :
    1- clear کردن کلمه عبور
    2- Import کردن فرم مد نظرخود را به درون برنامه از فایل مقصد
    3- تنظیم مجدد کلمه عبور
    4- باز کردن فرم Import شده
    5- بستن فرم import شده بعد از اتمام کار و حذف آن توسط کد .
    کد اصلی تنظیم کلمه عبور از طریق VBA را می توانید در لینک زیر مشاهده نمایید .

    http://msdn.microsoft.com/en-us/library/office/aa141813%28v=office.10%29.aspx

    در فایل پیوست سعی شده است که راه حل اول را با رفع نقیصه های آن به نحوه ای که شرح داده شد در قالب سه فایل پیاده سازی نماید . ) کلیه کلمه های عبور 123 می باشد و فولدر open_another_file بایستی در درایو D باشد . ) ( بدون نیاز به اضافه کردن رفرنس DAO )

    در پایان بابت تاخیردر ارسال پاسخ به دلیل مشغله کاری پوزش می طلبم .
    پیروز و سربلند
    کاویان
    پیوست ها:
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    یکشنبه 27 - مرداد - 1392 18:55:57 - #لینک دائمی
    0
    با سلام
    مطلب 1 را در پست قبل حذف کردم زیرا خیلی درست و مفید نبود علاوه بر سوالات پست قبل مسایلی را نیز در زیر مطرح میکنم :

    پس از بررسی های زیاد نقائص مهمی را که در روش 4 دیدم در زیر می آورم تا انشالله راهکارهایی را دوستان ارایه دهند و به نتیجه مطلوبی برسیم:
    1- دستورات ارایه شده فایل اکسس Database10 را در حالت Exlusive باز میکند تا بتواند پسورد را تغییر دهد که این مطلوب نیست و می خواهیم که فایل مذکور در حالت share باز شود
    2- وقتی فایل Database10 را باز می کند تا زمانی که فرم را نبسته ایم فایل Database10 بدون پسورد می شود و اگر کاربر در همان حالت یک کپی از فایل Database10 بگیرد فایلی بدون رمز را بدست می آورد ( البته اگر فرم را ببندیم این فایل دوباره پسورد دار میشود ولی چه فایده !)

    آیا می شود این توابع را طوری تغییر داد که اصلا پسورد را تغییر ندهد بلکه فقط فایل Database10 را که پسورد دارد ، باز کند تا هدف این تاپیک مهیا گردد؟

    با تشکر منتظر پاسختان هستم
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    یکشنبه 27 - مرداد - 1392 11:47:36 - #لینک دائمی
    0
    با سلام
    دوست گرامی
    2- ضمن تشکر آیا امکان دارد که تابعی را که تعریف نمودید با دستورات اکسس باشد به طوریکه نیاز به اضافه کردن ریفرنس DAO نباشد ؟
    همچنین از این که لینک را نیز در سایت برنامه نویس گذاشتید تا آنها نیز از این مساله بهره مند شوند ممنونم
    3- اگر این روش را از سایت خاصی آوردید ممنون میشم که لینک آن منبع را قرار دهید
    با تشکر فراوان
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    جمعه 25 - مرداد - 1392 19:07:18 - #لینک دائمی
    0
    با سلام
    ضمن عرض پوزش بابت تاخیر ، راه حل چهارمی با یک روش غیر متعارف در فایل فوق قرارداده شد .
    روش انجام کار معلق کردن مقطعی کلمه عبور در پایگاه داده مقصد می باشد که بعد از باز کردن و بستن آن دوباره همان کمله عبور برای آن فعال می گردد .
    تنها راه حل یافت شده برای اجرا در حالت runtime ، اجرا از طریق خط فرمان بود که کلمه عبور مانع انجام این کار بود لذا از این روش استفاده شد .
    اما با وجود توابعی که پنجره اکسس را به کلی مخفی می کند ، نیازی به اجرا در حالت runtime نمی باشد چرا که runtime آنچنان امنیتی برای فایل ما به وجود نمی آورد . و بیشتر برای این طراحی شده که کاربرانی که حاضر نیستند اکسس را برای طراحی خریداری نمایند بتوانند فایلهای اکسسی را که قبلا طراحی شده اند ، اجرا نمایند .
    با تشکر
    کاویان
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    دوشنبه 21 - مرداد - 1392 14:07:15 - #لینک دائمی
    0
    با سلام دوست گرامی
    درست است آن تاپیک در سایت برنامه نویس توسط اینجانب ایجاد شده است
    اما موضوع سوالی که اینجا مطرح کردم کمی تفاوت دارد و آن هم مربوط به اجرا شدن فایل Database10 که در فایل ضمیمه هست در حالت runtime هست که هنوز به نتیجه مطلوبی نرسیده ام
    همانطور که در آن تاپیک هم عنوان کردم استفاده از دستور sendkeys را برای این منظور آنهم به صورت خام آن اصلا صلاح نمی دانم همانطور که شما هم همین نظر را ابراز فرمودید

    بنابراین خواستم این سوال را در سایت شما مطرح کنم تا با استفاده از توانمندیهای شما عزیزان ، انشالله نتیجه حاصل شود
    منتظر پاسختان هستم
    با تشکر
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    دوشنبه 21 - مرداد - 1392 09:21:39 - #لینک دائمی
    0
    با سلام
    بحث مفصلی در وب سایت برنامه نویس احتمالا توسط جنابعالی راجع به این موضوع انجام شده است که در آدرس آن برای اطلاع سایر در زیر آورده شده است :
    http://barnamenevis.org/showthread.php?390404
    که در پایان بحث ، سه روش که تا حدود زیادی با هم مشابه هستند در فایل پیوست آورده شده است .
    البته فایل database10 بایستی در در ریشه درایو D قرارگیرد .
    روش چهارم که استفاده از تابع sendkeys می باشد به هیچ وجه توصیه نمی گردد زیرا در بهترین شرایط کلمه عبور توسط برخی از نرم افزار های « جاسوسی صفحه کلید » قابل استخراج می باشد .
    در صورتی که در سه روش نتیجه گیری شده مشکلی وجود دارد عنوان بفرمایید تا بررسی شود .
    با تشکر
    کاویان
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
پاسخ شما

کدام را میپسندید؟

مایکروسافت اکسس 64 بیت - 66.7%
مایکروسافت اکسس 32 بیت - 16.7%
مایکروسافت اکسس 2007 - 16.7%

كل آرا: 6
اين نظرسنجي به پايان رسيده است on: 19 مارس 2017 - 00:00

عضویت در خبرنامه

با عضویت در خبرنامه آخرین مطالب سایت را در ایمیل خود دریافت نمایید.
از عضویت شما در خبرنامه متشکریم.