delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف يمكنني التحكم في رسائل الخطأ التي تظهر لي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
لدي قاعدة بيانات اكسس مربوطة ببرنامج دلفي. سؤالي هو :
كيف يمكنني التحكم في رسائل الخطأ التي تظهر لي مثل رسالة عدم تكرار حقل المفتاح أو إلزامية إدخال البيانات في الحقل الذي لا يقبل الفراغ.
وشكرا
وعليكم السلام

ما اعرفه اننا نستعمل Try..Except لتعامل مع رسائل الأخطاء
وهذا مثل على ذلك :
PHP كود :
var
  
X : Integer = 0;
  
Y : Integer = 10;
  
Z : Integer = 0;
begin
  
try
    
Z := Y Div X;
  
except
    on EDivByZero 
do ShowMessage('Sorry you can''t division by zero');
  
end;
end; 
لا اعلم إذا كان الأمر مختلف مع قواعد البيانات .. لكن إذا كان مختلف ربما وجب عليك عمل
دالة تتحقق من ما إذا كان حقل المفتاح الذي يدخله المستخدم موجود مسبقاً ام ﻻ قبل إاضافته
أعتقد ان هذه الطريقة المتبعة ..

أعذرني فلم أتعلم التعامل مع قواعد البياانات منذ أن دخلت على هذه اللغة Smile
السلام عليكم ورحمة الله وبركاته،اولا أتقدم بالشكر للقاءمين على هذا المنتدى من الأساتذة الكرام والذين يساهمون في اثراء هذا المنتدى.
1- بالنسبة لرسالة عدم تكرار الحقل تستطيع ان تستخدم try..except..end; ,وهذا للكود يجب ان يوضع في الإجراء on click الخاص بزر الحفظ، خصوصا اذا كنت تستخدم dbedit . وهذا مثال على ذلك
PHP كود :
try
Table1.post;
Exception
Showmessage
('clé déjà existe');
End; 
كما انك تستطيع التحكم في رسالة الخطاء في الحدث onexit الخاص ب dbedit باستعمال findkey ولكن بحفظ الرقم (المفتاح الرئيسي)مثلا الموجود في dbedit في متغير ، ثم تقوم بإلغاء ادخال البيانات للجدول باستخدام cancel ,ثم تستخدم Findkey . وهذا مثال يوضح ذلك.
PHP كود :
var
S:string;
Begin
If table1.state in[dsedit,dsinsert] then
Begin
S
:=dbedit1.text;
Table1.cancel;
If  
table1.findkey([dbedit1.text]) then
Begin
Showmessage
('cle déjà existe');
Exit;
End
Else
Begin
Table1
.append;
Dbedit1.text:=s;
End;
End;
End; 

في المرة المقبلة ساوافيكم بشرح اخر انشاء الله،لإتمام الإجابة وشكرا.
السلام عليكم
بالاضافة الى ماقاله الاخوان و بما انك تستعمل اكسس فتوجد طريقة اخرى سهلة فعند انشاء احد حقول جدولك تختار نوعه مثلا numérique تجد خيارين :
- الخيار الاول : لو تريد ان لا يتكرر هدا الحقل فاختار unique
- الخيار الثاني : لو تريد ان لا يبقى هدا الحقل فارغا فاختر requis .
استعملت في مثالي access 2007 توجد صورة بالمرفقات للتوضيح
السلام عليكم
شكرًا للأخ على هذه المعلومات. جزاك الله كل خير.
لم يمش معي هناك خطأ في السورس
If table1.findkey([dbedit1.text]) then
وشكرا
السلام عليكم. شكرًا على الملاحظة عندي خطاء في الكود السابق،،،بما انني احتفظت بقيمة dbedit1 في المتغير s وقمت بإلغاء لإدخال المعلومات فان الكود يكون كالآتي :
PHP كود :
if table1.findkey([s]) then