![]() |
|
هل من سائل فاجيبه - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة Delphi (http://vb4arb.com/vb/forumdisplay.php?fid=213) +--- قسم : قسم اسئلة Delphi (http://vb4arb.com/vb/forumdisplay.php?fid=215) +--- الموضوع : هل من سائل فاجيبه (/showthread.php?tid=30344) |
RE: هل من سائل فاجيبه - asemshahen5 - 19-07-19 بصراحة أنا هاو و مبتدء ايضا و من سؤال أحد الأعضاء عن الفلترة كتب لي كود فلترة شبيه بهذا و انا اكتبه لك عله يفيدك : PHP كود : procedure TForm1.ComboBox1Change(Sender: TObject);RE: هل من سائل فاجيبه - abu ammar - 19-07-19 شكرا لك يا أخي سأجربه بعد صلاة الجمعة RE: هل من سائل فاجيبه - abu ammar - 19-07-19 الكود اشتغل مع الكومبوبوكس العادي بتعديل بسيط النجمة بدل العلامة المئوية. ولكن لا يعمل في حالة استخدام dblookupcombobox إذا كان dblookupcombobox يأخذ البيانات من جدول والجريد من جدول أخر فهذه الحالة تسمى master-detail الماستر ديتيل مع الدلفي لا توجد مشكلة ولكن المشكلة مع لازاروس الذي استخدمه باستمرار RE: هل من سائل فاجيبه - asemshahen5 - 19-07-19 هل هذا الكود يعمل مع لازاروس : PHP كود : procedure SelCombo(sql:ansiString;Q:TSQLQuery; var Combo:TComboBox);RE: هل من سائل فاجيبه - abu ammar - 19-07-19 شكرا جزيلا أخ asemshahen5 على مساعدتك تم تظبيط كل شيئ RE: هل من سائل فاجيبه - viv - 25-07-19 السلام عليكم ورحمة الله ها قد كتب لنا لقاء من جديد وعمر جديد والحمد لله ، نرجوا ان يكون في طاعة الله . أسف جدا ، يوم كتابتي لهذا المنشور لم يكن هناك اسئلة والسفر كان سيكون صباحا كانت ليلة طويلة يومها نتيجة التحضير للسفر . دخلت حسبما اذكر الساعة الواحدة صباحا او الثانية ووجدت بعض الأسئلة ولم يكن بالامكان الرد عليها لضيق الوقت ، خاصة وان السفر سيكون بعد عدة ساعات وسيكون مرهقا ومتعبا خلال صحراء وجبال . على العموم اشكر الاخ asemshahen5 فهو لم يقصر في تقديم العون وساحاول ان اعقب اليوم على كل ما مر معكم بالتوفيق للجميع RE: هل من سائل فاجيبه - asemshahen5 - 26-07-19 لا شكر على واجب . عَنْ زَيْدِ بْنِ أَرقَمَ قَالَ لا أَقُولُ لَكُمْ إِلا كَمَا كَانَ رَسُولُ اللَّهِ صَلَّى اللَّهُ عَلَيْهِ وَسَلَّمَ يَقُولُ : (( اللَّهُمَّ إِنِّي أَعُوذُ بِكَ مِنْ عِلْمٍ لا يَنْفَعُ وَمِنْ قَلْبٍ لا يَخْشَعُ وَمِنْ نَفْسٍ لا تَشْبَعُ وَمِنْ دَعْوَةٍ لا يُسْتَجَابُ لَهَا)) RE: هل من سائل فاجيبه - viv - 26-07-19 بالنسبة للاخ سندباد راجع هذا الدرس حيث تقوم بالعمل مع البيانات في الذاكرة تقوم بالحذف والتعديل والاضافة وتستطيع بعدها حفظ كل العمليات دفعة واحدة او كما بالمثال هنا تنشئ حقول وهمية وتضيف وتعدل تم تقراءها بواسطة Loop عادي وتحفظها بقاعدة البيانات http://vb4arb.com/vb/showthread.php?tid=29982 واذا كان هناك حفظ بقاعدة البيانات يعني هناك حقول اذا استخدم طريقة جلب الحقول من قاعدة البيانات تم اعمل بالوضع المنفصل تم احفظ يكون افضل من عمل Loop نضرة خاطفة على هذا المكون تكمن قوة ClientDataSet في حفظ البيانات في الذاكرة اي انه يمكنك ان تعمل بشكل منفصل عن قاعدة البيانات هو لا يختلف عن اي مكون وصول مثل TTable المبدأ الاساسي كما قلنا ان يتم حفظ البيانات في الذاكرة سيناريو بسيط يمكنك ان تستلف كابل انترنت في الصباح الباكر تتصل بالنت تحمل قاعدة البيانات الخاصة بك تحذف/تعدل/تضيف و في نهاية اليوم تعيد استلاف الكابل و تحفظ البيانات الى قاعدة البيانات! عفوا تفكير جزائري... بشكل اخر تريد ان تضيف سجل جديد تفتح الـ DataSet تجعلها على الوضع insert تملئ الحقول و تستدعي Post هذه الاخيرة ليست كالمعتاد مع ClientDataSet فهي لا تقوم بنقل البيانات الى قاعدة البيانات و انما كما قلت يتم حفض السجل في الذاكرة على انه مضاف و لكي يتم حفظ السجل في قاعدة البيانات يجب ان تستدعي ApplyUpdate و تمرر عدد اللاخطاء المسموح بها من زاوية اخرى ClientDataSet يمتلك نوعين من البيانات Data و Delta عندما نتحدث عن Data فاننا نتحدث عن البيانات التي لها ما يكافئها في قاعدة البيانات Delta ليس لها ما يكافئها و انما يتم تسجيل كل التغييرات المحدثة على البيانات فعندما تحذف سجل ما مثلا يتم الاشارة في الـ Delta على ان هذا السجل تم حذفه عندما تستدعي ApplyUpdate يتم مقارنة الـ Delta و الـ Data و يقوم الـ DataSetProvider بتوليد جمل الـ Sql حسب الطلب لا تقلق هو ذكي كفاية ليفعل ذلك ClientDataSet يعمل بشكل رائع مع DBExpress ما مشكلة DBExpress مكون SqlDataSet لديه القدرة قراءة و الى الامام فقط ماذا يعني هذا يمكن تحمل جدول Clients مثلا باستخدام ِSqlDataSet و عرضه في DBGrid يمكن تصفح DBGrid نزولا اذا حاولت الصعود سيفاجئك خطأ !! هذه احد المشاكل لا يتوفر على خاصية Prior !! تقوم بوضع SqlDataSet و تضع مكون DataSetProvider تربط DataSetProvider الى الـ SqlDataSet تضيف ClientDataSet و تربطه مع DataSetProvider الان تغلبنا على المشكلة يجيد الـ SqlDataSet قراءة البيانات من قاعدة البيانات يمررها الى DataSetProvider الذي بدوره يمررها الى ClientDataSet كمل تعلم ClientDataSet لديه القدرة على تخزين البيانات في الذاكرة عندما تستتدعي ApplyUpdate يتم مقارنة Data و Delta يقوم الـ Provider بتوليد جمل الـ Sql و يرسلها بدورة الى SqlDataSet الذي بدوره يسجلها في قاعدة البيانات و هكذا تم التغلب على مشاكل DBExpress بما ان ClientDataSet يسجل البيانات في الذاكرة عمليات البحث و الفلترة سريعة للغاية مقارنة بتقنيات وصول اخرى.. ...ليس هذا و حسب يمكن للـ ClientDataSet ان يعمل كجدول مفصول تماما عن قاعدة البيانات اي تنشئ جدولا و لا يوجد ما يقابله في قاعدة البيانات و عند التعامل معه فانت تتعامل معه مثلما تتعامل مع اي جدول اخر اضافة حذف تعديل لفعل ذلك ضع المكون نقر باليسار و اختر CreateDataSet ثم DoubleClick و اضق الحقول الخاصة بك ... هناك مثال كامل للاستخدام مع مكونات Absolute Database لاحظ انها نفس العملية مع اي قواعد بيانات واي مكونات يمكنك تطبيقها على قواعد بيانات Access او SQlServer مثلا وهنا الكود كامل لمشروع كود : unit Main;وهنا صورة للمشروع بالنسبة الى التلوين راجع الكود التالي : لتلوين النص فقط للخلية التي فيها التنبيه او التحذير او التركيز كود : procedure TForm1.DBGrid1DrawColumnCellلتلوين السطر كاملا الذي فيها التنبيه او التحذير او التركيز كود : procedure TForm1.DBGrid1DrawColumnCellلتلوين الخلية كاملة التي فيها التنبيه او التحذير او التركيز كود : procedure TForm1.DBGrid1DrawColumnCellبالنسبة للسؤال عن الـ DataModule DataModule هي نفسها عندما تضيفها يكون اسمها DataModule1 او DataModule2 او DataModule3 وهكذا وعندما ستحفظها ستحفظها بالاسم الذي تريد انا اسميها Data1 اسم اقصر واسهل في الكتابة والوحدة اسميها UntData بالنسبة للسؤال CheckBox وايضا Combpbox في الاداة DBgrid هناك مكونات جاهزة وموجود منها هنا في قسم المكونات اسمها EhLib فيها الكثير من المكونات لتحرير البيانات اذا اردت ان تفعل ذلك بنفسك ومن الصفر سوف نرفق الكود ايضا لدينا المكون StringGrid ولا يرتبط باي قاعدة بيانات يمكننا ان نضع فيه اي بيانات عن طريق رقم الخلية مثال كود : StringGrid1.Cells[0]:='system1';وبعدها Loop برقم الخلية لقراءة كل الخلايا مثلا كود : for int =1 to 10ولو كنت افضل استخدام طرق اخرى بديلة اسهل مثل استخدام مكونات تعمل بالذاكرة ولا تتصل بالبيانات RE: هل من سائل فاجيبه - sendbad100 - 26-07-19 الحمد لله على سلامتك
الله يعطيك العافية
ويزيدك علم
ويرزقك من حيث لا تحتسب
كفييت ووفيت شكرا لك
RE: هل من سائل فاجيبه - viv - 26-07-19 سوف انشر أمثلة عن هذا الموضوع ان شاء الله بقسم امثلة ومشاريع |