easyDelphi Q&A
+3 تصويتات
97 مشاهدات

السلام عليكم 

أعتقد أن السؤال واضح  شكرا لكم smiley
فقط اريد التحقق ان أمكن من دون استعمال كويري 

سُئل في تصنيف vcl بواسطة (1,330 نقاط)
عُدل بواسطة | 97 مشاهدات
 
غير العنوان, الى التحقق من وجود قيمة لحقل ما, وليس التحقق من وجود حقل
لأ غير واضح،
مثال
حقل Field في جدول table مرتبط بقاعدة بيانات من نوع كذا عند الحدث OnBeforeInsert

3 إجابة

0 تصويتات
أفضل إجابة

وعليكم السلام, يمكنك استخدام Locate, "تعديل لمثالك فقط":

begin
if ADOTable2.Locate('field',edit1.Text,[]) = true then
	begin
	//what to do if return value is true
	end
else
	begin
	//what to do if return value is false
	end;	
end;

إذا كنت تريد تفقد أكثر من حقل:

adotable.locate('field1;field2', VarArrayOf([edit1.Text, edit2.text]), [options])

في options هناك اثنين هما:

loCaseInsensitive اذا ادرت عدم التفريق بين الاحرف الكبيرة والصغيرة a A

loPartialKey: سيكون البحث جزئي, أي اذا وجد جزء من القيمة المراد البحث عنها سيرجع true

 

تم الرد عليه بواسطة (1,200 نقاط)
مختارة بواسطة
ربي يحفضكم الاساتذة كان خطأ مني كنت أقصد قيمة و ليس حقل كامل أرجو المعذرة
جربت الكود الثاني يشتغل أحسن و اسرع  سأستعمله شكرا لكم
هذه الاجابة غير متعلقة بالسؤال!
استخدام Locate في قواعد بيانات SQL غير احترافي
استعمل استعلام مباشر
select field from table where field =
لا أعلم لم الهوس بdownvotes, أعلم أن السؤال خاطئ, فقط وضح في تعليقه أنه يريد القيمة وليس الحقل, أيضا قال بدون استخدام query, ثانيا هم لم يبحث عن طريقة "إحترافيةّ" لاستخدامها, هو اراد شيء يخلصه من الكويري فقط
تستطيع ببساطة تعديل السؤال ليكون اكثر احترافية، وهو ايضا،
بعمري هذا انا اخذ دور المربي.
سيد Abdo .
الموضوع لا يحتاج نقاش . القصة واضحة جدا . سؤاله مختلف جدا عن طلبه . السؤال خطأ . وتم اخباره . لكن لم يغير السؤال بل اختار افضل اجابة .
السؤال خطأ . يعني الجواب خطأ ..
نريد ان يصبح هذا الموقع مرجع للجميع . ووجود اسئلة خطأ . شيء مرفوض تمام ..
توضيحه ان السؤال خطأ في التعليقات . لا يكفي . يجب تعديل السؤال . فالناس لن تقرأ كل التعليقات . بل ستقرأ السؤال وتجيب على اساسه .
 يوجد معنا اشخاص محترفين لديهم سنوات خبرة طويلة لدرجة انها اكبر من بعض أعمار المشاركين في الموقع.  وعندما يقدمون رأيهم . فلا يعقل لأي شخص ان يقول ( هو لم يطلب الطريقة الاحترافية ) . عندما يطرح سؤال الجميع مشكورين يقدموا افضل الاجابات عندهم لمساعدة الجميع . فلا يصح ابدا ان يقال لأحدهم ( لم يطلب الطريقة الاحترافية ) ابدا ابدا .
الإجابات لا ترمى جزافا ولا اعتباطا ولا حتى تتم بطريقة متساهلة بحجة ( لم يطلب الطريقة الاحترافية ).
للسائل الحق في اختيار افضل طريقة رأها مناسبة لسؤاله احترافية كانت او غير احترافية.
وللجميع حق معرفة باقي الاجابات احترافية كانت او لا .
وللجميع لهم الحق بتقييمها بـ upVoite و DownVoite . هذا ليس هوسا . هذا حق لكل شخص وتعبير عن عدم رضاه او اقتناعه او العكس .

وشكرا لتفهمك
بورك فيك، نعم كان هناك خطأ في السؤال، وانا اجبته بناءاً على التعليق الذي اضافه لأني كنت أعرف أنه سيتم تصحيح السؤال إما من أحد المشرفين أو من طرفه هو، أما ما قلته عن "الاحترافية" فقد كان تسرعا مني فاعذروني وشكرا.
شكرا لتفهمك. فما كان مقصدي غير الخروج بموقع مفيد قدر الامكان.
طبعا نحن نتابع الاسئلة وننوه اذا وجدنا مشكلة. وياتينا ابلاغات عليها فالجميع يتابع ويراقب .
لكن نعطي الفرصة لصاحب السؤال اولا لتدارك المشكلة فهو ادرى مننا بطلبه وسؤاله.
 في حال تاخره تقوم بتصليح المشكلة بما نراه اقرب لما فهمنا من كلامه.
بالنسبة لموضوع الاحترافية. فلا تشغل بالك. نحن نحاول الاستفادة من خبرات الجميع والمشاركة بها للجميع.
واهلا وسهلا بك مشارك نعتز به وبمشاركاته
+3 تصويتات

استخدم FindField . هذا الاجراء سيعيد لك قيمة من نوع TField . وان لم يجد الحقل سيعيد nil . هي نفسها FieldByName . لكن سيعيد nil في حال لم يجد الحقل ولن يعطي خطأ
( راجع http://docwiki.embarcadero.com/Libraries/Berlin/en/Data.DB.TDataSet.FindField
 

if tbl.findfield <> nil then...


ملاحظة اضافية :
اذا كنت تريد تصيد الخطأ بشكل عام فقط . استخدم try  except . وبعدها ان اردت تحديد سبب الخطأ فتاكد منه في except  . هذا سيجعل التحقق فقط عند حدوث الخطأ . وليس عند كل عملية ادخال.

تم الرد عليه بواسطة (18,170 نقاط)
ربي يجازيك خير استاذ
للأسف لم يعمل معي الكود أعلاه لم أعرف تطبيقه بصراحة
للافادة الكود التالي جربته و اشتغل
begin
.ADOTable2.First;
while not ADOTable2.Eof do
 begin
if ADOTable2['field'] = Edit1.Text then
 begin
ShowMessage('This record is Present....!!');
Exit;
end
else
ADOTable2.Next;
end;
ربي يرزقك خير استاذ سامر على التعب
سؤالك كان واضح جدا كما ذكرت انت . انت تريد التحقق من وجود حقل .
ومثالك في التعليق هو للتحقق من وجود قيمة في الحقل . وليس وجود حقل .
انا اجبتك حسب سؤالك . عن التحقق من وجود الحقل وليس قيمة في حقل
+1 تصويت

         تم تعديل السؤال ليوافق تعليقات السائل والاجابة . ومنعا من تشويش القارئ والمتابع .       

تم الرد عليه بواسطة (18,170 نقاط)

اسئلة متعلقة

0 تصويتات
2 إجابة
سُئل سبتمبر 11 في تصنيف vcl بواسطة Yamada Fakir (1,330 نقاط) | 38 مشاهدات
+1 تصويت
1 إجابة
سُئل أغسطس 20 في تصنيف vcl بواسطة Yamada Fakir (1,330 نقاط) | 77 مشاهدات
+2 تصويتات
1 إجابة
سُئل سبتمبر 11 في تصنيف vcl بواسطة Yamada Fakir (1,330 نقاط) | 32 مشاهدات
+2 تصويتات
1 إجابة
سُئل أغسطس 6 في تصنيف vcl بواسطة KHALED (6,350 نقاط) | 52 مشاهدات
+2 تصويتات
2 إجابة
سُئل نوفمبر 10 في تصنيف vcl بواسطة Amar Gozim (10,290 نقاط) | 22 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

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

267 سؤال
476 إجابة
833 تعليق
163 مستخدم