برقراری ارتباط بین اطلاعات همانند اکسس ( Relationships )

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

    • 2013/05/25
    • 176

    [حل شده] برقراری ارتباط بین اطلاعات همانند اکسس ( Relationships )

    سلام خدمت تمامی دوستان عزیز

    میخواستم بدونم از چه طریقی میشه ارتباطی همانند فایل پیوست، اما در اکسل برقرار کرد. باتشکر از همه دوستان
    فایل های پیوست شده
  • Ali Parsaei
    مدير تالارتوابع اکسل

    • 2013/11/18
    • 1522
    • 71.67

    #2
    سلام،
    هرچند اکسل نرم افزار با کارايي بانک اطلاعاتي نيست، ولي مي شود با شبيه سازي، در موارد ساده از آن به جاي بانک اطلاعاتي استفاده کرد.
    من معمولا" از هر صفحه به عنوان يک بانک اطلاعات (يعني به جاي يک TABLE اکسس) استفاده مي کنم.
    مثلا" در يک صفحه فقط شماره هاي کدينگ ساختماني را به صورت يکتا و بدون تکرار وارد مي کنيد. (دقيقا" مانند تيبل BC در فايل اکسس شما)
    در صفحه ديگر هم دقيقا" مانند تيبل ديگر فايل اکسس (Rqst) اطلاعات را وارد مي کنيد.
    حالا فقط مي ماند بهره برداري از اطلاعات وارده.
    با کد نويسي vba خيلي کارهاي جذابي مي توان انجام داد، مثلا" يک فرم تشکيل داد و در آن يک کمبوباکس گذاشت و کمبوباکس را به شيت حاوي "کدينگ هاي ساختماني" ارتباط داد
    بعد يک ليست باکس هم گذاشت که برود و در شيت ديگر (يعني Rqst) موارد شامل "کدينگ ساختماني" انتخابي در کمبوبکس ياد شده را پيدا کرده و در خود ليست کند.
    غير از کد نويسي هم احتمالا" بتوان يک کارهايي کرد، ولي در مجموع کار وقت گيري است و بايد ديد پروژه و اطلاعات مورد نظر اصولا" ارزش اين وقت گذاشتن را دارد يا خير؟
    [SIGPIC][/SIGPIC]

    کامنت

    • mobinsaffarpour

      • 2013/05/25
      • 176

      #3
      دوست عزیز من جناب آقای پارسا

      باتشکر از پاسخ سریع جنابعالی

      یک سوال؟ آیا اجرای اینکار از طریق کدنویسی نیز باز هم زمان بر می باشد؟

      من روش دسته بندی کردن بسیار برایم حائز اهمیت می باشد. آیا این کار امکان پذیر است.

      کامنت

      • Ali Parsaei
        مدير تالارتوابع اکسل

        • 2013/11/18
        • 1522
        • 71.67

        #4
        خوب بستگي به اين دارد که چه گزارش هايي از بخواهيد از اطلاعات اوليه استخراج کنيد
        مثلا" من يک موقع يک فايل براي اطلاعات خريداران يک شرکت درست کردم،
        ابتدا يک شماره يکتا براي هر خريدار تخصيص دادم (که نقش همان primary key اکسس را بازي مي کند)
        بعد در صفحه اول اکسل به ترتيب براي هر خريدار شماره يکتا و بعد اطلاعات يکتاي خريدار را درج کردم، مثلا" اسم خريدار و آدرس خريدار و ... اينها اطلاعات يکتا هستند و مثلا" هيچ خريداري دو تا اسم ندارد!
        ولي بعضي اطلاعات يکتا نيستند مثل تلفن، خريدار ممکن است چند تلفن داشته باشد، اين موارد را به ترتيب در صفحات ديگري قرار دادم
        مثلا" صفحه دوم اکسل در ستون اول کد خريدار و در ستون دوم تلفن خريداران را نوشتم
        منتهي اينجا ديگر شماره يکتايي که براي هر خريدار در صفحه اول درج کرده بودم مي توانست چند بار تکرار گردد،
        به عنوان مثال کد 101 براي خريدار اول بود
        در صفحه اول در ستون اول کد 101 و در ستونهاي بعدي به ترتيب نام و آدرس و .... خريدار اول را درج کردم و اين کد 101 در هيچکدام از سطرهاي بعدي براي خريداران ديگر نبايد تکرار مي شد.
        در صفحه دوم در سطر اول در ستون اول کد 101 را نوشتم و در ستون دوم تلفن خريدار اول را
        ولي چون خريدار اول دو تا تلفن داشت دوباره در سطر دوم کد 101 را تکرار کرده و بعد تلفن دوم خريدار اول را نوشتم
        يعني کد 101 در صفحه اول يک بار درج مي شد ولي در صفحه دوم قابل تکرار بود و اين به نوعي بازسازي همان رابطه يک به بينهايت در relashionships بين دو تيبل اکسس است (که در فايل شما هم نمونه اش هست).
        حال کد نويسي به اين صورت انجام مي شود که شما مثلا" توسط يک کمبوبکس يکي از کدهاي يکتاي خريداران را انتخاب مي کنيد (مي شود rowsource کمبوبکس را به ستون اول شيت يک ارتباط داد)، بعد اکسل در شيت اول در ستون اول کد را يافته و سپس اطلاعات متناظر آن در همان سطر را مثلا" در تعدادي تکست باکس به شما برمي گرداند، بعد اکسل دوباره در شيت دو در ستون اول دنبال کد مربوطه گشته و تمام سطرهايي که داراي آن کد مي باشند را پيدا مي کند و اطلاعات متناظر در ستون کناري آنها را به شما باز مي گرداند، منتها اين بار چون ممکن است چندين سطر حاوي کد مربوطه باشند، بايد اطلاعات يافت شده در يک ليست باکس استخراج گردد.
        اميدوارم توضيحاتم زياد گنگ نبوده باشد!
        [SIGPIC][/SIGPIC]

        کامنت

        • mobinsaffarpour

          • 2013/05/25
          • 176

          #5
          شما درست میگید این روش، روش خوبی است اما من نمیخواهم به این شکل عمل کنم. دلیلش هم اینست که تعداد کدینگ های ساختمانی تقریباً 5000 کد بصورت یکتا هستند و اطلاعات زیر مجموعه آنها تقریباً 12000 که این اطلاعات بصورت روز افزون افزایش پیدا میکنند و دلیل دیگر هم اینست که این روش گروه بندی میکنه و خیلی راحتر اطلاعات قابل دسترس هستند

          کامنت

          • s.cheraghi

            • 2011/02/27
            • 311

            #6
            سلام
            با اجازه استاد پارسا
            این فایل با پیوت آماده شده
            تا حدی شبیه فایل شماست
            امیدوارم منظورتون همین باشه
            فایل های پیوست شده
            در یادگیری سیر نشوید :idea:

            برای ارتباط بیشتر به [URL="https://excelpedia.net/"]سایت[/URL] [URL="https://excelpedia.net"][B][COLOR=#008000]ExcelPedia [/COLOR][/B][/URL]سربزنید.
            برگزاری [URL="https://excelpedia.net/excel-ninja/"]دوره های آموزش[/URL] [URL="https://excelpedia.net/what-is-excel/"][B]اکسل [/B][/URL]در تهران
            [URL="https://excelpedia.net/category/excel-functions/"][B]آموزش توابع اکسل[/B][/URL]

            کامنت

            • mobinsaffarpour

              • 2013/05/25
              • 176

              #7
              جناب آقای چراغی

              باتشکر از زحمات بی شائبه جنابعالی . 2 مسئله بسیار مهم در این فایل وجود دارد که بشرح و اولویت زیر بعرض جنابعالی می رسد :

              1 - با توجه به تعداد رکوردهای بسیار کم فایل فوق نسبت به فایل اصلی، عملکرد آن بسیار کند می باشد. ( در فایل اصلی تعداد 12000 رکورد تا کنون وجود دارد، که تعداد رکوردهای آن بصورت روز افزون افزایش پیدا می کند )

              2 - پس از افزودن یک رکورد به شیت شماره 1، پس از مراجعه به کد ساختمانی مربوطه در شیت شماره 2، رکود افزوده شده نمایش داده نمی شود.

              در صورت امکان ترتیبی اتخاذ داده شود تا از طریق vba اینکار صورت گیرد.

              پیشاپیش از دوستان عزیز و خوب بنده آقایان ابوتراب و علی پارسا ، بخصوص جناب آقای چراغی کمال تشکر را دارم.

              کامنت

              • s.cheraghi

                • 2011/02/27
                • 311

                #8
                خواهش میکنم
                برای مسئله به روز رسانی شدن جدول، باید بعد از هر بار اضافه نمودن رکورد، بر روی جدول ایجاد شده کلیک راست کرده و Refresh را بزنید تا رکورد را مشاهده بشه.
                در مورد سرعت فایل (با توجه به اینکه ورژن آفیس شما 2007 هست) ترجیحا از نسخه 2010 به بالا و 64 بیتی استفاده کنین به مراتب سرعت بیشتری خواهید داشت.
                در صورتیکه بخواهیم این فایل را با استفاده از VBA ایجاد کنیم خروجی قطعا متفاوت از پاسخ الان خواهد بود.
                در صورتیکه با تغییر نسخه آفیس همچنان سرعت پایین بود بفرمائید تا فکری به حالش کنیم.
                در یادگیری سیر نشوید :idea:

                برای ارتباط بیشتر به [URL="https://excelpedia.net/"]سایت[/URL] [URL="https://excelpedia.net"][B][COLOR=#008000]ExcelPedia [/COLOR][/B][/URL]سربزنید.
                برگزاری [URL="https://excelpedia.net/excel-ninja/"]دوره های آموزش[/URL] [URL="https://excelpedia.net/what-is-excel/"][B]اکسل [/B][/URL]در تهران
                [URL="https://excelpedia.net/category/excel-functions/"][B]آموزش توابع اکسل[/B][/URL]

                کامنت

                • abootorab

                  • 2014/10/17
                  • 351

                  #9
                  نوشته اصلی توسط mobinsaffarpour
                  سلام خدمت تمامی دوستان عزیز

                  میخواستم بدونم از چه طریقی میشه ارتباطی همانند فایل پیوست، اما در اکسل برقرار کرد. باتشکر از همه دوستان
                  با درود و تشکر از اساتید محترم جناب پارسا و جناب چراغی
                  دوست عزیز با استفاده از vb در فایل نمونه ضمیمه شده تقریبا چیزی که مدنظر شماست شبیه سازی شده است.
                  امیدوارم شما رو به خواستتون نزدیک کرده باشم.
                  اگر سوالی داشتین در خدمتم.
                  فایل های پیوست شده

                  کامنت

                  • mobinsaffarpour

                    • 2013/05/25
                    • 176

                    #10
                    دوست عزیز و خوبم آقای ابوتراب ضمن تشکر فراوان از جنابعالی

                    من نمیخواهم به این شکل عمل کنم دلیلش هم اینست که تعداد کدینگ های ساختمانی تقریباً 5000 کد بصورت یکتا هستند و جستجو بین اطلاعات ضعیف عمل می کند. اگر امکان دارد از روش گروه بندی و از طریق vba استفاده شود بسیار عالی می شود.
                    فایل های پیوست شده

                    کامنت

                    • abootorab

                      • 2014/10/17
                      • 351

                      #11
                      نوشته اصلی توسط mobinsaffarpour
                      دوست عزیز و خوبم آقای ابوتراب ضمن تشکر فراوان از جنابعالی

                      من نمیخواهم به این شکل عمل کنم دلیلش هم اینست که تعداد کدینگ های ساختمانی تقریباً 5000 کد بصورت یکتا هستند و جستجو بین اطلاعات ضعیف عمل می کند. اگر امکان دارد از روش گروه بندی و از طریق vba استفاده شود بسیار عالی می شود.
                      با درود
                      دوست عزیز در هرصورت این تفاوت و مقداری کندی عملکرد در هر کدام از این روشهای پیشنهادی شبیه سازی شده نسبت به فایل اصلی اکسس وجود دارد و شما نباید انتظار داشته باشین که سرعت و نوع عملکرد این روشها دقیقا مانند فایل اکسس باشد، به دلایل مختلف:
                      1. ماهیت اصلی اکسس دیتابیس بوده و قطعا اکسل نمیتونه نقش دیتابیس به اون شکلی که مدنظر شماست ایفا کند، همانطور که در خیلی از موارد اکسس نمیتونه نقش اکسل رو ایفا کند.
                      2. در روشهای پیشنهادی با استفاده از vb و یا موارد دیگر این امر شبیه سازی شده است و این مهم مطمئنا در کاهش سرعت عملکرد نسبت به فایل اکسس تأثیرگذار خواهد بود.
                      3. با افزایش رکوردها و اطلاعات، طبیعی است که load شدن و اجرای عملیات روی داده ها زمان بیشتری خواهد برد، حتی خود فایل اکسس هم از این قضیه مستثنی نیست اما به نسبت اکسل قطعا کمتر.
                      .
                      .
                      .

                      به هر حال تا حدودی کندی سرعت نسبت به فایل اکسس وجود دارد اما به نظر بنده این کاهش سرعت قابل اغماض بوده و مهم نیل به هدف است.
                      در فایلی که در پست قبلی واستون ضمیمه کردم مجددا تست کردم و حدود 5200 کد یونیک و مجموعا حدود 11000 رکود ایجاد نمودم که حدود 4 الی 5 ثانیه بیشتر برای عملیات مربوطه زمان نبرد. (بیشتر این زمان مربوط به عملیات یونیک شدن کدها در لیست کشویی موجود در شیت BC می باشد)
                      همچنین مزیتی که بنده احساس میکنم در این فایل وجود داره اینه که با توجه به تعداد بالای کدینگ ها، قطعا جستجوی یک کدینگ و نمایش رکوردهای مربوط به آن کمی وقت گیر می باشد اما در این فایل با وارد کردن کدینگ مورد نظرتون در ComboBox (لیست کشویی مجود در شیت Rqst) به راحتی و به سرعت به نتیجه مورد نظر خواهید رسید.

                      در نهایت باید عرض کنم که بنده روش مناسب تری رو نتونستم پیدا کنم و امیدوارم سایر دوستان هم در این زمینه شما رو همراهی و یاری کنند.
                      موفق باشین.
                      Last edited by abootorab; 2015/12/05, 10:52.

                      کامنت

                      • mobinsaffarpour

                        • 2013/05/25
                        • 176

                        #12
                        جناب آقای ابوتراب دوست عزیز و خوبم

                        شما همیشه نسبت به بنده لطف دارید. صحبتهای جنابعالی من رو متقاعد کرد.خیلی تشکر میکنم از تمامی زحمات بی شائبه دوستان عزیز و محترمم ( علی پارسا، چراغی، ابوتراب )

                        کامنت

                        چند لحظه..