منذ فترة طرحت موضوع في المنتدى بعنوان كيف: تخزين ملف ضمن exe البرنامج
ويعتبر هذا الموضوع تتمة له
وهذا رابط الموضوع القديم لمن يحب الاطلاع
تخزين ملف أكسس ضمن الملف التنفيذي للبرنامج واستعادته أثناء التشغيل
أولا - أضف للمشروع الحالي ملف الأكسس الذي سيستخدمه مشروعك كقاعدة بيانات ثم غير خاصية Build Action له إلى Embedded Resource وذلك ليتم تضمينه ضمن الملف التنفيذي للمشروع عند ترجمته
ثانيا - أضف الاستيرادات التالية في أعلى الملف الذي ستستخدم الكود فيه حتى يعمل بشكل صحيح
Imports System.IO
ثالثا - عندما تحتاج لإنشاء ملف قاعدة بيانات جديد لمشروعك أثناء التنفيذ ما عليك سوى قراءة ملفنا الذي قمنا بتخزينه من الملف التنفيذي الحالي وكتابته إلى ملف مجددا ثم استخدامه في البرنامج كما يحلو لك والكود الذي سيقوم بالقراءة والتخزين سيكون مشابه للكود التالي وقد حاولت شرح الكود بالتعليقات ضمنه قدر الامكان
' إحضار اسم المجمع الذي يتم تشغيله حاليا
Dim Ref As Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
' قراءة الملف المخزن ووضعه في متغير من نوع stream
Dim ResStr As Stream = Ref.GetManifestResourceStream(Ref.GetName.Name & ".db1.mdb")
' إنشاء متغير مؤقت من نوع مصفوفة بايتات
Dim DbBuff(ResStr.Length - 1) As Byte
' قراءة المعلومات من الستريم ووضعها في المتغير
ResStr.Read(DbBuff, 0, CInt(ResStr.Length))
' عرض رسالة بطول البايتات المقروءة
MsgBox(DbBuff.Length)
' إنشاء متغير من نوع filestream ليحمل الملف الذي سيتم التخزين فيه
Dim Fs As New FileStream("d:\temp\samer.mdb", FileMode.Create)
' إنشاء متغير من نوع BinaryWriter
Dim Bw As New BinaryWriter(Fs)
' كتابة البايتات في المتغير المؤقت إلى الملف ثم إغلاق الملف
Bw.Write(DbBuff)
Bw.Flush()
Bw.Close()
' عرض رسالة بالإنتهاء
MsgBox("Done")وبعد انتهاء تنفيذ الكود المذكور يمكنك الآن ربط قاعدة البيانات الجديدة ضمن مشروعك واستخدامها كما تشاء.
وبهذا نكون قد خزنا قاعدة البيانات الهيكلية الأساسية ضمن الملف التنفيذي للبرنامج واستعدناها عند الحاجة
ملاحظة: يمكن استخدام الطريقة السابقة بشكل مشابه لتخزين أي ملف ضمن الملف التنفيذي للبرنامج واستعادته عند الحاجة
يرجى استخدام الكود المعدل الموجود في جوابي على أحد الإخوة لاحقا في هذا الموضوع
كما توجد أمثلة مرفقة لاحقا


