بن بست در پروژه اکسلی من (میگن ناامیدی = شکست) کمکم کنید نشکنم

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • sajjadstr

    • 2016/08/14
    • 24
    • 35.00

    [حل شده] بن بست در پروژه اکسلی من (میگن ناامیدی = شکست) کمکم کنید نشکنم

    با عرض سلام
    دوستان عزیز در صورتی که قادر ب پاسخگویی هستید ممنون میشم به سوالاتم جواب بدید به بن بست خورده پروژه ام
    کل پروژه ام بخاطر همین موضوع خوابیده نمی خوام نا امید شم مطمئنم باید راهی باشه
    1. آیا بدون اینکه یک فایل ذخیره شده اکسل (فایل بسته و اجرا نشده) را باز کنیم امکان تغییر در آن از طریق فایل اکسلی دیگر وجود دارد ؟
    آیا فقط میتوان از فایل بسته با دادن مسیر ارجاع شده اطلاعات واکشی کرد ؟
    -------------------------------------------------------------------------------------------------------------------------------------------------
    2. با طرح مثال سوال دوم رو مرتبط با سوال اول می پرسم فرض کنید دوتا فایل اکسل داریم فایل A , فایل B قراره دونفر که هر کدام یک نسخه از فایل A را دارند جداگانه و مستقل با فایل A کار کنند اما فایل B برای هر دو مشترک و Share شده است ما نیاز داریم تا هر کاربر به محض کار با فایل B به صورت بلادرنگ و فوری فایل را لحظه ای استفاده کرده و ببندد تا به خطای Read Only بودن فایل مواجه نشند و تغییرات هم سریعا لحظه ای روی B اعمال بشه و فایل بسته شه

    * نکته و توضیح کاربلادرنگ و فوری ، کاربران در فایل B: یک ستون را با عنوان مثلا A1=1111 در فایل B نظر بگیرید کاربر 1 یا 2 هر کدام نیاز دارند یک واحد به A1 اضافه کنند و در سطر بعدی A2 نتیجه رو بریزند مثلا A2=1112 و بعد همینطور A3, A4 , ... به درخواست کاربران 1 و 2 یک واحد به سطر آخر اضافه و درسطر بعدی مقدار جدید رو بریزند و آخرین کد رو درسلولی از فایل A خودشان فراخوانی کنند
    به عبارتی دیگر و یا در واقع فایل B مانند یک database یا جعبه کد عمل می کند که به در خواست کاربران 1و 2 کد جدید تولید می کند و سپس به کاربران هر کدام با فایل A خودشان آخرین کد تولید شده رو از B پیدا می کنند تا بتوانند در خواست های کد جدید کنند و تغییرات رو در B اعمال کنند مشکل هم همینه که همزمان نمیتونند B رو باز کنند و اصلا معلوم نیست میتونند روی فایل B تغییر ایجاد کنند یا نه

    هر کجا ابهامی باشه مجددا توضیح بیشتر میدم ممنون
  • hadi1980

    • 2019/01/07
    • 237
    • 86.00

    #2
    سلام
    اين که اينقدر نااميدي نداره
    خب خيلي ساده و راحت بنظر مياد
    با اين روش که هر کاربر که ميتونند بيش از دو نفر هم باشند موقعي که اراده ميکنند فايلشون که داره روي اون کار ميشه رو روي فايل اصلي رونويسي کنند
    بعبارتي همش بايد همه کاربرها روي فضاي مجازي کار کنند و فقط موقع اراده و بصورت لحظه اي يه سر به فايل واقعي و حقيقي که اصليه بزنند
    همش همين و با چند خط برنامه اوکي بنظر مياد
    البته فکر کنم نفهميديد چي گفتم چون سوالتون رو به زبان جواب دوباره نويسي کردم
    اگه فهميديد که بهتر وگرنه بگيد بيشتر توضيح بدم

    کامنت

    • sajjadstr

      • 2016/08/14
      • 24
      • 35.00

      #3
      دوست عزیز درسته حرف شما
      ببینین هر شخصی که فایل B رو باز کنه افراد بعدی براشون read only باز میشه
      مثلا اگه همزمان B باز کنن نفر اول از کد 1111 استفاده کنه نفر دوم نمیفهمه که نفر اول 1111 رو استفاده کرده نفر اول و تغییرات رو آنی نمی بینه در نتیجه تداخل پیش میاد و باید رو نویسی بشه
      محدودیت اینجاست نباید دو نفر از یک کد استفاده کنن باید هر دو نفر مکمل هم کار کنن
      کل پروژه ام با همین مسئله ساده گیر کرده و متوقف شده
      البته نمیدونم راهی هست هر کاربر بدون باز کردن فایل B تغییر بده

      کامنت

      • hadi1980

        • 2019/01/07
        • 237
        • 86.00

        #4
        سلام مجدد
        نه اشتباه نکن هيچکدوم نبايد واقعا فايل اصلي رو باز کنند
        فکر کنم مثلا اينجوري بشه
        که شما بايد يه کد چند خطي تو event open براي فايل اصلي بنويسي که به محض بازشدن يه save as توي دستکتاپ کاربر بگيره و فايل اصلي بسته بشه و اينجوري کاربر فقط فکر کنه که فايل اصلي رو بازکرده
        حالا هرکاري ميخواد روي اون انجام ميده و درحاليکه فايل اصلي سرجاي اصلي بسته و دست نخورده هست
        به محض ذخيره هم بايد قبل از close فايل رو مجدد ببره روي محل اصلي کپي کنه
        براي احتمال خيلي کمي که ممکنه همزمان دو نفر در يه لحظه اقدام به ذخيره کنن هم از دستور on error استفاده کنيد تا اينقدر تلاش کنه تا ذخيره بشه
        با توجه به سطح اکسل شما ديگه بنظرم خيلي زيادي هم توضيح دادم
        راستي اينا همش فرضيه بود و بايد تست بشه
        موفق باشي
        هادي

        کامنت

        • sajjadstr

          • 2016/08/14
          • 24
          • 35.00

          #5
          دوست عزیز با تشکر خیلی لطف کردید بله تقریبا متوجهش شدم توضیحات شما ذهنیتم رو باز کرد
          همیچین کدی هم دوست عزیزمون iranweld تو یه پست دیگه که باید تستش کنم تو پروژه ام نوشت فکر کنم فهمیدم چکار کنم
          واقعا ممنون
          کد PHP:
          Private Sub CommandButton1_Click()

          Dim directory As StringfileName As Stringsheet As Worksheetxx As Stringz1 As Integer


          Application
          .ScreenUpdating False

          Application
          .DisplayAlerts False

          directory 
          "C:\test\"

          fileName = Dir(directory & "
          test.xl??")

                  
              Workbooks.Open (directory & fileName)
              
              For Each sheet In Workbooks(fileName).Worksheets
              
              If sheet.Name = "
          Sheet1" Then
              
              z1 = sheet.Cells(Rows.Count, "
          A").End(xlUp).Row + 1
                         
              sheet.Cells(z1, 1).Value = z1

              
              End If
              
                  
              Next
              
              Workbooks(fileName).Save
              
              Workbooks(fileName).Close
              
              Range("
          A3") = z1
              
          Application.DisplayAlerts = True

          Application.ScreenUpdating = True

          End Sub 
          -----------------------------------------------------------------------------
          واقعا همیشه راهی هست... بن بست معنایی ندارد

          کامنت

          چند لحظه..