تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
محتاج كود ضغط وإصلاح قاعدة بيانات Access 2010
#1
السلام عليكم ورحمة الله وبركاته
محتاج كود ضغط وإصلاح قاعدة بيانات Access 2007 & 2010  
الكود التالى يعمل ولكن يحولها ل 2003

كود :
  Dim DbasePath2007 As String = "C:\aaaaaa\MyDB.accdb"

   'إجراء ضغط وإصلاح لقاعدة بيانات أكسس 2007
   Function Access_2007(ByVal FileNameMD As String, ByVal PasswordMD As String)
       con.Close()
       Try

           Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
           Dim Engine = CreateObject("JRO.JetEngine")
           Engine.CompactDatabase("provider=microsoft.ace.oledb.12.0;" & "Data Source=" & FileNameMD & ";" & "Jet OLEDB:Database Password=" & PasswordMD & ";" & _
           "Jet OLEDB:Engine Type=5;", _
           "provider=microsoft.ace.oledb.12.0;" & _
           "Jet OLEDB:Database Password=" & PasswordMD & ";" & _
           "Data Source=" & FileNameMD & ".tmp" & ";" & _
            "Jet OLEDB:Engine Type=5;")
           Dim FullPath As String = IO.Path.GetDirectoryName(FileNameMD)
           IO.File.Delete(FileNameMD)
           Dim filename As String = IO.Path.GetFileName(FileNameMD & ".tmp")
           Dim GetFileNameWithoutExtension As String = IO.Path.GetFileNameWithoutExtension(FileNameMD & ".tmp")
           FileSystem.Rename(FileNameMD & ".tmp", FullPath & "\" & GetFileNameWithoutExtension)
           EndMD = "Successfully"
           Return EndMD ' إرجع بقيمة تدل على إكمال العملية بنجاح
       Catch ex As Exception
           If My.Computer.FileSystem.FileExists(FileNameMD) = False Then
               EndMD = "Database"
               Return EndMD ' إرجع بقيمة تدل على فشل العملية بسبب عدم صحة مسار قاعدة البيانات
           Else
               EndMD = "Failed"
               Return EndMD ' إرجع بقيمة تدل على فشل العملية لاسباب اخرى
           End If
       End Try
   End Function


   'إجراء ضغط وإصلاح لقاعدة بيانات أكسس 2007

   'يوضع في زر للتنفيذ الدالة الأجراء الاتي '
   Private Sub Compactdba()
       Try
           Access_2007(DbasePath2007, "123456789")
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try
       Try
           '-----------------------------------------------------------
           EndMD = ""
           Access_2007(DbasePath2007, "123456789")
           ''                                 ''
           If EndMD = "Successfully" Then
               MsgBox("تمت عملية ضغط وإصلاح قاعدة البيانات بنجاح", MsgBoxStyle.Exclamation, "صيانة قاعدة البيانات")
           ElseIf EndMD = "Database" Then
               MsgBox(" قاعدة البيانات غير موجودة!", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Not found")

           ElseIf EndMD = "Failed" Then
               MsgBox("فشل العملية .", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Erorr")
           End If
           ''=================================================================
       Catch ex As Exception
           MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
       End Try


   End Sub


الكود التالي يعمل ولكن لم أستطيع تمرير كلمة مرور القاعدة

كود :
Private Sub Compactdb()

       Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
       Dim source = "C:\aaaaaa\MyDB.accdb "
       Dim compact = "C:\aaaaaa\MyDBCom.accdb"
       AccessDatabaseEngine.CompactDatabase(source, compact)
   
       MsgBox("The database was compacted successfully")

   End Sub


الرجاء التصحيح لما سبق أو  الكود الصحيح 
وجزاكم الله خيرا
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:
#2
وعليكم اسلام ورحمة الله وبركاته

تفضل استخدم الكود بهذا الشكل وهو كود Sub
كود :
   Sub RunCompactDatabase(ByVal Sou As String, ByVal Com As String, ByVal Pass As String)
       Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
       Dim source As String = Sou
       Dim compact As String = Com
       Dim MyPassword As String = Pass
       AccessDatabaseEngine.CompactDatabase(source, compact, ";pwd=" & MyPassword, , ";pwd=" & MyPassword)
       MsgBox("The database was compacted successfully")
   End Sub

من ثم تقوم باستدعائه فى الزر من خلال
كود :
RunCompactDatabase("مسار قاعدة البيانات الرئيسيى", "مسار قاعدة البيانات بعد الضغط", "كلمة المرور المخصصة لقاعدة البيانات")


قم باختبار الكود وما هو الناتج معك

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: princelovelorn , عبد العزيز البسكري
#3
جزاك الله خيرا أخي الفاضل وأستاذي  elgokr
ولكن نفس المشكلة


كود :
   Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
       Dim source = "C:\aaaaaa\MyDb.accdb "
       Dim compact = "C:\aaaaaa\MyDbcom.accdb"

       RunCompactDatabase(source, compact, "123456789")
   End Sub


   Sub RunCompactDatabase(ByVal Sou As String, ByVal Com As String, ByVal Pass As String)
       Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
       Dim source As String = Sou
       Dim compact As String = Com
       Dim MyPassword As String = Pass
       AccessDatabaseEngine.CompactDatabase(source, compact, ";pwd=" & MyPassword)
       MsgBox("The database was compacted successfully")
   End Sub


الملفات المرفقة صورة/صور
   
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:
#4
السّلام عليكم و رحمة الله و بركاته
بعد إذن أخي الفاضل " Elgokr " ..
أخي الكريم ..
قاعدة اليانات لديك هل هي من نوع mdb أو accdb ؟؟
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: princelovelorn
#5
(22-12-18, 02:11 AM)عبد العزيز البسكري كتب :
السّلام عليكم و رحمة الله و بركاته
بعد إذن أخي الفاضل " Elgokr " ..
أخي الكريم ..
قاعدة اليانات لديك هل هي من نوع mdb أو accdb ؟؟
تحياتي

وعليكم السلام ورحمة الله وبركاته

جزاك الله خيرا أخي الفاضل 

قاعدة البيانات accdb   أستخدم أوفييس 2010
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:
#6
عمليّة ضغط و إصلاح قواعد البيانات ذات كلمات المرور من نوع accdb تحتاج أخي الكريم إلى إضافة هذا الجزء بعد كلمة المرور ..
كود :
;Jet OLEDB:Engine Type=5
تحياتي
قناتنا على اليوتوب
الرد }}}
تم الشكر بواسطة: elgokr , elgokr , princelovelorn , ابراهيم ايبو
#7
اخى الحبيب السبب فى الرسالة المرفقة
هو كونك وضعت كلمة المرور بطريقة غير صحيحة

