28-05-2008, 03:53 PM
السلام عليكم
سأحاول التلميح لبعض الأمور ، لأن رأيي قبل البرمجة :
1-ماذا تريد أن تكون النتيجة،
2- إقرأ عن المكونات التي تريد استعمالها،
3-نظم أفكارك (لأن زمن البرمجة مباشرة على الشاشة قد ولّى منذ زمن)
أولا مكان قاعدة البيانات DataBaseName يكون دائما مشكل لمستعمل أخر، و لكي لا نحتاج دائما للتعديل بدل من D:\rabah\data يكون data\.
ثانيا : اللون الأحمر يمثل الخطأ
. ليس من المنطق Insert ثم Open
. لماذا T02.First ؟؟
. اختار واحد بين Append أو Insert طالع Help الخاص بالدلفي لمعرفة الفرق
ثانيا :
لأن في قاعدة البيانات Code هي من نوع A من الحجم 2
و انت تريد ادخال ترتيب النوع في ComboBox علما بأن ItemIndex يبدأ من 0، لا أظن أنك تريد 0 ككود
و العقبة الأخرى هي كما قلت Code هي من نوع A من الحجم 2، لو كانت من نوع رقمي (I) لكان أحسن
لأنك استعملت ItemIndex الدي هو رقمي وجدولك يستعمل '01,02,03...' كنصوص
هناك فرق بين 1 (رقم) و 01 (نص)
لماذا لم تعملا مع t02.FieldByName('code').AsString
ثالثا :
الأهم من هذا كله لقد وضعت DBEdit و أردت استعمالها كـ Edit
DBEdit لها علاقة مباشرة مع قاعدة البيانات (أدخل التعديلات منها دون الضغط على الأزرار و لاحظ الجدول)
اعذرني ، لكن البرنامج غير منظم (و أحيانا غير منطقي)
و إذا أردت (كبداية) العمل بوضوح اجعل لكل عملية واجهة و برمجة خاصة بها (الإضافة ، التعديل، الحذف ، القراءة ..) ثم بعد التمكن منها ابدا بالعمل على واجهة متعددة العمليات.
سأتوقف هنا ونصيحتي : انسى ما قمت به، نظم أفكارك، اقرأ عن الهدف من المكون المستعمل و استعمالاته، في الأخير حاول دائما تصور ما تريد القيام به قبل البدئ به
هذا رأيي وقد تجد أحسن و أنفع منه
بالتوفيق
سأحاول التلميح لبعض الأمور ، لأن رأيي قبل البرمجة :
1-ماذا تريد أن تكون النتيجة،
2- إقرأ عن المكونات التي تريد استعمالها،
3-نظم أفكارك (لأن زمن البرمجة مباشرة على الشاشة قد ولّى منذ زمن)
أولا مكان قاعدة البيانات DataBaseName يكون دائما مشكل لمستعمل أخر، و لكي لا نحتاج دائما للتعديل بدل من D:\rabah\data يكون data\.
ثانيا : اللون الأحمر يمثل الخطأ
كود :
[color=Blue]// عند الضغط على الزر جديد[/color]
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
[color=Red]t02.Insert ;[/color]
end;
[color=Blue]// عند الضغط على الزر موافق[/color]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
[color=Red]t02.open ;[/color]
t02.First ;
if t02.FindKey([editnum.Text]) then
showmessage('هذا الرقم موجود')
else
begin
[color=Red]t02.Append ;[/color]
t02num.Value :=editnum.Text ;
t02nom_livre.Value :=editnom_livre.Text ;
t02nom_auteur.Value :=editnom_auteur.Text ;
t02n_taslsoli.Value :=editn_taslsoli.Text ;
t02n_idaa.Value :=editn_idaa.Text ;
t02isbn.Value :=editisbn.Text ;
t02code.Value := inttostr(combobox1.ItemIndex);
t02.post;
showmessage('تم إضافة الكناب ....');
end;
end;. ليس من المنطق Insert ثم Open
. لماذا T02.First ؟؟
. اختار واحد بين Append أو Insert طالع Help الخاص بالدلفي لمعرفة الفرق
ثانيا :
إقتباس :احاول ان ادخل نوع الكتاب عن طريق combobox لكنني لا أستطيع
لأن في قاعدة البيانات Code هي من نوع A من الحجم 2
و انت تريد ادخال ترتيب النوع في ComboBox علما بأن ItemIndex يبدأ من 0، لا أظن أنك تريد 0 ككود
و العقبة الأخرى هي كما قلت Code هي من نوع A من الحجم 2، لو كانت من نوع رقمي (I) لكان أحسن
لأنك استعملت ItemIndex الدي هو رقمي وجدولك يستعمل '01,02,03...' كنصوص
هناك فرق بين 1 (رقم) و 01 (نص)
لماذا لم تعملا مع t02.FieldByName('code').AsString
كود :
t02.FieldByName('code').AsString := '0'+inttostr(combobox1.ItemIndex+1);ثالثا :
الأهم من هذا كله لقد وضعت DBEdit و أردت استعمالها كـ Edit
DBEdit لها علاقة مباشرة مع قاعدة البيانات (أدخل التعديلات منها دون الضغط على الأزرار و لاحظ الجدول)
اعذرني ، لكن البرنامج غير منظم (و أحيانا غير منطقي)
و إذا أردت (كبداية) العمل بوضوح اجعل لكل عملية واجهة و برمجة خاصة بها (الإضافة ، التعديل، الحذف ، القراءة ..) ثم بعد التمكن منها ابدا بالعمل على واجهة متعددة العمليات.
سأتوقف هنا ونصيحتي : انسى ما قمت به، نظم أفكارك، اقرأ عن الهدف من المكون المستعمل و استعمالاته، في الأخير حاول دائما تصور ما تريد القيام به قبل البدئ به
هذا رأيي وقد تجد أحسن و أنفع منه
بالتوفيق

