تخزين guid وعرض القيمة المقابلة له
#1
السلام عليكم
عند انشاء فاتورة وفي حقل المادة عادة تستدعى هذه المادة من جدول آخر (جدول المواد)
ولكن هناك مشكلة إذا قمنا بحفظ المادة كأسم (فماذا يحدث إذا اراد المستخدم تغيير اسم هذه المادة في جدول المواد)
الحل عادة باستخدام الـguid لهذه المادة وحفظه بدل الاسم.

سؤالي إذا قمت بتخزين الـguid في الفاتورة كيف استطيع عند عرضها استبدله باسم المادة الخاصة بهذا الـguid - ماهي الطريقة الافضل في مثل هذا الحالة ؟؟؟
(مع العلم أنه ليس من المنطق حفظ الـguid و الاسم في جدول الفاتورة وعند كل عملية استعراض نقوم بمطابقة الـguid من جدول المواد)
ولكم الشكر
الرد
#2
أخي اذا غير اسم المادة غير المهم المهم هو رقم المادة للأن الجدوال تعرف عن طريق الرقم

و شكرا
الرد
#3
صحيح أخي،
وهذا ماقلته أنا ولكنك لم تقرأ سؤالي جيداً
الرد
#4
و عليكم السلام و رحمة الله

إقتباس : الحل عادة باستخدام الـguid لهذه المادة وحفظه بدل الاسم.
تقصد مفتاح خارجي foreign key و يكون Primary Key في جدول المواد ؟ أو
كود :
http://en.wikipedia.org/wiki/Globally_unique_identifier
؟؟
إقتباس : سؤالي إذا قمت بتخزين الـguid في الفاتورة كيف استطيع عند عرضها استبدله باسم المادة الخاصة بهذا الـguid - ماهي الطريقة الافضل في مثل هذا الحالة ؟؟؟
بإستخدام الـ Lookup
http://www.delphi4arab.net/forum/showpos...stcount=12

أو SQL بالربط الداخلي ، راجع
http://www.delphi4arab.net/forum/showpos...ostcount=7

بالتوفيق
الرد
#5
السلام عليكم

شكراً أخي Lam.Abdeldjalil

إقتباس :تقصد مفتاح خارجي foreign key و يكون Primary Key في جدول المواد ؟ أو

قصدي عند ادخال بيانات فاتورة وتحديد المادة سوف اقوم بتخزين الـGUID الخاص بهذه المادة وليس اسم المادة

أما عن استخدام الـ Lookup لا أعتقد أنه سوف يفي بالغرض

لو أن مكونات الفاتورة معروضة في DBGrid
قد يكون هناك حل باستخدام الـSQL ولكن لم استطع معرفته إلى الآن

أستطيع أن أقوم بعرض الفاتورة من Query بدلاً من عرضها من الجدول الخاص بها
وفي هذا الـ Query أقوم بعرض القيمة المقابلة للـGUID الخاص بالمادة
ولكن في هذه الحالة لن يستطيع المستخدم اجراء أي تعديل على هذه الفاتورة!!
فما رأيك؟
الرد
#6
السلام عليكم

لقد قمت بعرض بيانات الفاتورة كما ذكرت سابقاً عن طريق الـQuery
وكان هناك خطا يمنع المستخدم من التعديل. بسبب عدم إضافة الـGUID الخاص بكل بند من الفاتورة الى الـQuery
قمت بتصحيح الخطأ وكل شيء يعمل حيداً

ومع ذلك إذا كان لديك فكرة أفضل أطلعني عليها.

شكراً لك Lam.Abdeldjalil
الرد
#7
إقتباس :أما عن استخدام الـ Lookup لا أعتقد أنه سوف يفي بالغرض
لم لا ؟
إقتباس :ولكن في هذه الحالة لن يستطيع المستخدم اجراء أي تعديل على هذه الفاتورة!!
فما رأيك؟
لنأخذ الإستعلام
كود :
select orders.*,employees.LastName from orders inner join employees on orders.EmployeeID =employees.EmployeeID
على سبيل المثال في الـ ADO يمكنك التعديل في حقول الجدول orders و لا يمكنك التعديل في حقول الجدول المربوط employees تواجهك رسالة
إقتباس : Insufficient key column information for updatin or refreshing
وهو المطلوب ، فما عليك إلا جعل الحقل LastName ـ ReadOnly إذا كنت تستخدم DBContols
لا أظن هذه الخاصية متوفر في الـ BDE

بالتوفيق
الرد
#8
لم افهم جيدا و لكن هل تريد قول جلب guid ل مادة معينة و هذه المادة موجودة في dbgrid
الرد
#9
السلام عليكم
إقتباس :وهو المطلوب ، فما عليك إلا جعل الحقل LastName ـ ReadOnly إذا كنت تستخدم DBContols
لا أظن هذه الخاصية متوفر في الـ BDE

لحد الآن كل شيء جيد
ولكن ماذا إذا أراد المستخدم تغيير الصنف ؟
ليس من الجيد اظهار نافذة جديدة للتعديل وطالما هو يستعرض الفاتورة في DBGrid فمن الانسب أن تكون امكانية التعديل بنفس الشاشة !!!

ولك الشكر
الرد
#10
و عليكم السلام
إقتباس : ولكن ماذا إذا أراد المستخدم تغيير الصنف ؟
ألم تذكر في البداية
إقتباس : ولكن هناك مشكلة إذا قمنا بحفظ المادة كأسم (فماذا يحدث إذا اراد المستخدم تغيير اسم هذه المادة في جدول المواد)
؟؟ ( أي تغير إسم المادة في جدول المواد من DBGrid تفاصيل الفاتورة ؟؟)
الرد


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


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