إصلاح وضغط قاعدة البيانات MS Access
#11
السلام عليكم
ارتكبت خطا في كتابة الدالة
لا تغير الدالة CompactAndRepair اتركها على حالها هكدا
PHP كود :
function CompactAndRepair(DB, Password: string) : boolean;
const
  
sProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password="%s"';
var
  
v: OLEvariant;
begin { CompactAndRepair }
  
Result := True;
  try
    
v := CreateOLEObject('JRO.JetEngine');
    try
      
v.CompactDatabase(Format(sProvider, [DB, Password]), Format(sProvider, [DB + 'x', Password]));
      if 
FileExists(DB + 'x') then begin
        DeleteFile
(DB);
        
RenameFile(DB + 'x', DB)
      
end;
    finally
      
v := Unassigned
    end
; { try }
  
except
    Result 
:= False
  end
; { try }
end; { CompactAndRepair } 
و تحتها مرر متغيراتك (مسار قاعدة بياناتك وكلمة المرور ان وجدت) الى الدالة كما اعتدنا . هدا الكود يبقى كما هو
PHP كود :
procedure TForm5.Button3Click(Sender: TObject);
begin
DataModule1
.ADOConnection1.Close;
  if 
CompactAndRepair('E:\Projet\gestion commerciale\gestion commerciale\gestion commerciale\gestion commerciale.mdb','') then
    ShowMessage
('database compact successfully');
  
DataModule1.utilisateur.Open;

end; 
ولا تنسى اضافة ComObj الى قائمة uses
بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
[-] كل من 1 user says قال شكرا ل bassem_43 على المشاركة المفيدة
  • wadoud
الرد
#12
أخ باسم نفس المشكل قاعدة بيانات حجمها لم يتغي وكذلك ShowMessage('database compact successfully');
لم تضهر
الرد
#13
DJILANI كتب :أخ باسم نفس المشكل قاعدة بيانات حجمها لم يتغي وكذلك ShowMessage('database compact successfully');
لم تضهر
تاكد من مسار قاعدة بياناتك هل هو صحيح ؟ لمدا تضع مجلد داخل مجلد ؟ هل هو مقصود
كود :
E:\Projet\gestion commerciale\gestion commerciale\gestion commerciale\gestion commerciale.mdb
كدلك تاكد من اسم قاعدة بياناتك بدقة
كود :
gestion commerciale.mdb
انا جربتها ونجح الامر معي
استعملت دالفي XE5
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#14
bassem_43 كتب :تاكد من مسار قاعدة بياناتك هل هو صحيح ؟ لمدا تضع مجلد داخل مجلد ؟ هل هو مقصود
كود :
E:\Projet\gestion commerciale\gestion commerciale\gestion commerciale\gestion commerciale.mdb
كدلك تاكد من اسم قاعدة بياناتك بدقة
كود :
gestion commerciale.mdb
انا جربتها ونجح الامر معي
استعملت دالفي XE5


شكرا لك أخي تم حل المشكل وقد كان E:\Projet\gestion commerciale\gestion commerciale\gestion commerciale\gestion commerciale.mdb


وقد وضعته مباشرة في E:\Projet\gestion commerciale.mdb
الرد
#15
السلام عليكم
إخوتي وإذا كان الإتصال دينامكيا بقاعدة البيانات كيف يكون كود المسار في هذه الحالة بارك الله فيكم؟
الخوف من أي محاولة جديدة طريق حتمي للفشل.
الرد
#16
و عليكم السلام
ان كان الاتصال ديناميكيا فدع الدالة فوق كما هي و غير مسار قاعدة البيانات  كما يلي


PHP كود :
procedure TForm5.Button3Click(Sender: TObject);
begin
DataModule1
.ADOConnection1.Close;
 
 if CompactAndRepair(ExtractFilePath(Application.ExeName)+'Test.mdb','1230456') then
    ShowMessage
('database compact successfully');
 
 DataModule1.utilisateur.Open;

end; 
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
[-] كل من 1 user says قال شكرا ل bassem_43 على المشاركة المفيدة
  • wadoud
الرد
#17
أخي لا أستعمل dataModule

DataModule1.utilisateur.Open;

يمكن كتابتها كالتالي

ADOConnection1.Open ;
???
الخوف من أي محاولة جديدة طريق حتمي للفشل.
الرد
#18
نعم يمكن دلك
ADOConnection1.close
ADOConnection1.Open
لكن يفضل استعمال dataModule في مشاريعك ضع عليها جميل جداولك و الاتصال و غيرها للتحكم الاحسن فيها
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
[-] كل من 1 user says قال شكرا ل bassem_43 على المشاركة المفيدة
  • wadoud
الرد
#19
بارك الله فيك أخي الكريم
سأجرب ثم أعود إن شاء الله.
الخوف من أي محاولة جديدة طريق حتمي للفشل.
الرد
#20
بارك الله فيك وأحسن إليك أخي الكريم
نجح الأمر والفضل لله. 
أرفقت مثالا لإصلاح قاعدة بيانات أكسس متصلة دناميكيا


الملفات المرفقة
.rar   Test.rar (الحجم : 84.38 ك ب / التحميلات : 84)
الخوف من أي محاولة جديدة طريق حتمي للفشل.
الرد


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


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