الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في نافذة الإتصال

بدأه MMA_EG_Cairo في 31 مايو 2008 · 3 رد · 1,845 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الأخوة الكرام ، السلام عليكم ورحمة الله وبركاتة ،

بإختصار شديد أنا لدي مشكلة متعلقة بعملية الـ LOG-ON ، وبحثت كثيراً بالمنتدي قبل طرحي لهذا السؤال

أنا لدي مستخدم يدعي DB ، وكلمة مرورة هو DB2007 !!!

عندما أفتح الملف FRM1.FMX من الطبيعي أنه يعرض لي نافذة تدعي ( إتصال LOGON ) ، تحتوي علي ثلاثة مربعات نصية ، الأولي خاصة بإسم المستخدم ، والثانية خاصة بكلمة المرور ، أما الثالثة فهي خاصة بإسم السيرفر

لحل هذه المشكلة من الطبيعي إستخدام الكود المناسب له في حدث ON-LOGON كما يلي :

LOGON('DB','DB2007@PROORA');

ولكن أخواني مشكلتي ليست في هذه العملية علي الإطلاق ، ولكن مشكلتي متعلقة بكيفية إخفاء هذه الشاشة أياً كان حتي ولو كانت عملية الإتصال غير صحيحة ، مثلاً لو قمت بتغيير عملية الإتصال كما يلي :

LOGON('DB-SSSS','DB2007@PROORA');

كيف يمكنني تفادي هذه النافذة وإغلاق البرنامج علي الفور ، او علي الأقل إستدعاء نافذة أخري تقوم بهذه المهمة

شكراً ، ومنتظر الرد ،

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#2

ما الخبر ، هل ليس هناك أي حلول لهذه المشكلة ؟؟؟

إخواني الكرام ، بكل بساطة أنا أستخدم الحدث ON-LOGON في الإتصال مع قاعدة البيانات ، او مع إحدي المستخدمين !!!

بكل بساطة ، أنا أرغب في عرض نافذة من تصميمي الخاص بحيث أن يكون من خلال هذه النافذة تمكن المستخدم العادي من عملية الإتصال بقاعدة البيانات ، ولكن قبل عرض هذه النافذة يجب التحقق من صحة الإتصال نفسة ، ففي حالة حدوث أي خطأ أثناء الإتصال مع إحدي المستخدمين.

LOGON('USER NAME','PASSWORD@SERVERNAME');

ولكن في حالة حدوث أي مشكلة يتم عرض النافذة الخاصة بي ، وليس نافذة الـ Connect العادية

كيف يتم هذا ؟؟؟

شكراً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#3

يا جماعة ، كل الي عاوزة أن أصنع فحص كامل علي الإتصال دون عرض نافذة الإتصال الغبية التي تعرض في بداية الفورم !!!

حيث أستخدمت الكود التالي دون إيجاد نتيجة لها :

BEGIN
   LOGON('SYSTEM','MANAGER@PROORA',FALSE);
   IF(ERROR_CODE <> 0)THEN
	   MESSAGE('عملية الإتصال غير سليمة');
	   MESSAGE('عملية الإتصال غير سليمة');
	   RAISE FORM_TRIGGER_FAILURE;
   END IF;
END;

ولكن هذا الكود لا يعمل ، يجب أن يتم إرسال القيمة TRUE ولكنها تعرض لي نافذة الإتصال ، وانا لا أرغب في عرض هذه النافذة

ياريت لو أحد يعلم حل هذه المشكلة يساعدني

شكراً مقدماً

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#4

الإخوة الكرام ، السلام عليكم ورحمة الله وبركاتة ،

في الحقيقة أنا دخت كثيراً حتي تمكنت من إيجاد حل مبدئي ، وبجد أنا حصلت علي هذه الفكرة بالصدفة أثناء بحثي بملف المساعدة الخاص بالأوراكل ديفيلوبار !!!

والطريقة سأدرجها بالمنتدي حتي أتأكد من صحة الكود ، وفي نفس الوقت تكون كمعلومة لمن تواجهه هذه المشكلة مثلي !!!

بإختصار شديد ، نحن لدينا دالة تدعي USER ، هذه الدالة تستخدم في جلب إسم المستخدم الحالي بشرط أن يكون النموذج متصل فعلياً بإحدي المستخدمين ، وإلا سيعرض لك رسالة تحت رقم ( ORA-03114 ) ، وإليكم طريقة إختبار النتيجة :

1- أفتح نموذج جديد وإلغي عملية الإتصال ، وذلك من خلال حدث ON-LOGON قم بإدراج الجملة NULL علي مستوي النموذج.

2- أدرج زر أمر جديد ، ومن ثم أكتب بداخلة الجملة التالية :

DECLARE
UN  VARCHAR2(50);
BEGIN
UN := USER;
END;

3- قم بتشغيل النموذج ومن ثم أنقر علي الزر ، فستجد الرسالة فعلياً تحت رقم ( ORA-03114 ).

حاول تغلق النموذج ، وأدرج الكود التالي في حدث ON-LOGON :

LOGON('SYSTEM','MANAGER@PROORA');

ومن ثم قم بتشغيل النموذج ثانيتاً ، وأنقر علي زر الأمر فستجدة لا يعرض أي خطأ ، بل يقم بجلب إسم المستخدم ومن ثم إدراجة بالمتغير UN

---------------------------------

إذاً ، الآن يمكننا إستغلال هذا الموقف الجميل وإنشاء الغرض التالي :

FUNCTION TEST_CONNECT RETURN BOOLEAN
IS
  ID_UNAME VARCHAR2(50);
BEGIN
  ID_UNAME := USER;
  RETURN TRUE;
EXCEPTION
WHEN OTHERS THEN
  RETURN FALSE;
END;

أما لإجراء إختبار فعليك بإستدعاء هذه الدالة كما يلي :

LOGON('SYSTEM','MANAGER@PROORA',FALSE);
IF(TEST_CONNECT = FALSE)THEN
   RAISE FORM_TRIGGER_FAILURE;
END IF;

حاول أن تغير كلمة المرور أو إسم المستخدم أو الخادم سيرفض فتح النموذج من أساسة ، مثلاً غير إسم المستخدم الي أي إسم غير موجود من أساسة ، أو غير كلمة المرور أو إسم الخادم الي إسم خاطيء !!!

إخواني ، أنا أستخدمت أسلوب التحايل طالما إمكانيات الديفيلوبار ضعيفة لهذه الدرجة ، بس أعمل أية للضرورة أحكام :D

فياريت لو الطريقة جيدة أو حتي غير جيدة أتمني التوجية من حضراتكم !!!

شكراً لكم جميعاً

السلام عليكم

Simble.zip

تم تعديل هذه المشاركة بواسطة MMA_EG_Cairo في 2 يونيو 2008 في 05:31

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

مواضيع مشابهة