09-05-18, 09:55 PM
(09-05-18, 02:11 PM)viv كتب : من ناحية انه يختصر الوقت أجل هو يختصر الوقت .
تصور هذا الكود انا مثلا عندي منظومة فيها 63 حقل لو اردت فقط في الاضافة سوف اكتب شيئا مثلا
PHP كود :
Try
With QryEmplye Do
begin
.Close;
.SQL.Clear;
.SQL.Add('Insert Into Emplye(ID,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address) Values (:ID,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address,:FirstNmame,:LastName,:Age,:City,:Phone,:Address)');
// Add Parameters to Query Control
.ParamByName('ID').Value:= Int;
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text);
.ParamByName('LastName').Value:= Trim(TxtLastName.Text);
.ParamByName('Age').Value:= Trim(TxtAge.Text);
.ParamByName('City').Value:= Trim(TxtCity.Text);
.ParamByName('Phone').Value:= Trim(TxtPhone.Text);
.ParamByName('Address').Value:= Trim(TxtAddress.Text);
.ExecSQL;
ShowMessage('Ok File is Added');
except on E: Exception do
ShowMessage('Error');
end;
end;
طبعا كتابة هذا الكود يدويا مرهقة ، ومكررة فقط .
في الدلفي لا توجد تقريبا الا طريقة واحدة مع كل مصادر البيانات ، المشكلة في الدوت نت تختلف الطرق مثلا طريقة استخدام محول البيانات والداتا ست وما الى ذلك كما يقول البعض هي طريفة قديمة ولا فائدة فيها ، اما من ناحية انشاء فئات ربما نطوره لانشاء فئات .
او من الممكن ان يكون الغرض منه تعليمي فقط وليس للاتكال علبه لصنع برامج ومنظومات حقيقية
يعني المبتدئين في التعلم يلجئون له لتوليد الكود واستخدامه ودراسته
فكل المنتدى مثلا تجده ممتلئ بالاسئلة من اشخاص يضعون اكوادهم للاضافة والتعديل او الحذف وفيها مشكلة .
احدهم نسى علامة تنصيص واخر نسى ربط محول البيانات بالداتا سيت واخر نسى امر Open وهكذا
ويمكن انشاء هذا البرنامج لكل هؤلاء ، فاكثر من 40% هذه هي مشاكلهم .
بالنسبة الى تطويره لانشاء فئات اذا كنت سوف تساعدنا بالتوجيه في كيفية الانشاء اخ ابو ليلي فسوف افتح موضوع للبدء فعلا ببرنامج لانشاء الفئات واريدك من الحين الى الاخر فيه لابداء الرأي ، وسيكون العمل جماعي ، او افتح انت موضوع وابداء الخطوات مثلا قل هذا مشروع جماعي ونريد برنامج لانشاء فئة بهذا الشكل لحقول قاعدة بيانات ونبداء نحن
وعندما ننتهي تقول مثلا اضيفوا لها الفئة كذا او اربطوها بالفئة كذا او اشتقوا منها كذا ونحن نعمل
أولاً شكراً أخي viv على هذة المبادرة الجميلة
لدي مداخلة وهي بخصوص الـ DataSet
كل الأمور التي تحدثتوا عنها موجودة أصلاً في الـ DataSet ( كلها تعتمد على الكائنات والفئات وهي عبارة عن فئات متوارثة في الـ NET.)
لا تحتاج إلى كتابة كل هذا الكود في حال إستخدمة الـ DataSet عن طريق الـ Wizard
حتى عملية الـ Add Parameters للـ 63 حقل ليس أنت من تقوم بها
أنت لا تقوم بكتابة شيء أصلاً
كل ما عليك هو تصميم الإستعلام من خلال نافذة تبني لك جملة الإستعلام
جميع الجداول في قاعدة البيانات تتحول لديك إلى فئات والحقول إلى Property داخل كل فئة وأمور كثيرة لا يسع ذكرها هنا.
لماذا لا يتحول الدرس إلى الـ DataSet وكيفية إنشائها والتعامل معها
السؤال هنا لماذا لا نستخدم التقنيات الموجودة أصلاً
أغلب الأعضاء في المنتدى يكتبون الأكواد بأنفسهم بنفس هذة الطريقة
كود :
Insert Into Emplye(ID,FirstNmame,LastName,Age,City,Phone,Address,FirstNmame,LastName,Age,City,Phone,Address
.ParamByName('LastName').Value:= Trim(TxtLastName.Text)
.ParamByName('Age').Value:= Trim(TxtAge.Text)
.ParamByName('City').Value:= Trim(TxtCity.Text)
.ParamByName('Phone').Value:= Trim(TxtPhone.Text)
.ParamByName('Address').Value:= Trim(TxtAddress.Text)
.ParamByName('FirstNmame').Value:= Trim(TxtFirstNmame.Text)
.ParamByName('LastName').Value:= Trim(TxtLastName.Text)
.ParamByName('Age').Value:= Trim(TxtAge.Text)
.ParamByName('City').Value:= Trim(TxtCity.Text)
.ParamByName('Phone').Value:= Trim(TxtPhone.Text)لماذا كل هذا بينما أنت لا تحتاج إلى التعامل معها أصلاً
أستطيع أنشاء ما يلزم لــ جلب البيانات من قاعدة البيانات وتحريرها وحفظها وإدخال جديد وحذفها بدون أن أضغط زر واحد على الكيبورد
وكل الجداول على شكل فئات أيظاً وجميع الكنترولات على النافذة مرتبطة بالحقول التي تخصها
ثلاث عناصر أنا حزين عليهم وبشدة : وبالأخص ( الـ DataSet ) من 13 سنة تقريباً وهذة العناصر موجودة ( منذ إصدارة 2005 )
الـ DataSet
الـ BindingSource
الـ TableAdapter
المسألة ليسة في قلت الشروحات أو المواضيع التي تتحدث عن هذة العناصر
المشكلة في أغلب المبرمجين المبتدئين : لا يريد أصلاً هذة الطريقة ، مرفوضة بالنسة له ـ والسبب أنه لا يستطيع أن يفهمها وربما لا يريد أصلاً أن يفهمها
[b]والبعض يقول أكرهها من كل قلبي[/b]
بارك الله فيك أخي viv على طرح هذا الموضوع
