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

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

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

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

إقتباس : الحل عادة باستخدام الـ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

بالتوفيق
السلام عليكم

شكراً أخي Lam.Abdeldjalil

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

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

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

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

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

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

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

شكراً لك Lam.Abdeldjalil
إقتباس :أما عن استخدام الـ 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

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

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

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