المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: كن من مبرمجي معالج بيانات يقوم بانشاء سيفرات برمجية لقواعد البيانات
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
Framework2


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


بمكان غير هذا المكان وبزمان غير هذا الزمان
اجتمع خبراء كثيرون لبرمجة برنامج صغير هو عبارة عن معالج تقوم باختيار قاعدة البيانات فيقوم بفتحها وعرض الجداول التي فيها
تختار جدول فيقوم بعرض الحقول التي فيها
تقول له اعطني شيفرة لاضافة حقل جديد
فيعطيك شيفرة
تقول له اعطني شيفرة لتعديل بيانت حقل فيعطيك شيفرة

وبلحظات وجيزة ونقرات بسيطة تبرمج برنامجك
ويغنيك عن كتابة الكثير من الكود.

وبهذا الزمان وبهذا المكان والان ادعوكم جميعا يا خبراء الدلفي للقيام بذلك
الامر بسيط جدا
لنبدا بالتالي
قاعدة بيانات أكسس AdoTabel يقوم بكل المهمات
وبعدها يمكننا التوسع واضافة القدرة له للتعامل مع كافة اشكال قواعد البيانات

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

مع انني مبتدئ بالدلفي ولكن لي قدرات لتخيل الاشياء وتطوير الاشياء
واساعد بقدر ما استطيع

تصوروا فائدة هذا البرنامج للمحترفين والمبتدئين

بنقرة زر تحصل على كل الكود اللازم للاتصال بقاعدة بياناتك
وربما انشاء كلاسس كامل للتعامل معها

المشروع مغري ويستحق المحاول

ساعدوني بهذه الخطوتين ولكم مني مشروع كامل في غضون ايام معدودات

والله الموفق
محمد نسمان
يوجد دوال جاهزة ضمن مكون الاتصال والجدول لجلب البيانات كالتالي:

كود
adoConnection1.GetTableNames
adoTable1.GetFieldNames


كمثال بسيط، قم بإضافة AdoConnection,AdoTable, 2 ListBoxes، الكود التالي سوف يعرض جميع الجدوال الموجودة في قاعدة البيانات عند بدء التشغيل ومن ثم عن النقر على أي جدول سوف يتم عرض جميع الحقول التابعة لذلك الجدول
كود
procedure TForm1.FormCreate(Sender: TObject);
begin
  con1.GetTableNames(lst1.Items);

end;

procedure TForm1.lst1Click(Sender: TObject);
begin
  tbl1.TableName := lst1.Items[lst1.ItemIndex];
  tbl1.GetFieldNames(lst2.Items);
end;
Framework2
بســم الله الـرحمــن الرحيــم


إقتباس(محمد نسمان @ Nov 16 2008, 11:43 AM) *
يوجد دوال جاهزة ضمن مكون الاتصال والجدول لجلب البيانات كالتالي:

كود
adoConnection1.GetTableNames
adoTable1.GetFieldNames


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

والله الموفق
Framework2


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





الاخوة الاعزاء

هذه تجربة سريعة للبرنامج يمكنكم تجربته والتعديل فيه واعطائنا النصيحة
البرنامج حتى الان يقدم لك نص الاتصال بقاعدة البيانات
ويقدم لك شفرة لاضافة بيانات جديدة
شفرة لتعديل بيانات محفوظة
شفرة لقراءة بيانات محفوظة

كما تم اضافة له خدمتان جديدتان
امكانية استخراج الايقونات من الملفات التنفيذية وملفات الربط الديناميكي
لاستخدامها في التصميم
وكذلك تصدير كل الاجراءات التي تحتوي عليها ملفات الربط الديناميكي
لمساعدة المبرمج على معرفة ما هية الاجراءات التي يحتوي عليها الملف
كما تم اضافة اماكنية تسجيل ملفات Activex

طبعا البرنامج مهم ليقدم الشيفرات جاهزة فتصور مثلا لو انك تمتلك قاعدة بيانات كبيرة ستظطر الى كتابة كل هذا الكود أنظر التالي:

انسخ الكود
  1.  
  2.  
  3. If (trim(Txtshabea.Text ) <> '') and (trim(Txtqtaa.Text ) <> '') and (trim(Txtadara.Text ) <
    > '') and (trim(Txtqsam.Text ) <> '') and (trim(Txtodefa_type.Text ) <> '') and (trim(Txtodef
    a_num.Text ) <> '') and (trim(Txttaaen_date.Text ) <> '') and (trim(Txtnum_qrar_taaen.Text )
    <> '') and (trim(Txtjehat_asdar_qrar.Text ) <> '') and (trim(Txtm_name.Text ) <> '') and (tr
    im(Txtlaqab.Text ) <> '') and (trim(Txtmother.Text ) <> '') and (trim(Txthala_ajtmaaea.Text )
    <> '') and (trim(Txtchild_num.Text ) <> '') and (trim(Txtjens.Text ) <> '') and (trim(Txtm_
    card.Text ) <> '') and (trim(Txtcard_plc.Text ) <> '') and (trim(Txtoqaa_askry.Text ) <> '')
    and (trim(Txtask_data_live.Text ) <> '') and (trim(Txtfamily_card_num.Text ) <> '') and (tri
    m(Txtfamily_paper_num.Text ) <> '') and (trim(Txthealth.Text ) <> '') and (trim(Txthealth_typ
    e.Text ) <> '') and (trim(Txtyear_melad.Text ) <> '') and (trim(Txtmelad_plc.Text ) <> '') a
    nd (trim(Txtaqama_now.Text ) <> '') and (trim(Txtmoahhel.Text ) <> '') and (trim(Txttakass.Te
    xt ) <> '') and (trim(Txtmoahel_date.Text ) <> '') and (trim(Txtmoahel_jeha.Text ) <> '') an
    d (trim(Txtsnoat_kabra.Text ) <> '') and (trim(Txtdarja_now.Text ) <> '') and (trim(Txtdarja_
    motaeen_bha.Text ) <> '') and (trim(Txttarqea_data_last.Text ) <> '') and (trim(Txtmorateb_as
    asy.Text ) <> '') and (trim(Txtalaoa_sakan.Text ) <> '') and (trim(Txtalaoa_family.Text ) <>
    '') and (trim(Txtalaoa_tameez.Text ) <> '') and (trim(Txtalaoa_other1.Text ) <> '') and (tri
    m(Txtalaoa_other2.Text ) <> '') and (trim(Txtalaoa_other3.Text ) <> '') and (trim(Txttaqrer1.
    Text ) <> '') and (trim(Txttaqrer2.Text ) <> '') and (trim(Txttaqrer3.Text ) <> '') and (tri
    m(Txtpnk_num.Text ) <> '') and (trim(Txtpnk_nam.Text ) <> '') Then
  4. else
  5.  
  6. try
  7. ADOTable1.Open;
  8. ADOTable1.Insert;
  9. ADOTable1.FieldByName('shabea').Value:=Txtshabea.Text ;
  10. ADOTable1.FieldByName('qtaa').Value:=Txtqtaa.Text ;
  11. ADOTable1.FieldByName('adara').Value:=Txtadara.Text ;
  12. ADOTable1.FieldByName('qsam').Value:=Txtqsam.Text ;
  13. ADOTable1.FieldByName('odefa_type').Value:=Txtodefa_type.Text ;
  14. ADOTable1.FieldByName('odefa_num').Value:=Txtodefa_num.Text ;
  15. ADOTable1.FieldByName('taaen_date').Value:=Txttaaen_date.Text ;
  16. ADOTable1.FieldByName('num_qrar_taaen').Value:=Txtnum_qrar_taaen.Text ;
  17. ADOTable1.FieldByName('jehat_asdar_qrar').Value:=Txtjehat_asdar_qrar.Text ;
  18. ADOTable1.FieldByName('m_name').Value:=Txtm_name.Text ;
  19. ADOTable1.FieldByName('laqab').Value:=Txtlaqab.Text ;
  20. ADOTable1.FieldByName('mother').Value:=Txtmother.Text ;
  21. ADOTable1.FieldByName('hala_ajtmaaea').Value:=Txthala_ajtmaaea.Text ;
  22. ADOTable1.FieldByName('child_num').Value:=Txtchild_num.Text ;
  23. ADOTable1.FieldByName('jens').Value:=Txtjens.Text ;
  24. ADOTable1.FieldByName('m_card').Value:=Txtm_card.Text ;
  25. ADOTable1.FieldByName('card_plc').Value:=Txtcard_plc.Text ;
  26. ADOTable1.FieldByName('oqaa_askry').Value:=Txtoqaa_askry.Text ;
  27. ADOTable1.FieldByName('ask_data_live').Value:=Txtask_data_live.Text ;
  28. ADOTable1.FieldByName('family_card_num').Value:=Txtfamily_card_num.Text ;
  29. ADOTable1.FieldByName('family_paper_num').Value:=Txtfamily_paper_num.Text ;
  30. ADOTable1.FieldByName('health').Value:=Txthealth.Text ;
  31. ADOTable1.FieldByName('health_type').Value:=Txthealth_type.Text ;
  32. ADOTable1.FieldByName('year_melad').Value:=Txtyear_melad.Text ;
  33. ADOTable1.FieldByName('melad_plc').Value:=Txtmelad_plc.Text ;
  34. ADOTable1.FieldByName('aqama_now').Value:=Txtaqama_now.Text ;
  35. ADOTable1.FieldByName('moahhel').Value:=Txtmoahhel.Text ;
  36. ADOTable1.FieldByName('takass').Value:=Txttakass.Text ;
  37. ADOTable1.FieldByName('moahel_date').Value:=Txtmoahel_date.Text ;
  38. ADOTable1.FieldByName('moahel_jeha').Value:=Txtmoahel_jeha.Text ;
  39. ADOTable1.FieldByName('snoat_kabra').Value:=Txtsnoat_kabra.Text ;
  40. ADOTable1.FieldByName('darja_now').Value:=Txtdarja_now.Text ;
  41. ADOTable1.FieldByName('darja_motaeen_bha').Value:=Txtdarja_motaeen_bha.Text ;
  42. ADOTable1.FieldByName('tarqea_data_last').Value:=Txttarqea_data_last.Text ;
  43. ADOTable1.FieldByName('morateb_asasy').Value:=Txtmorateb_asasy.Text ;
  44. ADOTable1.FieldByName('alaoa_sakan').Value:=Txtalaoa_sakan.Text ;
  45. ADOTable1.FieldByName('alaoa_family').Value:=Txtalaoa_family.Text ;
  46. ADOTable1.FieldByName('alaoa_tameez').Value:=Txtalaoa_tameez.Text ;
  47. ADOTable1.FieldByName('alaoa_other1').Value:=Txtalaoa_other1.Text ;
  48. ADOTable1.FieldByName('alaoa_other2').Value:=Txtalaoa_other2.Text ;
  49. ADOTable1.FieldByName('alaoa_other3').Value:=Txtalaoa_other3.Text ;
  50. ADOTable1.FieldByName('taqrer1').Value:=Txttaqrer1.Text ;
  51. ADOTable1.FieldByName('taqrer2').Value:=Txttaqrer2.Text ;
  52. ADOTable1.FieldByName('taqrer3').Value:=Txttaqrer3.Text ;
  53. ADOTable1.FieldByName('pnk_num').Value:=Txtpnk_num.Text ;
  54. ADOTable1.FieldByName('pnk_nam').Value:=Txtpnk_nam.Text ;
  55. ADOTable1.Post;
  56. ADOTable1.Close;
  57. except
  58.  
  59.  
  60.  
  61.  
  62.  


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

لاحظ كذلك ان البرنامج يقوم بتسمية الادوات التي سيستقبل فيها البيانات وبفرض انها ادوات نصية بالـ
TxtName
مثلا
وبفرض ان لذيك حقل اسمه name سيقوم بتسمية اداة النص TxtNmae اشارة الى اسم الحقل وعليك ان تقوم بتسمية ادواتك كما قام البرنامج بتسميتها
وذلك سيسهل عليك معرفة الحقل الذي تتعامل معه وعن طريق اسم الاداة نفسها

كما تصور لو انك مضطر الى فتح قاعدة البيانات بالاكسس وتنظر فيها ما اسم الجدول وتعدول الى الدلفي وتكتبه وتعود الى الاكسس مرة أخرى عملية مرهقة وصعبة.

قبل ان نكمل المشوار اردت ان اضعه هنا ليشارك فيه الاخرون ويضيفون له المزيد من الخدمات والتسهيلات

نقدكم ورأيكم ومشورتكم

طبعا يحتاج البرنامج ايضا الى قدرته في انشاء جمل الاستعلام SQl
كما يحتاج الى قدرته في التعرف على نوعية الحقل هل هو رقمي ام تاريخ ام نص حتى يضع الاداة المناسبة لكل حقل.

طبعا من العبث.
ومن المستحيل ان يعطيك شيفرة لا تحتاج الى تدخل ولو طفيف منك.
لابد وان تحتاج الى فعل هذا او تغيير بالاداة هذه، ولكنها تغييرات طفيفة وغير ذات أهمية

رابط تحميل المشروع
إضغط لإظهار المرفق

واخيرا شكر خاص الى كل الذين قدموا توجيهاتهم
وشكر الى الكثير من الاشخاص الذي كتبوا بعض المواضيع وارفقوا بعض الامثلة التي ساعدتني في اعداد هذا البرنامج


والله الموفق
mohamed.dz
السلام عليكــم ورحمـة الله وبركاتــه
بارك الله فيك أخي
والله برنامج أعجبني كثيرا وبه مميزات رائعة
سنقوم بتطويره معا إن شاء الله

ترقب إقتراحاتي قريبا ...

بالتوفيق إن شاء الله
Framework2


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

الاخوة الاعزاء

جميل ان اعجبك البرنامج يا اخ mohamed.dz
وانا انتظر منك تطويرا له

وعذرا لانني قمت بتغييرات كبيرة في البرنامج وهذه هي النسخة المعدلة
إضغط لإظهار المرفق

استخدمت هذا الاسلوب في فتح النوافذ حتى يمكن لائ شخص اضافة ما يريد من خدمات للبرنامج
كما اضفت له حافظ للاكواد
وبذلك يكون البرنامج له القدرة على
حفظ واستراج الاكواد
استخراج الايقونات من الملفات
عرض الاجراءات التي تقوم ملفات Dll بتصديرها
وبه معالج انشاء جمل استعلام SQl
وقدرته على تسجيل الملفات من نوع Activex(OCX)

وطبعا كل هذه الاشياء يحتاجها اي مبرمج
ووجودها معا بمكان واحد مهم كثيرا

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

والله الموفق
Framework2
السلام عليكم

اردت ان اضيف بعض التعليقات التي قد تفيد
تم تمكين المستخدم من القدرة على اختيار اسم الجدول AdoTabel وكذلك كائن الاتصال AdoConection
وبحال لم يختر اسما تم ادراج الاسماء الافتراضية

في نافذة مولد شفرات الاستعلام قمت بمحاول سريعة فيما يخص الامر Insert ولكن لضيق الوقت لم اكمل العمل
لدي رغبة في اضافة المكون AdoQuery مع المكون AdoTabel بحيث يمكن للبرنامج توليد الشفرات لهما كليهما.
بالنسبة الى حافظ الشيفرات
فبقاعدة بياناته يوجد جدولين
احدهما بالاسم T1 وهو خاص لشيفرات الدلفي
والاخر بالاسم T2 وفيه توجد مجموعة كبيرة من دوال APi وبامثلة كاملة ولكن بلغة الفجوال بيسك
ولم اقم بحذف هذا الجدول لعل احدا يريد ان يستفيذ منه
وقاعدة البيانات هذه كنت استخدمها مع احد البرامج الخاصة بي في الفجوال بيسك

هذه بعض الملاحظات التي اردت اضافتها

والله الموفق
mohamed.dz
السلام عليكــم ورحمـة الله وبركاتــه
أخي العزيز أردت أن أضيف ميزة (شكلية) للبرنامج
وهي ال tabs بحيث يستطيع المستخدم التنقل بين نوافذ البرنامج بسهولة

الملف المعدل في المرفقات

النقطة التي أعمل عليها الآن هي :
تحويل قاعدة بيانات access إلى excel والعكس
ثم تعميم العملية على أي قاعدتي بيانات يتم اختيارهما من طرف المستخدم
mohamed.dz
السلام عليكــم ورحمـة الله وبركاتــه
إن شاء الله تكونو كلكم بخير 053.gif

في الملف المرفق البرنامج المعدل حيث أضفت له فورم جديدة للتحويل من Excel إلى Access
وطريقة عمله كالآتي :
تقوم أولا بفتح ملف Excel (موجود مسبقا ويحتوي على حقول معينة، بحيث يكون عنوان الحقل في أعلى العمود) ثم اختر الصفحة
ثم فتح ملف Access (كذلك يحتوي على جداول وحقول ...) ثم اختر الجدول وأدخل كلمة المرور إذا كانت موجودة أو أتركها فارغة
ثم إضغط على الزر "List of fields" فيقوم البرنامج حينها بملء قائمتين إحداهما تحتوي على جميع حقول ملف الExcel وأخرى على حقول قاعدة البيانات Access
ثم تأتي مرحلة الربط بين الحقول، حيث تختار إسم الحقل من قائمة حقول Excel ثم حقل من قائمة حقول Access وتضغط على زر >> فيقوم بإضافة الحقلين في قائمة relation
هذه الطريقة مفيدة خاصة في حالة عدم تشابه أسماء الحقول، مثلا في ملف Excel تكون تسمية الحقل بالإنجليزية "Name" ويقابله في Access الحقل باللغة الفرنسية "Nom" .
وفي الأخير تضغط على الزر "Transfet Data" لبدء تحويل المعلومات من Excel إلى Access

طبعا هذا البرنامج كنت قد بدأت في برمجته منذ فترة قصيرة لأني احتجت إليه في العمل، ثم توقفت عنه.

وهو ليس كامل ويحتاج إلى مزيد من التطوير، مثل إضافة خيار replace إذا كان السجل المراد تحويله موجود في قاعدة البيانات الثانية (المحول إليها)، وإضافة التحويل من Access إلى Excel، وإضافة أنواع أخرى من قواعد البيانات (جربت الطريقة مع MySQL من قبل ونجحت) ...

أرجوا أن تكون هذه الإضافة مفيدة ... وأن نستمر في تطويرها معا ...

بالتوفيق لكم جميعا.
mohamed.dz
للرفع
Framework2


بســم الله الـرحمــن الرحيــم
والسلام من السلام

اما وبعد

شكرا يا صديقي على تعاونك 015.gif
53e35528a2.gif


يبدوا ان لا احد اخر سيشارك معنا هنا
ولكن هذا لا يهم على الاقل انني ارى ان هناك تحميل للامثلة المرفقة وهذا يعني ان هناك من يستفيذ بالتاكيد
المشكلة ان لا وقت لدي blink.gif

ولا اعتقد انني ساضيف شيئا بهذه الايام sleep.gif

ربما بعد فترة اكون قد حصلت على الدلفي 2007 laugh.gif

فحقيقة لا زلت لا استطيع التاقلم مع الدلفي 7 ومع واجهته IDE
وطريقة توزيعه للنماذج وغيرها
unsure.gif

وكل عام وانتم بخير مسبقا
أخخخخ لو كان لدي وقت لك يا دلفي أخخخخ
36_13_1[1].gif

ولكن لا يهم ذات يوم ساصل الى نهاية الطريق فيه
003.gif


وحتى ذلك الوقت وان بقينا احياء اقول لكم
الى اللقاء
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.