PDA

View Full Version : سوال: گنجایش ایده ال Access



RezaS_1354
یک شنبه 20 تیر 1395, 03:02 صبح
سلام خدمت دوستان گرامی
یک سوال داشتم محبت کنید اگر کسی تجربه داشته راهنمایی بفرمایید
من از پایگاه داده اکسس استفاده میکنم و امروز متوجه شدم که نزدیک 2000 رکورد در یک تیبل خاص بارها و بارها تکرار میشه مثل عملیات ریاضی توان . یعنی در اول هر فصل سال ، 2000 تا رکورد ثبت میشه که در کل سال میشه 4 تا 2000 رکورد یعنی سالی 8000 رکورد . یعنی با دوره مالی که فصل به فصل هست رکوردها جدید و تمام این 2000 رکورد کالا با مقادیر مختلف مانند مبلغ خرید کالا و فروش همون کالا و .و سایر موارد .. باید جدید ثبت و بایگانی شود و برای همین مرتبا تکرار میشه و ظاهرا امکان join ثابت نیست چون اگه بفرض خود 2000 کالا هم join بشه مقادیرش که دیگه ثابت نیست و باید هر فصل ثبت جدید انجام شه ، نمیدونم شایدم بشه و مشکلی پیش نیاد من که بلد نیستم یا هر فصل یه جدول جدید اونم یهو بعد از 10 سال 100 تا تیبل ، دیگه چه شود . حالا سوالم اینه که در حالت ایده ال یک تیبل تا چند هزار رکورد رو میتونه نهایتا ساپورت کنه که خیلی محسوس نشون نده و برای بروز اوری یا refresh یا جستجو گیر نکنه و کند نشه . فقط لازم به ذکر هست که الان به هیچ وجه نمیتونم از sql یا سایر بانکهای اطلاعاتی استفاده کنم چون خیلی مشکلات زیادی در پی داره که مفصله . فقط بفرمایید حجم نگهداری تیبلهای اکسس در حالت حداکثر ، چندتا رکورد است
عذر میخام فقط اگر کسی راه حل بهتری داره دریغ نکنه
ممنون

RezaS_1354
دوشنبه 21 تیر 1395, 01:03 صبح
سلام خدمت استاد واژدی خسته نباشید
من تا بحال تو این چند ساله نمیدونستم مطالب مربوط پایگاه داده و سایر مسایل رو باید جاهای خاص خودش مطرح کرد فکر کنم خیلی ها هم نمیدونند چون او عناوین بالا رو فقط مربوط به اعلان ها و مطالب مهم میدونند که غالبا بعد از جستجوی مطلب مورد نیاز و نیافتن اون یا بهتر بگم وقتی پاسخ خوبی پیدا نکردند تو صفحه جاری و همیگشی که سالهاست بهش عادت کردیم سوالمون رو مینویسیم بهرحال تو همین جا هم سخت بعضی از پاسخها رو دریافت میکنیم دیگه چه برسه به جایی که عادت نداریم. قبل ها خیلی خوب بود هر کسی هرچی میدونست کمک میکرد و وقتی خودش هم سوالی داشت میپرسید سریع جواب میگرفت ولی متاسفانه چند وقتی هست فقط سوال پرسیده میشه خیلی دیر و سخت جواب گرفته میشه و ما مجبوریم به سایتهای دیگر یا سایتهای مرجع با زبانهای غیر فارسی مراجعه کنیم امیدوارم تالار مثل قبل بشه و همکاری ها بیشتر شه انشالله
با تشکر از شما مدیر زحمتکش

isaac23
دوشنبه 21 تیر 1395, 08:00 صبح
با سلام
بارها در اين رابطه بحث شده است علي ايحال محدوديت حداكثر حجم بانك اطلاعات 2 گيگابايت مي باشد. شامل جداول - فرم ها و ...
و ساير محدوديت ها:

Access 2007 Database Limits
Access database (*.mdb or *.accdb) file size 2 gigabytes, including all objects in the database (data, forms, reports, indices, macros, modules, etc.)
Total number of concurrent users 255. Note that the practical limit will likely be lower than this based on database design.
Table Limits
Number of tables This is governed by a limit on the number of objects in the database, which includes tables, forms, reports, queries, etc. The limit on DB objects is 32,768.
Table size 2 gigabytes, less the space needed for system objects
Number of characters in a table name 64
Number of characters in a field name 64
Number of fields in a table 255
Number of open tables 2048 Note that this includes internal tables opened by Access.
Number of characters in a text field 255
Number of characters in a memo field 65,535 when text is entered through the UI
1 gigabyte if text is entered programmatically
Size of an OLE Object field 1 gigabyte
Number of indexes on a table 32
Number of fields in an index or primary key 10
Number of characters in a validation rule 2048
Number of characters in a validation message 255
Number of characters in a record (excluding Memo and OLE Object fields) when the UnicodeCompression property is set to Yes. 4,000
Number of characters in a field property setting 255

In addition, Access applications themselves have a number of limits, including:
Access Database Limits
Number of objects in a database 32,768 Note that this includes tables, forms, reports, queries, macros, modules, indices, and internal objects used by Access.
Number of characters in an object name 64
Number of characters in a password 14
Number of characters in a user name or group name 20
Table Limits
Number of open tables 2048 Note that this includes linked tables as well as local ones, and that the number may be somewhat lower due to internal tables opened by Access.
Query Limits
Number of enforced relationships 32 per table, minus the number of indexes that are on the table for fields or combinations of fields that are not involved in relationships
Number of tables in a query 32
Number of fields in a recordset returned by a query 255
Maximum recordset size 1 gigabyte
Sort limit 255 characters in one or more fields
Number of levels of nested queries 50
Number of characters in a cell in the query design grid 1,024
Number of characters in a parameter in a parameterized query 255
Number of ANDs in a WHERE or HAVING clause 99
Number of characters in a SQL statement Approx 64,000
Form & Report Limits
Number of characters in a label 2,048
Number of characters in a text box 65,535
Form or report width 22 inches (55.87cm)
Section height 22 inches (55.87cm)
Height of all sections, plus section headers in design view. 200 inches (508 cm) Note an actual report can be arbitrarily long once the data has expanded.
Number of levels of nested forms or reports 7
Number of fields or expressions that can be sorted or grouped in a report 10
Number of headers or footers in a report 1 report header / footer
1 page header / footer
10 section headers / footers
Number of printed pages in a report 65.535
Number of controls and sections added over the lifetime of a form / report 754
Number of characters in a SQL statement that serves as the Recordsource or Rowsource property of a form, report, or control. 32,750
Macro & VBA Limits
Number of actions in a macro 999
Number of characters in a condition 255
Number of characters in a comment 255
Number of characters in an Action Argument 255
Number of modules (includes forms and reports with the HasModule property set to True) 1,000

isaac23
دوشنبه 21 تیر 1395, 08:02 صبح
در کل دوست عزیز بهتره از چند بانک اطلاعاتی در برنامت استفاده بشه اینجوری مطمن تر هستش...
اینم بگم من یه نرم افزار حسابداری دارم که از بانک اکسس استفاده شده و الان 8 ساله ازش استفاده میکنم و البته حدود 8 تا بانک داره که هر کدوم کاربرد خودش رو داره ....

منم همیشه این کار رو میکنم هنوز که به مشکلی بر نخوردم تا 1 میلیون رو خودم تست کردم مشکلی نداشت .

موفق باشی

RezaS_1354
سه شنبه 22 تیر 1395, 14:21 عصر
ممنون از شما دوست گرامی isaac23
البته متوجه نشدم منظورتون از چند بانک اطلاعاتی دقیقا چیه اگر منظورتون تعداد تیبل های درون یک بانکه که خوب منم منظورم همینه و مشکل اینجاست که فقط یک تیبل واسش این اتفاق میوفته وگرنه سایر تیبل هام حجم زیادی براش در اینده متصور نیستم بدی کار اونجاست که هر فصل برای 2000 کالا یک قیمت در نظر میگیرند که این قیمت با قیمت فصلهای گذشته و اینده متفاوته و بدتر از همه اینه که اون قبلی هارو هم باید بهش دسترسی سریع داشته باشند و پاک نشه وگرنه هر فصل جدید که تعریف میکردند اون قبلی هارو میریختم بقول شما تو یه بانک دیگه . بخاطر همینه که خیلی نگرانم چون بعدا دیگه هیچ کنترلی روی برنامه ندارم و از همه مهمتر اینکه میترسم بعد از یکی دوسال تو سرچ و ویرایش و سایر عملیات برنامه تاثیر منفی بزاره و کلا برنامه کند شه . حالا سوالم اینه که ان چیزی که میفرمایید چندتا بانک اطلاعاتی یعنی چی ؟ و سوال دوم اینه که ایا این جای امیدواری داره که هروقت برنامه باز میشه کل اون اطلاعات باهم لود نمیشه و فقط اطلاعاتی که ابتدای برنامه ، دوره مالیش رو کاربر تعیین میکنه باز میشه . یعنی فقط یک فصل یا همون 2000 تا کالا رو در هر بار اجرا میتونه ببینه نه همه ی دوره ها ، ایا این میتونه کمکی کنه یا ربطی نداره برنامه به کل حجم اطلاعات نگاه میکنه
با تشکر

