الانتقال إلى المحتوى

كيفية عمل Bind Variable في ال Jdeveloper


a5hhk

Recommended Posts

hالسلام عليكم شباب
أنا عملت query على view
وعملت قي where statment
Bind Vraiable


االسؤال هو كيفية ربط الBind Variable بمتغير من شاشة أخرى يكون المستخدم أدخله
مثلا ربط الBind variable برقم المستخدم من شاشة الدخول؟؟

وشكرا لكم

رابط هذا التعليق
شارك

  • الردود 41
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

  • sd4it

    18

  • a5hhk

    12

  • omdawebs

    4

  • visiterman

    4

في شاشة الدخول ضع رقم المستخدم في session وليكن اسم المتغير هو userId.
اذهب للـ view object ثم اضغط مرتين على الـ bind variable.
في value type اختر expression وفي value اكتب
javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userId")

رابط هذا التعليق
شارك

مرة أخرى شكرا لك sd4it على مساعدتك لي
بعد وضع الكود ظهرت لي هذه الجملة بعد ما عملت تشغيل لصفحة الدخول
وعملت دخول بنجاح وذهبت للصفحة التالية


Variable userName not recognized

مع العلم أن شاشة الدخول عندي تستخدم المتغيرين التاليين
userName, password

وشكرا لك

تم تعديل بواسطة a5hhk
رابط هذا التعليق
شارك

شكرا مهندس مصطفى مرة أخرى
قمت بشرح جميع الخطوات التي عملتها في ملف وود
لأنني أجد صعوبة في وضع الصور في النتدى
وشكرا لك

error_screen.doc

رابط هذا التعليق
شارك

يوجد خطئان.
الخطأ الأول أنه في شاشة الدخول لم تقم بوضع قيمة اسم المستخدم في session ولذلك ضع السطر التالي
javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("userName", userName)

الخطأ الثاني أنه عندما كتبت الـ expression في الـ view object فلم تضع الكلمة userName بين علامتي تنصيص quotations مثل السطر التالي
javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userName")

صحح الخطئين وبإذن الله ستحل المشكلة

رابط هذا التعليق
شارك

شكرا جزيلا جزيلا مهندس مصطفى على مساعدتك لي مرة أخرى
وقد إنحلت المشكلة أخيرا بفضل الله ثم بمساعدتك لي
ولكي نكون في الصورة ياريت تشرح لينا الكود ؟

وأيضا كيف أعمل الحقل الذي فيه Bind Variable غير مرئي لكي لا يمكن المستخدم من تحديثه؟

وسؤال أخير كيف يمكنني أن أكبر الحقول لأنها تأني بشكل صغير جدا؟


وفي النهاية شكرا لك مرة أخرى أستاذي

رابط هذا التعليق
شارك

في ADF (ومن قبله JSF) توجد مكتبات جاهزة للتعامل مع session كما كتبته في السطر الذي أرسلته لك ولذلك ليس فيه الشرح بقدر المعرفة حيث لا بد أن تعرف المكتبات الموجودة للتعامل مع session.
لإخفاء bind variable فاذهب إلى view object ثم اضغط مرتين على تعريف الـ bind variable ثم اذهب إلى التبويب Control Hints وفي display Hint اختر Hide.
لتكبير الحقول استخدم الخاصية Columns للحقل واكتب فيها حجم الحقل كما تريد

تم تعديل بواسطة sd4it
رابط هذا التعليق
شارك

شكرا مهندس مصطفى على تجاوبك السريع معي
ولكن عملت في dispaly hint
Hide ولكن في التشغيل لم تختفي ال bind variable?

وبالنسبة للحقول نعم لقد كبرت ولكن أفقيا فقط من خلال width
فمالطريقة لكبيرها عموديا أيضا؟

وسؤال أخير ولو كثرت عليك أستاذي:
عملت في search متغيرين username والذي نقرأه من session
ومتغير ثاني Date ولكن عند الضغط غلى calendar تأتي هذه رسالة الخطأ:
java.lang.illegalArgumentException:cannot cnver 2010-10-19 of type class oracle.jbo.domain Dates to class java.sql Timstamp
ADF_FACES-60097

فماالحل لهذا الخطأ؟

وشكرا لك أستاذي

رابط هذا التعليق
شارك

أرسل شكل الشاشة وشكل الـ bind variable حتى يمكن التأكد من صحة الخطوات.
لتكبير الحقول عمودياً فاستخدم الخاصية rows.
تأكد من نوع المتغير Date

رابط هذا التعليق
شارك

لقد أرسلت الشاشة مع شكل Bind Variable في الملف المرفق

ولقد تأكدت من نوع المتغير وهو Date
المشكلة تظهر عند إعادة إستخدام الCalendar
يعني في أول مرة لا توجد مشاكل ولكن عند تغيير التاريخ مرة أخرى تظهر لي رسالة الخطأ


أين أجد خاصية rows لأنني بحثت عمها ولم أجدها


شكرا مرة أخرى أستاذي الفاضل

adf_screen.doc

رابط هذا التعليق
شارك

لقد إنحلت مشكلة الcalaendar بعد ما غيرت نوع Bind Variavle من Date إلى Timestamp

وخاصية rows وجدتها في Appearance
ولكن فقط في خاصية الحقول Input Text
ولكن في search result لا توجد هذه الخاصية

رابط هذا التعليق
شارك

ما يظهر في الصفحة هو الحقل Customer Name ولكن الـ bind variable هو CUSTOMER_ID وبالتالي لا علاقة لهم ببعض.
أي حقل يمكنك تغيير أي خصائص له من خلال الـ skinning

رابط هذا التعليق
شارك

أستاذي الفاضل مهندس / مصطفى
الفكرة من البداية كانت تمرير إسم المستخدم والذي هو نفسه Customer Number من شاشة الدخول إلى شاشة البحث
وهو ما قد حصل بإستخدامنا session

والآن في شاشة البحث لا أريد المستخدم أن يعدل أو أن يرى Customer Number الذي هو جزء من عملية البحث

وشكرا لك

رابط هذا التعليق
شارك

الحمد لله إنحلت المشكلة وقد حذفته من query component
شكرا لك أستاذنا و لا ننحرم من مساعدتك لنا

عندي سؤلان آخران:
في شاشة الدخول بعد إدخال إسم المستخدم وكلمة المرور , أريد المستخدم أن يضغط enter من دون إستخدام الماوس؟

عندي عمود عبارة عن أرقام أو مثلا درجات الطلاب وأريد إظهار المجموع في أسفل حقل الدرجات

وشكرا لك

رابط هذا التعليق
شارك

استخدام الخاصية defaultCommand للـ form وضع فيها id الزر الذي تريد تنفيذه عند الضغط على الزر enter.
يمكنك إضافة transient variable في الـ view object ثم بإضافة SQL عليه تقوم بحساب ما تشاء

رابط هذا التعليق
شارك

default command هو الخاصية التي تحدد اسم الزر الذي سيتم تنفيذه عند الضغط على الزر Enter
transient variable هو متغير لا يتم حفظه في قاعدة البيانات مثل المجموع والعدد وما إلى ذلك

رابط هذا التعليق
شارك

من ناحية اظهار المجموع او عمل Summary Cloumn فالحقيقه عندك طرق كتير منها طريقه عمل Transiet attribute ومنها فى ال get Method الخاصة به حتحدد النتيجه بتاعته حتاخدها منين ولو عاوز مثال عملى على الكلام ده فشوف الرابط ده رغم انه متكلم على 10g الا ان الطريقه نفسها فى ال 11 ولو وقفت معاك حاجه اسال فيها

الطريقه التانيه اللى بفضلها شخصيا انك تعمل Backing Bean وتستدعى فيها ال Iterator ومنه ال Attribute اللى عاوز تعمل عليه SUM مثلا
وتلوب عليهم وتجمع وتضع Output Text فى ال Footer الخاص بال cloumn وتخلى ال Value بتاعته هى قيمة الميثود دى وانا عملت لك مثال عملى حمله من المرفقات بيعمل الحكاية دى كل اللى عليك انك تظبط اعدادات ال Connection اللى اسمه HRConn على اعدادات الداتابيز عندك واتاكد ان نتيجة الاتصال هى success وتعمل RUN لصفحة Summary Column واختار اى قسم من الاقسام واضغط اذهب الى وشوف ال Summary cloumn لراتب الموظفين فى القسم اللى اخترته حيظهر معاك ازاى

طبعا المثال حيشتغل بس على اخر نسخ الجى ديف 11.1.2

SummaryCloumn.rar

رابط هذا التعليق
شارك

  • بعد 2 شهور...

من ناحية اظهار المجموع او عمل Summary Cloumn فالحقيقه عندك طرق كتير منها طريقه عمل Transiet attribute ومنها فى ال get Method الخاصة به حتحدد النتيجه بتاعته حتاخدها منين ولو عاوز مثال عملى على الكلام ده فشوف الرابط ده رغم انه متكلم على 10g الا ان الطريقه نفسها فى ال 11 ولو وقفت معاك حاجه اسال فيها

الطريقه التانيه اللى بفضلها شخصيا انك تعمل Backing Bean وتستدعى فيها ال Iterator ومنه ال Attribute اللى عاوز تعمل عليه SUM مثلا
وتلوب عليهم وتجمع وتضع Output Text فى ال Footer الخاص بال cloumn وتخلى ال Value بتاعته هى قيمة الميثود دى وانا عملت لك مثال عملى حمله من المرفقات بيعمل الحكاية دى كل اللى عليك انك تظبط اعدادات ال Connection اللى اسمه HRConn على اعدادات الداتابيز عندك واتاكد ان نتيجة الاتصال هى success وتعمل RUN لصفحة Summary Column واختار اى قسم من الاقسام واضغط اذهب الى وشوف ال Summary cloumn لراتب الموظفين فى القسم اللى اخترته حيظهر معاك ازاى

طبعا المثال حيشتغل بس على اخر نسخ الجى ديف 11.1.2




بعد اذنك يا بش مهندسة هالة هو البين ده بتاع الصفحة ولا البين ده اتعمل بتاع الاوتبوت تكست و اتعمل ازاي
متاسف انا عارف ان اسالتي كتير ولكني لسة مبتدا
شكرا علي الاهتمام ومتاسف علي الاطالة
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية