المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
إقتباس :هناك جداول يجب افراغها / حذف جميع السجلات
مثل achat ,vente, ligne achat, ligne vente
هناك جداول تتركها كما هي او تغير بها ما يجب (هذا يرجع لتصميمك للقاعدة وكيفية عمل برنامجك)
مممممممم... واضحة خبرة طويلة مع هذا النوع من البرامج 
ممكن تطلعنا على أحد الإصدارات (نسخة Demo أو صورة) ؟
لا تقل أنها بالـ TP7 على DOS :rtfm3:
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس : واضحة خبرة طويلة...لا تقل أنها بالـ tp7
tp6
من له خبرة لاينسخ قاعدة قد يكون حجمها ضخم ثم يحذف دون ضغط
بل ينشئ قاعدة جديدة برمجيا ثم ينسج فقط ما يحتاجه من بيانات ويترك القديمة تنام بسبات
المشاركات : 40
المواضيع 8
:
: 2
الإنتساب : Jul 2009
السلام عليكم و رحمة الله
الان بعد انشاء قاعدة البيانات الخاصة بكل سنةو انشاء الجداول الخاصة بها بالكود التالي
كود :
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 معروفتين بالنسبة للمحرك
وهل من طريقة لانشاء جدول في قاعدة من قاعدة اخرى ببياناته
وشكرا
المشاركات : 40
المواضيع 8
:
: 2
الإنتساب : Jul 2009
السلام عليكم و رحمة الله
كلما في الامر تشكيل قاعدة جديدة بالكود السلف الذكر ثم عمل 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);
وبهذا حلت المشكلة و شكرا

.
المشاركات : 125
المواضيع 31
:
: 0
الإنتساب : May 2008
هذه فعليا خطا. يمكن ان تصنع حل عن طريق تصميم قاعدة البيانات
الغكره ان تقوم بعمل جدول اسمه السنوات. و تغلق كل سنه قديمه و تجعل السنة الجديده مفتوح التسجيل فيها
و في هذه الحاله ,,, توجه كل العمليات تضيف فقط في السنة المفتوحة التسجيل
و هكذا لا يلزمك ان نعمل ضبط مصنع او غيره
المشاركات : 98
المواضيع 36
:
: 0
الإنتساب : Oct 2010
السلام عليكم
نعم أخي palunix لما لا ننشئ جدول امه السنواة أو سمه كما تشاء ونربط بقية الجداول التي لها علاقة بتغير السنوات بهذا الجدول وبهذ كلما تغيرت سنة أدخلناها في جدول السنوات ينتج لنا جداول جديدة وبهذا تبقى معنا قاعدة البيانات ببياناتها القديمة والجديدة إلى ما شاء الله ولك أن تضع تعليمات تحذف سجلات يمر عليها زمن معين كسجلات أنشئت قبل 6 أشهر أ سنة أو أكثر أو أقل هذا إن خفت على كبر حجم قاعدة البيانات .
شكرا للجميع
والسلام عليكم.
المشاركات : 30
المواضيع 7
:
: 17
الإنتساب : May 2012
(23-05-2011, 06:19 PM)وليد كتب : السلام عليكم
نعم أخي palunix لما لا ننشئ جدول امه السنواة أو سمه كما تشاء ونربط بقية الجداول التي لها علاقة بتغير السنوات بهذا الجدول وبهذ كلما تغيرت سنة أدخلناها في جدول السنوات ينتج لنا جداول جديدة وبهذا تبقى معنا قاعدة البيانات ببياناتها القديمة والجديدة إلى ما شاء الله ولك أن تضع تعليمات تحذف سجلات يمر عليها زمن معين كسجلات أنشئت قبل 6 أشهر أ سنة أو أكثر أو أقل هذا إن خفت على كبر حجم قاعدة البيانات .
شكرا للجميع
والسلام عليكم.
ممكن مثال بارك الله فيك