isaac23
سه شنبه 22 تیر 1395, 17:50 عصر
در مورد چند بانک اطلاعاتی::؟؟

منظورم اینه که شما یه نرم افزار حسابداری رو در نظر بگیرد خوب

من میام واسه انبار یه دیتابیس درست میکنم و فقط نام کالا ها رو داخلش می ریزم ....
و یه دیتابیس درست می کنم و نام اشخاص رو داخلش می ریزم ....
و یه دیتا بیس واسه خرید و فروش و الا اخر

یعنی هر چیزی دیتابیس خودش رو داشته باشه .....

در مورد سوال دومت.....

نه دیگه نمیاد کل اطلاعات رو بخونه فقط اون 2000 رکوردی که قراره نشون بده رو نشون میده و از سرعت صدرصد میره بالا چون قراره 2000 رکورد رو نشون بده نه تمام اطلاعات رو ....

یه دیتا بیس برات می زارم تقریبا 21250 رکورد داره روش کار بکن متوجه میشی چطوری هستش با سرعت لود و سرچ و چیزای دیگه

isaac23
سه شنبه 22 تیر 1395, 18:05 عصر
راستی دلیلت چی هست چرا از sql استفاده نمیکنی اینجوری خیالت راحتره هستش و مشکلی هم پیش نمیاد برات
ارزش دردسرش رو داره اگه نرم افزارت چیزی خیلی مهمی هست.

RezaS_1354
شنبه 26 تیر 1395, 11:23 صبح
سلام
isaac23 عزیز
اون دیتا بیس رو دیدم دستت درد نکنه مفید بود ولی فکر کنم تو ده دوره یا احیانا 10 ماه دیگه رکوردهای من به همین تعداد 21000 تا میرسه تو یه تیبل . فقط بازم نمیدونم چرا دیتابیس هاتو جدا جدا کردی چه احتیاجی به این کاره وقتی تو یه دیتا بیس میتونی ده ها بلکه بیشتر تیبل درست کنی نمیدونم حتما واجب بوده . اینو به این خاطر میگم که جدا جدا نمودن دیتا بیس کمکی به این قضایا نمیکنه به هرحال برنامه به تیبل ها وابسته و رکورد ها رو نشون میده و اصلا واسش مهم نیست که چند تا دیتا بیس داره . فقط اینطوری فکر کنم کنترل path هاش سختر باشه و تکرار و تکرار ...
ولی بابت اینکه چرا از sql استفاده نمیکنم یکی اینکه باید با برنامه های قبلی شرکت که دیتابیسش رو اکسس مچ باشم و این مسلتزم تغییر همه دیتابیس اون برنامه های قبلی هست که خیلی سخته تو این مدت کم . از همه مهمتر خودت هم بهتر من میدونی که ست اپ کردن و حمل و نقل اکسس خیلی راحتتر از sql و انعطاف بیشتری هم داره مگر اینکه یه جای ثابت از قبل بخای تا سالهای بعدی کار کنی و همه دیتابیس ها رو sql کنی اره اینجوری صد در صد بهتره ولی واسه تکثیر و فروش تیراژ دار نرم افزار اصلا sql چیز خوبی نیست
ولی بهرحال ازت خیلی ممنون و متشکرم

isaac23
یک شنبه 27 تیر 1395, 07:37 صبح
در مورد جدا کردن بانک های اطلاعاتی حالا من بیشتر این عادت رو دارم که واسه هر کاری یه دیتا بیس جداگانه بذارم اینجوری خیالت راحتره....

چرا.....

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

اما اینجوری یه کم خیالم راحتتره که اطاعات به همین راحتی پر نمیشه و از سرعت کم نمیشه .... دردسره زیادی نداره اما به امنیتش می ارزه...

خوشحال شدم کارت راه افتاد ... موفق و پیروز باشی.....

التماس دعا

vbhamed
جمعه 01 مرداد 1395, 00:33 صبح
سلام

اول اینکه مسلما وقتی فقط تغییرات رو ثبت مجدد کنید خیلی بهتره تا اینکه کل کالاها رو مجددا ثبت کنید اینطوری حداقل یه فیلد قیمت یا چند تا فیلد محدود باید هر فصل ثبت بشه نه همه رکوردها
برای اینکار هم یک جدول فرزند برای جدول کالا درست کنید که فیلدهای ParentId و Price و Fasl رو داره شاید هم فیلد Year بعد بهم ارتباطشون بدید و تغییرات قیمت هر فصل رو در اون جدول فرزند یادداشت کنید، خوندنشون هم که با یک Query ساده و فیلتر شده با توجه به سال و فصل قابل انجامه

