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

إمكانية تحديث البيانات عند وجود تكرار

بدأه MONER3331 في 28 نوفمبر 2013 · 8 رد · 760 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أساتذتي الكرام خبراء الفوكس برو

جزاكم الله ألف خير عن الجهود المبذولة في هذا المنتدى الرائع

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

 

في الملف المرفق الفورم والملف الذي يعمل عليه

وبإختصار فإن الفورم يعمل بشكل ممتاز في أغلب الأوقات ولكنه لا يعمل أحياناً عند الضغظ على زر التحديث ،وبعد بحث مضني عن المشكلة أعتقد أن الفورم لا يعمل عندما يجد تكرار في البيانات.

مثال 1 : في حالة عمل الفورم بشكل جيد :-

حدد شروط البحث كما في الصورة المرفقة رقم 1 ،ثم إضغط على رز البحث بشروط ، ثم إضغط على رز التحديث ،تلاحظ أن الفورم يعمل جيداً.

 

مثال 2 : في حالة عدم عمل الفورم بشكل جيد:-

حدد شروط البحث كما في الصورة المرفقة رقم 2 ،ثم إضغط على رز البحث بشروط ، ثم إضغط على رز التحديث ،تلاحظ أن الفورم  لا يعمل وتظهر الرسالة

لاحظوا في الصورة رقم 2 في الصف الثاني والثالث تجدون أن البيانات متطابقة ولا يوجد أي فرق بين الصفين وأظن أن المشكلة هنا ،مع العلم أن هذا التكرار موجود كثيراً في الملف وهو لا يعد خطأً.

 

المطلوب : كيف أجعل زر التحديث يعمل على ثحديث كافة البيانات الموجودة في الجريد سواءً  وجد مثل هذا التكرار في البيانات أو لم يوجد.

مع خالص التقدير والإمتنان

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

moner_form.rar

#2

السلام عليكم اخي العزيز

توجد طريقة سهله وهي التعامل المباشر مع الجدول بدون استعلامات او استخدام لغة الاستعلام

وبمثالك انك تستخدم الاستعلام  وتقوم بالتحديث ن طريق UPDATE 

اليك مثال عن عمل التحديث عند استخدام جدول ثاني 

المثال افتراضي :_

CLOSE DATABASES

OPEN DATABASE (HOME(2) + 'Data\TestData')

SELECT in_stock, prod_name ;

    FROM Products ;

    INTO TABLE MyProductsList.dbf 

BROWSE 

CREATE CURSOR MyUpdateTable (prod_unit I(10))

INSERT INTO MyUpdateTable (prod_unit) VALUES (10)

BROWSE

UPDATE MyProductsList ;

    SET MyProductsList.in_stock = MyUpdateTable.prod_unit ;

    FROM MyUpdateTable ;

    WHERE MyProductsList.prod_name = "Chai"

SELECT * FROM MyProductsList

لاحظ المثال وسوف تكشف الاشكال في مثالك مع التاكد من طريقة او اليه عمل NVL

#3

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

أخي العزيز المبدع والرائع دائماً أسد العراق

في البداية أشكرك وأقدر تفاعلك وتجاوبك السريع زادك الله علماً ونوراً .

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

 

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

حيث وإن رسالة الخطأ توضح أن الخطأ عند الخطوة التالية :-

UPDATE inv_trs ;
SET inv_trs .trans_rate =NVL((SELECT trans_rate FROM vin14   WHERE invjv_ref=inv_trs .invjv_ref AND invjv_code=inv_trs .invjv_code AND invjv_no= inv_trs .invjv_no AND br_code=inv_trs .br_code AND trans_date=inv_trs .trans_date AND item_code=inv_trs .item_code AND trans_qty=inv_trs .trans_qty AND unit_code=inv_trs .unit_code AND s_balance=inv_trs .s_balance AND t_balance=inv_trs .t_balance AND trans_rate >= 0),trans_rate);
 WHERE inv_trs .trans_rate >=0;
أو إفادتي إن كانت الفكرة خاطئة من البداية ويستحيل تحقيقها، جعل الله تعبكم معنا في ميزان حسناتكم إن شاء الله.
تحياتي للجميع
#4

اخي العزيز

انتظرني لبعض الوقت سوف أقوم ان شاء الله بعمل مثال بالطريقتين لك لعدم وجود في الوقت الراهن نت على الحاسب

تحياتي

#5

أخي العزيز 

خذ راحتك والله يعطيك ألف ألف عافية

في إنتظارك

 

تحياتي للجميع

#6

السلام عليكم

ما زلت في إنتظارك أخي الكريم

تحياتي للجميع

#7

وانا لن انساك صدقني اخي العزيز 

ولا يوجد لي وقت الا بعد الساعة التاسعه ليلا ً والله شاهداً علي 

اليك المثال في المرفقات في خطوتين وهو البحث والتعديل المباشر على الجدول في القسم رقم 2 من النموذج وامكانيه البحث بالاسم او الرمز 

وفي القسم رقم 1 وامكانية البحث نفسها واستخدام التحديث كما عملت انت 

 

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

تحياتي لك 

moner_form.zip

1
#8

أخي العزيز الغالي 

جمعة مباركة إن شاء الله 

أعجز عن إختيار الكلمات المناسبة للتعبير لك عن مدى شكري وإمتناني لك.

بإختصار أنت إنسان رائع ،حفظك الله ورزقك الذرية الصالحة ، وأسعدك في الدنيا والأخرة .

في ردك الأخير وفيت وكفيت ،وعليه أرجو إغلاق الموضوع .

 

مع خالص تحياتي للجميع

#9

 اخي العزيز لنا ولكم الدعاء ان شاء الله 

والموضوع سيكون مفتوح للاخوة اذا كانت لديهم افكار اخرى 

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

تحياتي للجميع

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…