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

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

أعذرني فلم أتعلم التعامل مع قواعد البياانات منذ أن دخلت على هذه اللغة Smile
نلتقي لنرتقي
الرد
#3
السلام عليكم ورحمة الله وبركاته،اولا أتقدم بالشكر للقاءمين على هذا المنتدى من الأساتذة الكرام والذين يساهمون في اثراء هذا المنتدى.
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,dsinsertthen
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

في المرة المقبلة ساوافيكم بشرح اخر انشاء الله،لإتمام الإجابة وشكرا.
الرد
#4
السلام عليكم
بالاضافة الى ماقاله الاخوان و بما انك تستعمل اكسس فتوجد طريقة اخرى سهلة فعند انشاء احد حقول جدولك تختار نوعه مثلا numérique تجد خيارين :
- الخيار الاول : لو تريد ان لا يتكرر هدا الحقل فاختار unique
- الخيار الثاني : لو تريد ان لا يبقى هدا الحقل فارغا فاختر requis .
استعملت في مثالي access 2007 توجد صورة بالمرفقات للتوضيح


الملفات المرفقة
.rar   access.rar (الحجم : 100.62 ك ب / التحميلات : 24)
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#5
السلام عليكم
شكرًا للأخ على هذه المعلومات. جزاك الله كل خير.
الرد
#6
لم يمش معي هناك خطأ في السورس
If table1.findkey([dbedit1.text]) then
وشكرا
الرد
#7
السلام عليكم. شكرًا على الملاحظة عندي خطاء في الكود السابق،،،بما انني احتفظت بقيمة dbedit1 في المتغير s وقمت بإلغاء لإدخال المعلومات فان الكود يكون كالآتي :
PHP كود :
if table1.findkey([s]) then 
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم