قاعدة البيانات والملفات
#11
إقتباس :هناك جداول يجب افراغها / حذف جميع السجلات
مثل achat ,vente, ligne achat, ligne vente
هناك جداول تتركها كما هي او تغير بها ما يجب (هذا يرجع لتصميمك للقاعدة وكيفية عمل برنامجك)
مممممممم... واضحة خبرة طويلة مع هذا النوع من البرامج Big Grin
ممكن تطلعنا على أحد الإصدارات (نسخة Demo أو صورة) ؟
لا تقل أنها بالـ TP7 على DOS :rtfm3:
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#12
إقتباس : واضحة خبرة طويلة...لا تقل أنها بالـ tp7
tp6
من له خبرة لاينسخ قاعدة قد يكون حجمها ضخم ثم يحذف دون ضغط
بل ينشئ قاعدة جديدة برمجيا ثم ينسج فقط ما يحتاجه من بيانات ويترك القديمة تنام بسبات
الرد
#13
السلام عليكم و رحمة الله

الان بعد انشاء قاعدة البيانات الخاصة بكل سنةو انشاء الجداول الخاصة بها بالكود التالي

كود :
procedure TForm1.button1Click(Sender: TObject); var i:Integer; DataSource: String; DbName:String; CS:String; begin i:=YearOf(Date()); if not FileExists('d:\'+IntToStr(i)+'Données.mdb') then begin DbName:='d:\'+IntToStr(i)+'Données.mdb'; DataSource :='Provider=Microsoft.Jet.OLEDB.4.0' +';Data Source=' + dbName +';Jet OLEDB:Engine Type=5'; ADOXCatalog1.Create1(DataSource); ADOConnection1.ConnectionString:=DataSource; ADOConnection1.LoginPrompt:=False; ADOCommand1.Connection:=ADOConnection1; cs:='CREATE TABLE '+IntToStr(i)+'Articles ('+'N°Ordre COUNTER,'+'Article TEXT(15))'; DataModule1.ADOCommand1.CommandText := cs; DataModule1.ADOCommand1.Execute; ADOConnection1.Close; Close; end else begin ADOConnection1.Close; while FileExists('d:\'+IntToStr(i)+'Données.mdb') do Inc(i); Copy(IntToStr(i)+'Données',5,4); DbName:= 'd:\'+IntToStr(i)+'Données.mdb'; DataSource :='Provider=Microsoft.Jet.OLEDB.4.0' +';Data Source=' + dbName +';Jet OLEDB:Engine Type=5'; ADOXCatalog1.Create1(DataSource); DataSource:='Provider = Microsoft.Jet.OLEDB.4.0 '+'; Data Source = d:\'+IntToStr(i)+'Données.mdb' +'; Persist Security Info = False'; ADOConnection1.ConnectionString:=DataSource; ADOConnection1.LoginPrompt:=False; ADOCommand1.Connection:=ADOConnection1; cs:='CREATE TABLE '+IntToStr(i)+'Articles ('+'N°Ordre COUNTER,'+'Article TEXT(15))'; DataModule1.ADOCommand1.CommandText := cs; DataModule1.ADOCommand1.Execute; ADOConnection1.Close; Close; END; end.
قلت تبين بان الجداول الجديدة تنشؤ فارغة وهذا ما لا نحبذه
لذا قررنا تعبئتها كما يلي
كود :
cs:='Insert into '+IntToStr(i)+'Articles (N°Ordre,Article) select N°Ordre,Article from '+IntToStr(i-1)+'Données.'+IntToStr(i-1)+'Articles'; DataModule1.ADOCommand1.CommandText := cs; DataModule1.ADOCommand1.Execute;
فوقع المشكل و هو ان مسار القاعدة IntToStr(i-1)+'Données اي قاعدة السنة الماضية التي نستمد منها المعطيات القديمة غير معروف

كيف لنا ان نجعل القاعدتين IntToStr(i-1)+'Données و IntToStr(i)+'Données معروفتين بالنسبة للمحرك

وهل من طريقة لانشاء جدول في قاعدة من قاعدة اخرى ببياناته

وشكرا
الرد
#14
السلام عليكم و رحمة الله

كلما في الامر تشكيل قاعدة جديدة بالكود السلف الذكر ثم عمل copy كمايلي

كود :
procedure TForm1.button1Click(Sender: TObject); var i:Integer; DataSource: String; DbName:String; CS:String; begin i:=YearOf(Date()); if not FileExists('d:\'+IntToStr(i)+'Données.mdb') then begin DbName:='d:\'+IntToStr(i)+'Données.mdb'; DataSource :='Provider=Microsoft.Jet.OLEDB.4.0' +';Data Source=' + dbName +';Jet OLEDB:Engine Type=5'; ADOXCatalog1.Create1(DataSource); ADOConnection1.ConnectionString:=DataSource; ADOConnection1.LoginPrompt:=False; ADOCommand1.Connection:=ADOConnection1; cs:='CREATE TABLE '+IntToStr(i)+'Articles ('+'N°Ordre COUNTER,'+'Article TEXT(15))'; DataModule1.ADOCommand1.CommandText := cs; DataModule1.ADOCommand1.Execute; ADOConnection1.Close; Close; end else begin ADOConnection1.Close; while FileExists('d:\'+IntToStr(i)+'Données.mdb') do Inc(i); Copy(IntToStr(i)+'Données',5,4); DbName:= 'd:\'+IntToStr(i)+'Données.mdb'; DataSource :='Provider=Microsoft.Jet.OLEDB.4.0' +';Data Source=' + dbName +';Jet OLEDB:Engine Type=5'; ADOXCatalog1.Create1(DataSource); DataSource:='Provider = Microsoft.Jet.OLEDB.4.0 '+'; Data Source = d:\'+IntToStr(i)+'Données.mdb' +'; Persist Security Info = False'; ADOConnection1.ConnectionString:=DataSource; ADOConnection1.LoginPrompt:=False; ADOCommand1.Connection:=ADOConnection1; cs:='CREATE TABLE '+IntToStr(i)+'Articles ('+'N°Ordre COUNTER,'+'Article TEXT(15))'; DataModule1.ADOCommand1.CommandText := cs; DataModule1.ADOCommand1.Execute; ADOConnection1.Close; Close; END;

ثم
كود :
CopyFile(PChar('D:\'+IntToStr(i-1)+'Données.mdb'),PChar('D:\'+IntToStr(i)+'Données.mdb'),False);

وبهذا حلت المشكلة و شكرا Smile .
الرد
#15
هذه فعليا خطا. يمكن ان تصنع حل عن طريق تصميم قاعدة البيانات
الغكره ان تقوم بعمل جدول اسمه السنوات. و تغلق كل سنه قديمه و تجعل السنة الجديده مفتوح التسجيل فيها
و في هذه الحاله ,,, توجه كل العمليات تضيف فقط في السنة المفتوحة التسجيل
و هكذا لا يلزمك ان نعمل ضبط مصنع او غيره
الرد
#16
السلام عليكم
نعم أخي palunix لما لا ننشئ جدول امه السنواة أو سمه كما تشاء ونربط بقية الجداول التي لها علاقة بتغير السنوات بهذا الجدول وبهذ كلما تغيرت سنة أدخلناها في جدول السنوات ينتج لنا جداول جديدة وبهذا تبقى معنا قاعدة البيانات ببياناتها القديمة والجديدة إلى ما شاء الله ولك أن تضع تعليمات تحذف سجلات يمر عليها زمن معين كسجلات أنشئت قبل 6 أشهر أ سنة أو أكثر أو أقل هذا إن خفت على كبر حجم قاعدة البيانات .
شكرا للجميع
والسلام عليكم.
الرد
#17
(23-05-2011, 06:19 PM)وليد كتب : السلام عليكم
نعم أخي palunix  لما لا ننشئ جدول امه السنواة أو سمه كما تشاء ونربط بقية الجداول التي لها علاقة بتغير السنوات بهذا الجدول وبهذ كلما تغيرت سنة أدخلناها في جدول السنوات ينتج لنا جداول جديدة وبهذا تبقى معنا قاعدة البيانات ببياناتها القديمة والجديدة إلى ما شاء الله ولك أن تضع تعليمات تحذف سجلات يمر عليها زمن معين كسجلات أنشئت قبل 6 أشهر أ سنة أو أكثر أو أقل هذا إن خفت على كبر حجم قاعدة البيانات .
شكرا للجميع
والسلام عليكم.

ممكن مثال بارك الله فيك
الرد


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


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