شرح مجدداً للكود مع الخطوات المطلوب نشائها حتى تتاكد جيداً بان كل شئ بدون مشكلة

قم بعمل مشروع جديد على جهازك يحتوى على زر

ادرج بداخل الزر الكود التالى
كود :
       RunCompactDatabase("C:\123.accdb", "C:\123-ok.accdb", "12341234")

اسفل حدث الزر او باى مكان قم بادراج كود هذا الـ Sub
كود :
   Sub RunCompactDatabase(ByVal Sou As String, ByVal Com As String, ByVal Pass As String)
       Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
       Dim source As String = Sou
       Dim compact As String = Com
       Dim MyPassword As String = Pass
       AccessDatabaseEngine.CompactDatabase(source, compact, ";pwd=" & MyPassword, , ";pwd=" & MyPassword)
       MsgBox("The database was compacted successfully")
   End Sub

قم باضافة Microsoft.Office.interop.access.dao
من خلال References


الان قم بتحميل قاعدة البيانات المرفقة وقم بوضعها على الدريف C
قم بتشغيل الان البرنامج من المشروع واضغط على الزر

وبعد ثوانى قليلة ستجد ظهور تلك الرسالة
كود :
The database was compacted successfully


الان اذهب الى الدريف C لتجد تم انشاء قاعدة بيانات جديدة بع الضغط تحت اسم
كود :
123-ok.accdb

تحياتى لك
وتمنياتى لك التوفيق


الملفات المرفقة
.zip   123.zip (الحجم : 369.03 ك ب / التحميلات : 194)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: princelovelorn , princelovelorn , ابراهيم ايبو , سعود
#8
(22-12-18, 02:50 AM)عبد العزيز البسكري كتب :
عمليّة ضغط و إصلاح قواعد البيانات ذات كلمات المرور من نوع accdb تحتاج أخي الكريم إلى إضافة هذا الجزء بعد كلمة المرور ..
كود :
;Jet OLEDB:Engine Type=5
تحياتي


جزاك الله خيرا أخي الحبيب عبد العزيز البسكري
بالفعل لم أنسى هذا الجزء وهو موجود في الكود الاول من المشاركة الاولى 
والمشكلة في هذا الكود انه بيتم تحويل القاعدة بعد العملية الى اصدار 2003


(22-12-18, 03:28 AM)elgokr كتب :
اخى الحبيب السبب فى الرسالة المرفقة
هو كونك وضعت كلمة المرور بطريقة غير صحيحة

شرح مجدداً للكود مع الخطوات المطلوب نشائها حتى تتاكد جيداً بان كل شئ بدون مشكلة

قم بعمل مشروع جديد على جهازك يحتوى على زر

ادرج بداخل الزر الكود التالى
كود :
       RunCompactDatabase("C:\123.accdb", "C:\123-ok.accdb", "12341234")

اسفل حدث الزر او باى مكان قم بادراج كود هذا الـ Sub
كود :
   Sub RunCompactDatabase(ByVal Sou As String, ByVal Com As String, ByVal Pass As String)
       Dim AccessDatabaseEngine As New Microsoft.Office.Interop.Access.Dao.DBEngine
       Dim source As String = Sou
       Dim compact As String = Com
       Dim MyPassword As String = Pass
       AccessDatabaseEngine.CompactDatabase(source, compact, ";pwd=" & MyPassword, , ";pwd=" & MyPassword)
       MsgBox("The database was compacted successfully")
   End Sub

قم باضافة Microsoft.Office.interop.access.dao
من خلال References


الان قم بتحميل قاعدة البيانات المرفقة وقم بوضعها على الدريف C
قم بتشغيل الان البرنامج من المشروع واضغط على الزر

وبعد ثوانى قليلة ستجد ظهور تلك الرسالة
كود :
The database was compacted successfully


الان اذهب الى الدريف C لتجد تم انشاء قاعدة بيانات جديدة بع الضغط تحت اسم
كود :
123-ok.accdb

تحياتى لك
وتمنياتى لك التوفيق


جزاك الله خيرا وبارك فيك أخي الحبيب elgokr
لقد طبقت شرحك بالظبط وكانت النتيجة 
ظهور هذة الرسالة عندما إستخدمت القاعدة المرفقة  باسم 123
The Microsoft Access database engine cannot open or write to the file 'C:\1234-ok.accdb'. It is already opened exclusively by another user, or you need permission to view and write its data.

ثم أنتبهت الى موضوع الصلاحيات في الويندوز ودرايف ال c

فقمت بنقل القاعدة بداخل مجلد  فنجحت العملية والحمد لله 
ثم قمت بأستخدام القاعدة التى لدي فنجحت العملية والحمد لله 

فجزاكم الله خيرا وبارك فيكم وزادكم علما أخواني الكرام 

عبد العزيز البسكري   elgokr
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
#9
الحمد لله والشكر لله
بكل تاكيد اخى الفاضل فنص الرسالة تنبهك على ذلك
وهو غير قادر على فعل ذلك وهو انشاء الملف الجديد على المسار المحدد بسبب الصلاحيات

وهو سهواص منى وقد يكون خطءاً بان لا انبهك على دريف اخر بدلاً من C
أو ان تقوم بتشغيل البرنامج كمسؤل Run Administrator
حتى عيتم تنفيذ الكود مباشر على C عن عمل الضغط والانشاء للنسخة الجديدة

فسامحنى على ذلك وهو سهواً منى بسبب سرعة الرد دون الانتباه والتركيز

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: princelovelorn
#10
أخي الحبيب  elgokr


جزاك الله خيرا وبارك فيك وغفر الله لي ولك
أنا لم أقصد أن أشير لتقصير أو خلل بالشرح  لا والله
فكل ما أردته أن أشرح بالتفصيل ما يحدث معي حتى أستفيد من خبراتك وعلمك وخبرة الأخوة الكرام في المنتدى
وحتى يستفيد من يقرأ الموضوع والتعليقات أكبر إستفادة ممكنه
فأنت بمثابة أستاذ وانا طالب علم وفوق ذلك نحن أخوة  فلا داعي للاعتذار  
وجزاك الله خيرا ونفع بك الإسلام والمسلمين
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 145 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  [سؤال] أتمنى اجابة وافية:عمل برنامج بقاعدة بيانات SQL دون حاجة تثبيت SQLSERVER dr.programming 6 657 19-03-24, 08:56 AM
آخر رد: سلامه محمد11
  استعلام select عن مجموعة بيانات Adel27213 1 215 15-03-24, 01:11 AM
آخر رد: justforit
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 198 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  محتاج طريقة لتنسيق نص الرسالة المرسلة إلى الواتس اب new_programer 2 206 04-03-24, 07:15 AM
آخر رد: new_programer
  [VB.NET] تحديث بيانات فى كلاس من جدول سيكوال asdfar1977 6 196 26-02-24, 01:07 AM
آخر رد: asdfar1977
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 239 25-02-24, 11:26 PM
آخر رد: heem1986
  [C#.NET] طباعة بيانات داتا جرد فيو h2551996 0 95 25-02-24, 02:31 PM
آخر رد: h2551996
  [VB.NET] حل مشكلة الاتصال بقواعد البيانات access loay775 2 171 25-02-24, 06:29 AM
آخر رد: loay775
  محتاج تشفير فيديو وتشغلية عن طريق البرنامج فقط new_programer 1 118 22-02-24, 12:09 PM
آخر رد: AHMED213

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


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