در مورد چند دیتابیسی راه راحتی هم وجود داره که مدیریتتون هم سخت نشه، چند دیتابیس جدا ایجاد می‌کنید و بهم لینک می‌کنید، اینکار در خود برنامه اکسس قابل انجامه، اینطوری با اینکه جدول ها در چند دیتابیس مختلف هستند ولی برنامه شما همه رو در همون دیتابیس خودتون میبینه انگار تمام جدولها در یک دیتابیس هستن و به این شکل مشکل سرعت و حجم دیتا هم تا حد زیادی حل میشه

isaac23
شنبه 02 مرداد 1395, 08:41 صبح
میشه در مورد این یه کم بیشتر توضیح بدید.؟؟؟؟؟؟؟ نحوه کارش رو بگید و چطوری باید ازش استفاده کرد.

vbhamed
شنبه 02 مرداد 1395, 10:12 صبح
سلام

خیلی راحته
تو اکسس 2003 یا به قول شما فایلهای mdb روی پنجره دیتابیس کلیک راست کنید و گزینه Link Tables رو بزنید و جداول دلخواه رو از دیتابیس دوم به دیتابیس خودتون لینک کنید
تو اکسس 2010 هم تو منوهای بالا گزینه Split Database داره، اول جدول ها رو در بانک فعلی بسازید بعد Split Database رو بزنید

بعدش دیگه فکر کنید یک دیتابیس معمولی دارید، فقط نکته ای که هست اینه که چون لینک با توجه به مسیر دیتابیس ساخته میشه و ممکنه روی سیستم مشتری مسیر فرق کنه میشه با کدنویسی هم ارتباطات رو تصحیح کرد که تو گوگل سرچ کنید نمونه کد هست
راههای دیگه هم هست مثل اینکه رو سیستم مشتری هم مسیرش دقیقا مثل سیستم شما باشه یا کار لینک کردن رو روی سیستم خود مشتری انجام بدین

نمونه ضمیمه شده رو حتما تو درایو C بازگشایی کنید و سپس فایل db1 را باز کنید و ببینید

141616

RezaS_1354
یک شنبه 03 مرداد 1395, 17:31 عصر
با عرض ادب و احترام خدمت استاد حامد
حامد جان ازینکه این اموزش رو دادی بسیار ممنون و سپاسگزار چون خیلی مفید بود و خیلی ها هم بلد نبودن ولی متاسفانه این راه حل واسه اون چیزی که در ابتدا گفتم مشکلی رو حل نمیکنه میدونید چرا ؟ برای اینکه اگه من جدول فرزند هم تعریف کنم به هر حال بازم اون جدول فرزند باید تمام رکوردهای عظیم رو تحمل کنه مگر اینکه واسه هر دوره یه جدول فرزند تعریف کنیم که معمولا اینکار مرسوم و استاندارد نیست چرا که بعد از یه مدت تعداد جدول های اکسس ما بیشتر از تعداد رکوردها میشه چون تعداد فیلدهای جدول مادر در مقایسه با فرزند فقط 2 تا فیلد بیشتر داره که جمعا واسه جدول مادر 6 تا فیلد میشه واسه جدول فرزند 4 تا . حالا به نظر شما ارزش درست کردن جدول مستر و چیلد چقدره ؟؟؟
ممنون

vbhamed
سه شنبه 05 مرداد 1395, 03:31 صبح
سلام

اولا تعداد فیلدهای جدول فرزند و پدر مهم نیست بلکه مهم مقدار اطلاعاتی هستش که تو هر فیلد نوشته میشه و همچنین تعداد رکوردها، مثلا اگر جدول پدر شما فقط فیلد نام کالا رو اضافه تر از جدول فرزند داشته باشه باز هم ارزش داره به جدول پدر و فرزند تقسیم بشه چون نام کالا فیلدی هستش که به نسبه فضای زیادی رو میگیره و تکرارش در هر رکورد درست نیست، جدول فرزند شما هم که تعداد رکورد زیادی داره که فضای مصرفی ضربدر طول فیلد نام کالا میشه و این خیلی بده

در مورد دوره یا سال مالی هم اگر واقعا سال مالی باشه اشکالی نداره و این یک کار مرسوم در حسابداری است، تو حسابداری سنتی هم هر سال یک دفتر معمولا داشتن و آخر سال فقط مانده حسابها به دفتر سال جدید منتقل میشه نه ریز حسابها

اگر تعداد رکوردها خیلی زیاد باشه مثلا در حد چند میلیونی یا میلیاردی خب میشه از امکانات دیتابیس ها استفاده کرد، مثلا Sql Server نسخه های جدیدتر خودش امکان مدیریت دیتاها در چند جدول رو داره و برنامه شما نیاز نیست کاری در این خصوص انجام بده