مدى سعة قاعدة معطيات access
#1
السلام عليكم إخواني الكرام
سوالي هو على مدى استعاب قاعدة بيانات access
علما ان لدي برنامج تسيير مخزون به جداول منها فواتيير منها مبيعات ومشتريات وسلع هذا الأخير الذي يمكنه تخزين صورة لكل سلعة.
01-ماذا لو طالت مدة استعمال البرنامج وكبرت قاعدة البيانات ما مدى استيعابها عند access
02-اخترت access لانه في غالب الأحيان موجود على الحواسيب الأخرى
03- حاولت البحث عن محرك البيانات من نوع آخر مثلا SQLserver لكنني في البرنامج اعتمدت ال access من الأول وكيف لي العودة للأخر.


أفيدونا بارك الله فيكم .
الرد
#2
حجم قاعدة البيانات في أكسس تصل إلى 2 جيجا بايت
أما في Sql server Express تصل إلى 10 جيجا بايت
أما في Sql server تصل إلى 500 تيرابايت

ممكن أن تقلص حجم البيانات وذلك بحفظ صورة السلعة في مجلدات وتحتفظ بمساراتها فقط في قاعدة البيانات
الرد
#3
بارك الله فيك أخي الكاسر على التوضيحات
هلا شرحت لنا كيفية وضع الصورة في مجلد وعمل رابط لها ولو باختصار
الرد
#4
إذا كنت تستخدم Ado
يجب أن يكون لديك حقل في جدول السلعة ولنفرض أن اسمه Image_Path من النوع الحرفي لتخزن فيه مسار الصورة

- قم بوضع مجموعة من صور السلع في مجلد داخل المجلد الرئيسي للبرنامج ولنفرض أن اسمه Pics
- قي الفورم الخاص بإدخال بيانات السلع قم بوضع مكون TOpenDialog وكذلك أضف زر وسمه (إضافة صورة) وأيضا ضع مكون صورة
- قم بإضافة Unit إسمها jpeg في uses باعتبار أن أغلب الصور هي من نوع Jpg
- م بتعريف متغير عام Global وسمه ImgPath من نوع String
- في زر إضافة صورة أكتب الكود التالي

كود :
Var Res : Integer; begin image1.Picture.Bitmap.FreeImage; OpenDialog1.Filter := 'Image files|*.jpg;*.jpeg;*.Png;*.bmp;*.gif;*.tif;*.tiff'; if OpenDialog1.Execute Then begin ImgPath := ExtractFilePath(Application.ExeName)+'pics\'+ExtractFileName(OpenDialog1.FileName); if(OpenDialog1.FileName <> ImgPath) Then begin Res := (MessageDlg('الصورة التى اخترتها ليست موجودة ضمن مجلدالسلع..هل تريد نسخها ؟',mtInformation,[mbYes,mbNo,mbCancel],0)); if Res = mrYes then begin if(CopyFile(PChar(OpenDialog1.FileName), PChar(ImgPath), false)) Then ShowMessage('تمت عملية النسخ') else ShowMessage('فشلت عملية النسخ'); end else if Res = mrNo then ImgPath := OpenDialog1.FileName else if Res = mrCancel then ImgPath := ''; end; if ImgPath <> '' Then image1.Picture.LoadFromFile(ImgPath); end;

- بعد ذلك إفتح الكود الخاص بزر الإضافة إلى قاعدة البيانات وأضف السطر الآتي قبل post

كود :
if ImgPath <> '' Then AdoTable1.FieldByName('Image_Path').AsString := ImgPath;

- في عملية عرض البيانات من قاعدة البيانات يمكن أن تكتب الكود التالي في زر عرض البيانات
كود :
if AdoTable1.FieldByName('Image_Path').AsString <> '' then Image1.Picture.LoadFromFile(AdoTable1.FieldByName('Image_Path').AsString);

طبعا هذا الكود هو كود قياسي قمت بكتابته إعتمادا على ما فكرت فيه ولهذا يمكنك أن تقوم بالتعديلات التي تراها مناسبة لبرنامجك
الرد
#5
بارك الله فيك أخي الكاسر
سأجربه و أخبرك
لكني فكرت في تغيير محرك قاعدة المعطيات إلى SQL server رغم اننه يستوجب أنك تثبته في الحاسب
ما رأيك؟
الرد
#6
يمكنك ذلك ويمكنك أن تستخدم sql server express لأن حجم البيانات في برنامجك يعتبر صغير مقارنة بإمكانيات Sql server

عموما .. لو عملت عملية حسابية بسيطة ستجد أن بيانات الصورة لن تصل إلى الحجم التي تتخيله
فمثلا لو أن حجم الصورة 100 كيلو بايت فإن 1000 سلعة ستحجز حوالي 98 ميغابايت في قاعدة البيانات إضافة إلى 3 أو 4 ميغابايت لبقية البيانات وبعض الميغا بايت للإستعلامات وغيرها ولك أن تقارن باقي الحجم المتبقي قي قاعدة البيانات.
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم