الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كن من مبرمجي معالج بيانات يقوم بانشاء سيفرات برمجية لقواعد البيانات

بدأه Framework2 في 15 نوفمبر 2008 · 10 رد · 1,529 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

بمكان غير هذا المكان وبزمان غير هذا الزمان

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

تختار جدول فيقوم بعرض الحقول التي فيها

تقول له اعطني شيفرة لاضافة حقل جديد

فيعطيك شيفرة

تقول له اعطني شيفرة لتعديل بيانت حقل فيعطيك شيفرة

وبلحظات وجيزة ونقرات بسيطة تبرمج برنامجك

ويغنيك عن كتابة الكثير من الكود.

وبهذا الزمان وبهذا المكان والان ادعوكم جميعا يا خبراء الدلفي للقيام بذلك

الامر بسيط جدا

لنبدا بالتالي

قاعدة بيانات أكسس AdoTabel يقوم بكل المهمات

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

كبداية فليخبرني احدكم كيف اظهر الجداول من قاعدة البيانات عند فتحها

وكيف استخلص الحقول من جدول في List

ودعوني ابدا اول الخطوات

وإن شاء الله لن اخيب سعيكم وستكون النتائج جيدة

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

واساعد بقدر ما استطيع

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

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

وربما انشاء كلاسس كامل للتعامل معها

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

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

والله الموفق

مبتدئ في الدلفي

#2

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

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;

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#3

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

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

adoConnection1.GetTableNames
adoTable1.GetFieldNames

الاخ: محمد نسمان

بارك الله فيك والله وما قصرت

والشكر الجزيل على مساعداتك بخبراتك

وسوف اجربه وإن شاء الله يعمل على احسن ما يرام

والله الموفق

مبتدئ في الدلفي

#4

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

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

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

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

البرنامج حتى الان يقدم لك نص الاتصال بقاعدة البيانات

ويقدم لك شفرة لاضافة بيانات جديدة

شفرة لتعديل بيانات محفوظة

شفرة لقراءة بيانات محفوظة

كما تم اضافة له خدمتان جديدتان

امكانية استخراج الايقونات من الملفات التنفيذية وملفات الربط الديناميكي

لاستخدامها في التصميم

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

لمساعدة المبرمج على معرفة ما هية الاجراءات التي يحتوي عليها الملف

كما تم اضافة اماكنية تسجيل ملفات 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

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

طبعا من العبث.

ومن المستحيل ان يعطيك شيفرة لا تحتاج الى تدخل ولو طفيف منك.

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

رابط تحميل المشروع

DataWhezard.zip

واخيرا شكر خاص الى كل الذين قدموا توجيهاتهم

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

والله الموفق

تم تعديل هذه المشاركة بواسطة Framework2 في 18 نوفمبر 2008 في 09:42

مبتدئ في الدلفي

#5

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

بارك الله فيك أخي

والله برنامج أعجبني كثيرا وبه مميزات رائعة

سنقوم بتطويره معا إن شاء الله

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

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

بسم الله الرحمن الرحيم " وقل رب زدني علما"

#6

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

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

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

جميل ان اعجبك البرنامج يا اخ mohamed.dz

وانا انتظر منك تطويرا له

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

New.zip

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

كما اضفت له حافظ للاكواد

وبذلك يكون البرنامج له القدرة على

حفظ واستراج الاكواد

استخراج الايقونات من الملفات

عرض الاجراءات التي تقوم ملفات Dll بتصديرها

وبه معالج انشاء جمل استعلام SQl

وقدرته على تسجيل الملفات من نوع Activex(OCX)

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

ووجودها معا بمكان واحد مهم كثيرا

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

والله الموفق

مبتدئ في الدلفي

#7

السلام عليكم

اردت ان اضيف بعض التعليقات التي قد تفيد

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

وبحال لم يختر اسما تم ادراج الاسماء الافتراضية

في نافذة مولد شفرات الاستعلام قمت بمحاول سريعة فيما يخص الامر Insert ولكن لضيق الوقت لم اكمل العمل

لدي رغبة في اضافة المكون AdoQuery مع المكون AdoTabel بحيث يمكن للبرنامج توليد الشفرات لهما كليهما.

بالنسبة الى حافظ الشيفرات

فبقاعدة بياناته يوجد جدولين

احدهما بالاسم T1 وهو خاص لشيفرات الدلفي

والاخر بالاسم T2 وفيه توجد مجموعة كبيرة من دوال APi وبامثلة كاملة ولكن بلغة الفجوال بيسك

ولم اقم بحذف هذا الجدول لعل احدا يريد ان يستفيذ منه

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

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

والله الموفق

مبتدئ في الدلفي

#8

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

أخي العزيز أردت أن أضيف ميزة (شكلية) للبرنامج

وهي ال tabs بحيث يستطيع المستخدم التنقل بين نوافذ البرنامج بسهولة

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

النقطة التي أعمل عليها الآن هي :

تحويل قاعدة بيانات access إلى excel والعكس

ثم تعميم العملية على أي قاعدتي بيانات يتم اختيارهما من طرف المستخدم

DataWizard0.1.zip

بسم الله الرحمن الرحيم " وقل رب زدني علما"

#9

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

إن شاء الله تكونو كلكم بخير

في الملف المرفق البرنامج المعدل حيث أضفت له فورم جديدة للتحويل من Excel إلى Access

وطريقة عمله كالآتي :

تقوم أولا بفتح ملف Excel (موجود مسبقا ويحتوي على حقول معينة، بحيث يكون عنوان الحقل في أعلى العمود) ثم اختر الصفحة

ثم فتح ملف Access (كذلك يحتوي على جداول وحقول ...) ثم اختر الجدول وأدخل كلمة المرور إذا كانت موجودة أو أتركها فارغة

ثم إضغط على الزر "List of fields" فيقوم البرنامج حينها بملء قائمتين إحداهما تحتوي على جميع حقول ملف الExcel وأخرى على حقول قاعدة البيانات Access

ثم تأتي مرحلة الربط بين الحقول، حيث تختار إسم الحقل من قائمة حقول Excel ثم حقل من قائمة حقول Access وتضغط على زر >> فيقوم بإضافة الحقلين في قائمة relation

هذه الطريقة مفيدة خاصة في حالة عدم تشابه أسماء الحقول، مثلا في ملف Excel تكون تسمية الحقل بالإنجليزية "Name" ويقابله في Access الحقل باللغة الفرنسية "Nom" .

وفي الأخير تضغط على الزر "Transfet Data" لبدء تحويل المعلومات من Excel إلى Access

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

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

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

بالتوفيق لكم جميعا.

DataWizard0.2.zip

تم تعديل هذه المشاركة بواسطة mohamed.dz في 24 نوفمبر 2008 في 13:18

بسم الله الرحمن الرحيم " وقل رب زدني علما"

#10

للرفع

بسم الله الرحمن الرحيم " وقل رب زدني علما"

#11

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

والسلام من السلام

اما وبعد

شكرا يا صديقي على تعاونك :clapping:

:ty:

يبدوا ان لا احد اخر سيشارك معنا هنا

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

المشكلة ان لا وقت لدي :blink:

ولا اعتقد انني ساضيف شيئا بهذه الايام -_-

ربما بعد فترة اكون قد حصلت على الدلفي 2007 :lol:

فحقيقة لا زلت لا استطيع التاقلم مع الدلفي 7 ومع واجهته IDE

وطريقة توزيعه للنماذج وغيرها

:unsure:

وكل عام وانتم بخير مسبقا

أخخخخ لو كان لدي وقت لك يا دلفي أخخخخ

:ohmy:

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

:)

وحتى ذلك الوقت وان بقينا احياء اقول لكم

الى اللقاء

مبتدئ في الدلفي

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…