واضح آرشیو وب فارسی:سایت ریسک: مشکل با اکسس (ثبت روزانه 300 رکورد) rouzbeh_ziafati 30 ارديبهشت 1388, 01:05من برای شرکتی برنامه ای نوشتم و از بانک اکسس برای نگه داری اطلاعات استفاده کردم . در روز تقریبا حدود 300 رکورد در یکی از جدول هام ثبت میشه . بمرور زمان 100% با مشکل مواجه خواهم شد هم بخاطر پایین آمدن سرعت جستجو در بانک هم اینکه اکسس مطمئنا با محدود بودن ثبت تعداد رکورد مواجه است . سوالی که از دوستان دارم اینکه در هر جدول حداکثر در اکسس چند رکورد میشه ثبت کرد ؟ اگر من بخواهم برنامه بطور اتوماتیک در پایان هر سال بانک جدیدی ایجاد کنه و ادامه اطلاعات رو در اون ذخیره کنه آیا راهکاری وجود داره ؟ the_king 30 ارديبهشت 1388, 01:34من برای شرکتی برنامه ای نوشتم و از بانک اکسس برای نگه داری اطلاعات استفاده کردم . در روز تقریبا حدود 300 رکورد در یکی از جدول هام ثبت میشه . بمرور زمان 100% با مشکل مواجه خواهم شد هم بخاطر پایین آمدن سرعت جستجو در بانک هم اینکه اکسس مطمئنا با محدود بودن ثبت تعداد رکورد مواجه است . سوالی که از دوستان دارم اینکه در هر جدول حداکثر در اکسس چند رکورد میشه ثبت کرد ؟ اگر من بخواهم برنامه بطور اتوماتیک در پایان هر سال بانک جدیدی ایجاد کنه و ادامه اطلاعات رو در اون ذخیره کنه آیا راهکاری وجود داره ؟ تعداد رکورد هایی که در هر Table می توان ذخیره کرد محدود نیست (در مستندات اشاره ای به محدودیتی برای تعداد رکورد نشده که احتمالا محدود به مقادیر 31 یا 32 بیتی است، حداقل 2147483648 رکورد) اما به هر حال حجم دیتابیس نبایستی از 2 گیگابایت فراتر رود. Microsoft Access Database برای بانک اطلاعاتی های خیلی حجیم طراحی نشده و قطعا پیش از آنکه به مشکل محدودیت تعداد رکورد ها برسید، کندی عملکرد اش مشکل ساز خواهد شد. اگر بانک اطلاعاتی با نام خاصی در ابتدای برنامه گشوده می شود، قطعا استفاده از تاریخ فعلی در نام بانک اطلاعاتی می تواند مشکل را حل کند. بدین نحو که یک نسخه تهی و بدون رکورد از بانک اطلاعاتی (صرفا شامل جداول تهی) در یک فایلی در کنار برنامه ذخیره شود، مثلا Empty.mdb زمانی که برنامه اجرا می گردد، بر اساس سال کنونی (Year(Now ، مثلا بانک اطلاعاتی "C:Database" & CStr(Year(Now)) & ".mdb" گشوده شود. و اگر چنین فایلی وجود نداشت، یک نسخه از آن فایل بدون رکورد Empty.mdb در این فایل منطبق با سال کنونی کپی شود. Saeed Shahabi 03 تير 1388, 09:32سلام the_king عزیز... آیا ممکنه تنها با نوشتن کد, یک بانک اطلاعاتی اکسس ایجاد کرد؟ اگه پاسخ منفیه ; چطور میشه از یک بانک اطلاعاتی اکسس کپی گرفت؟ ممنون... the_king 03 تير 1388, 10:51سلام the_king عزیز... آیا ممکنه تنها با نوشتن کد, یک بانک اطلاعاتی اکسس ایجاد کرد؟ اگه پاسخ منفیه ; چطور میشه از یک بانک اطلاعاتی اکسس کپی گرفت؟ ممنون... پاسخ مثبته، کد زیر شامل دو تابع است، CreateAccessDatabase یک بانک اطلاعاتی را می سازد و CreateAccessTable یک جدول را در داخل یک بانک اطلاعاتی ایجاد می کند. ابتدا در منوی Project گزینه References را انتخاب کرده و Microsoft DAO Object Library را در لیست پیدا نموده و تیک بزنید. احتمالا چند نسخه متفاوت از آنرا خواهید یافت، فقط آخرین نسخه را اضافه کنید. Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long Private Sub CreateAccessDatabase(ByVal Path As String) Dim db As Database If PathFileExists(Path) = 0 Then Set db = DAO.CreateDatabase(Path, dbLangGeneral, dbVersion30) db.Close End If End Sub Sub CreateAccessTable(ByVal Path As String, ByVal TableName As String, ParamArray Fields() As Variant) Dim table As TableDef Dim db As Database Dim Index As Long Set db = DAO.OpenDatabase(Path, False, False) Set table = db.CreateTableDef(TableName) With table For Index = 0 To UBound(Fields) .Fields.Append .CreateField(Fields(Index), dbText) Next End With db.TableDefs.Append table db.Close End Sub به عنوان مثال کد زیر بانک اطلاعاتی c:a.mdb و سپس جدول People محتوی فیلد های FirstName و LastName را داخل آن می سازد : Dim Path As String Path = "c:a.mdb" CreateAccessDatabase Path CreateAccessTable Path, "People", "FirstName", "LastName" دقت کنید که هر Table تنها یکبار ساخته می شود، تلاش برای ایجاد کردن مجدد آن با خطا روبرو می شود. Saeed Shahabi 07 تير 1388, 11:41سلام به the_king عزیز و ممنون از پاسخهای خوبتون... چطور ممکنه در بانک اکسس ایجاد شده تصاویر رو هم ذخیره کنیم؟ آیا ذخیره تصاویر در msflex هم امکان داره؟ با تشکر... rouzbeh_ziafati 11 تير 1388, 23:15ممنون از راهنمایی هاتون خب من چون با محیط sql آشنایی ندارم از اکسس استفاده کردم . این برنامه که نوشتم و روزانه 300 رکورد ثبت میکنه برنامه سیستم نوبت دهی به ماشین های باری هست . تقریبا روزی 300 بار بارگیری داریم که باید بهشون نوبت بدیم و ساعت و تاریخ و شهر مقصد و نوع بار و اطلاعات دیگه ای در جدول نوبت ثبت بشه . من قصد دارم که آخر هر سال مثلا 100000 هزار رکورد اول جدول نوبت رو از سیستم حذف کنم و در یک بانک دیگه نگه داری کنم . ( از جدول هایی که توی بانک دارم فقط جدول نوبت هست که روزانه اینطور افزایشی پر میشه و بقیه این مشکل رو ندارند) که اون بانک پشتیبان دقیقا مثل بانک فعلی من باشه فقط فرقش در رکوردهای جدول نوبت باشه . اگر بخوام چنین کاری بکنم نیاز هست تا برنامه آخر هر سال یک بانک پشتیبان درست بکنه مثلا با نام شماره سال جاری و تمام جدول های بانک فعلی رو اونجا بسازه و محتویات رو اونجا انتقال بده . «فقط محتویات جدول نوبت رو X تای اولش رو ببره اونجا و از جدول فعلی فقط X تای اول رو حذف کنه .» آیا چنین کاری امکان پذیر هست ؟
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 4407]