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

الترحيل الجزئي و الكلي للسجلات من فورم فرعي بناء علي شروط

مغلقرائج
بدأه reagent في 22 مارس 2003 · 65 رد · 3,839 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الأخوة الأعزاء من فضلكم اريد المساعدة عاجلا في هذا البرنامج المرفق

اريد ان يقوم الأستعلام بعمل نسخ للبيان كاملا في جدول المعاملات مرة أخرى اذا كان الحقل نوع التنفيذ في نموذج1 "جزء" حيث ما اريده هو ان يظل هذا البيان موجودا في الأستعلام حتى يتم التنفيذ كليا فيختفي من النموذج

ارجو منكم المساعدة او الأستفسار اذا كان هناك اي غموض في الموضوع

تحياتي

test.zip

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#2

للرفع:(

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#4

الأخ الفاضل محمد الطاهر

أسف على عدم ايضاحي للمطلوب

ولكن ما اريده بالضبط هو في نموذج1 عند كتابتي لرقم في خانة المنفذ فأذا كان هذا الرقم اقل من العدد الكلي للأسهم فانه يظهر كلمة جزء في نوع التنفيذ واذا كان مساوي للعدد الكلي للأسهم فأنه يظهر كلمة الكل في خانة نوع التنفيذ..

ما اريده هو أذا كان نوع التنفيذ جزء فأن هذا البيان يتم تسجيلة كسجل جديد في جدول المعاملات بنفس جميع البيانات ولكن الأختلاف الوحيد هو ان العدد المتبقي من الأسهم يصبح هو العدد الكلي للأسهم ويصبح المنفذ "صفر" اي انه يعتبر ان الأسهم التي تم تنفيذ البيع او الشراء لها انتهت من العدد الكلي والعدد المتبقي هو المطلوب تنفيذة فيظل موجود في النموذج حتي يتم تنفيذه مرة أخرى ولا يتبقى شئ من العدد الكلي للأسهم ..

أرجو ان تكون الصورة اكثر وضوحا وشاكر لكم جزيلا تعاونكم معي

السلام عليكم وفي انتظار اي رد او استفسار مرة أخرى

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#5

بالنسبة للمثال

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

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

*فورم* : اضافة سجل من فورم بدون مصدر بيانات

http://www.arabteam2000.com/vb/showthread....&threadid=11696

#6

الأخ الكريم محمد الطاهر

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

رجاء المساعدة ان امكن

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#7

لاضافة سجل جديد

DoCmd.RunSQL "INSERT INTO Table1 ( t1, t2, t3) select [Forms]![UnboundForm]![t1] as exp1, [Forms]![UnboundForm]![t2] as exp2, [Forms]![UnboundForm]![t3] as exp3;"

هذا السطر باضافته الي الكود مع تغيير الاسماء الي أسماؤك

يعني

ادراج سجل جديد فى الجدول المسمي Table1

و ملئ الثلاث حقول فى الجدول المسماة

t1, t2, t3

بالقيم الموجودة فى الفورم المسماة unbound فى مربعات النص المسماة أيضا t1, t2, t3

و بهذه الطريقة تدرج سجل جديد فى تقوم بلمئ الحقول فى السجل الجديد بناء علي مربعات النص الموجودة فى الفورم

أرجو أن يكون هذا ما تريد

#8

الأخ الكريم محمد الطاهر

شاكر جدا لتجاوبك السريع

ولكن ما اريدة هو ليس ما ذكرت .. فإذا قمت بفتح البرنامج على نموذج1 ثم قم بإضافة رقم في عدد الأسهم المنفذة.. فهناك احتمالين

اذا كان العدد اقل من العدد الموجود في خانة عدد الأسهم سترى كلمة "جزء" في خانة نوع التنفيذ

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

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

مع العلم ان

هذا النموذج مصدره أستعلام قائم على البيانات الموجودة في نفس الجدول

أي بطريقة أخرى ففكرة ما أريده هي ان العميل الواحد يقوم بطلب عدد من ألسهم وليكن 1000 سهم .... فيتم ادخال هذه العملية في الجدول بجميع بياناتها..

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

وقد يحدث ان هذا العميل تم تنفيذ له اليوم 100 سهم من ال 1000 المطلوبة وبالتالي يكون الباقي 900 فيجب ان تظل هذه ال 900 لليوم التالي ولكن بحيث تكون كعملية جديدة تم أدخالها في الجدول اي يصبح عدد السهم وقتها 900 والمنفذ 0 والمتبقي 900، فيجب ان يكون هناك عملية مسجلة لبيع ال100 سهم وكذلك عملية أخرى مسجلة للبيع الذي سيتم اليوم التالي وليكن 500 سهم فيكون المتبقي حين ذلك 400 سهم وبالمثل تظل ال 400 سهم معلقة في نموذج التنفيذ حتي يتم تنفيذها مرة واحدة او عدة مرات أخرى ..

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

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

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#9

أرجو أن يكون هذا ما تريد

و قد غيرت أسماء بعض الحقول الي الانجليزية و أضفت قيمة افتراضية لحقلين لكي استطيع التعامع معها بالكود

و انصح بتغيير باقي الاسماء و الكائنات الي العربية ، فعن نفسي و قد شاركني الكثير من الاخوة فى هذا نواجه صعوبة شديدة فى التعامل مع العربية بالكود

( أما واجهة التطبيق فبالعربية طبعا )

stocks.zip

#10

و الكود فى المثال هو

Private Sub Command26_Click()

    

Dim Ttotal As Double, Tdone As Double, Trem As Double

Dim Ttype As String, Tnin As String, Tprice As String, Tcomp As String

Dim Tfile As String, TMtype As String, Tnewnum As String



Tnewnum = Forms![نموذج1]![qur1].Form![الرقم] & "1"

Ttotal = Forms![نموذج1]![qur1].Form![text55]

Tprice = Forms![نموذج1]![qur1].Form![الموضوع]

Tnin = Forms![نموذج1]![qur1].Form![Text54]

'Tfile = Forms![نموذج1]![qur1].Form![ملف الحفظ]

Ttype = Forms![نموذج1]![qur1].Form![النوع]

Tcomp = Forms![نموذج1]![qur1].Form![جهة]

'TMtype = Forms![نموذج1]![qur1].Form![نوع المعاملة]

Tdone = Forms![نموذج1]![qur1].Form![Text42]

Trem = Forms![نموذج1]![qur1].Form![Text43]



If Ttotal > Tdone Then

a = MsgBox("هل تريد نقل المتبقي الي معاملة جديدة", vbYesNo, "برنامج مدير الأسهم")

If a = vbNo Then Exit Sub

 DoCmd.SetWarnings False

Dim m As Integer, mdate As Date, myselect As String

mdate = Now()

m = Ttotal - Tdone

myselect = "SELECT '" & Tnewnum & "' as m1," & Tnin & " as m2,'" & Tcomp & "' as m3," & m & " as m4," & Tprice & " as m5," & "'بيع' as m7," & "'" & Ttype & "' as m8;"

'Debug.Print myselect

myselect = "INSERT INTO Trans ( [no], NIN, [comp], Sttotalno,price, type, period) " & myselect



DoCmd.RunSQL myselect

Me.qur1.Requery

 DoCmd.SetWarnings True

End If



End Sub
#11

الأخ محمد الطاهر

حقيقق انا عاجز عن الشكر لك و لتعاونك معي

ولكن هناك للأسف شئ بسيط يريد التعديل

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

اي اذا كان هناك ثلاث بيانات كلها جزئي فأن النسخ يتم لأخر بان في النوذج من أسفل فقط ..

كذلك اريد ان يتم نسخ الرقم اي البيان المنسوخ يأخذ نفس رقم العملية الصلية اي ان التنفيذ لنفس العملية يظل بنفس الرقم حتى تنتهي تماما..

مرة اخرى لك كل الشكر وجزاك الله خيرا

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#12

المفروض أن يتم النسخ فى الكود من السجل الفعال

أي الذي تقف عليه بالماوس لتنفذه

أي تكتب رقم المنفذ ، فيتحول الي جزئي

و تضغط تنفيذ ، فيتم ترحيل الجزء الباقي لهذا السجل الي سجل جديد

و ليس آخر سجل

فهل ما يحدث غير هذا ؟؟

#13

تعم هذا ما يحدث و لكن ما كنت اريده هو ان اقوم بتعليم كل الأوامر ثم ضغط التنفيذ مرة واحدة فهل هذا ممكن ؟؟

شكرا لك محمد

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#14

نعم ممكن

و ذلك بعمل loop علي ال recordsetclone الخاص بال نموذج الفرعي

و تكرار الكواد السابق اذا كان المنفذ أقل من العدد الكلي

و لكن هنا ستظهر مشكلة !!

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

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

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

و ان كنت أري ان الحل السابق ( الترحيل ) عند تنفيذ كل معاملة هو الانسب

#15

الأخ محمد الطاهر

لقد قمت الأن بعمل تعديل بسيط وهو انه جعلت الأستعلا لا يقوم بإيجاد البيان المحتوي على yes في التنفيذ و نوع تنفيذه جزئي

فبالتالي الأن عند ضغط زر تنفيذ فان البيان القديم سوف يختفي من النموذج ويظل هناك البيان الجديد الذي تم ترحيله فقط

وأعتقد ان الأن لا توجد مشكلة اذا جعلت التنفيذ يتم لجميع البيانات مرة واحدة بالضغط على تنفيذ ... ولكن انا لا أعلم كيف أفعل ذلك صراحة

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

كذلك ارجو منك أضافة الكود الذي يقوم بنسخ الرقم كذلك حيث اريد ان تظل العملية بنفس الرقم بعد عمل ترحيل لها ..

شاكرا لك جدا وجزاك الله خيرا على تعاونك

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#16

عفوا نسيت ارفاق الملف عقب التعديل

test.zip

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#17

الأخ محمد الطاهر

أعلم اني اثقلت عليك جدا ولكن سماح وارجوك ساعدني على انهاء هذا البرنامج :o

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#19

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

أو بتشغيل الاستعلامين المضافين الي القاعدة بماكرو

Private Sub Command26_Click()

DoCmd.SetWarnings False

DoCmd.RunSQL "INSERT INTO Trans ( [No], NIN, [comp], Sttotalno,  price, Perform, type, Period )" & _

"SELECT NonCompleted.[no], NonCompleted.NIN, NonCompleted.comp, NonCompleted.rem,  NonCompleted.price, NonCompleted.Perform, NonCompleted.type, NonCompleted.Period FROM NonCompleted;"

DoCmd.RunSQL "UPDATE Trans SET Trans.Perform = True WHERE (((Trans.Sttotalno)>[Trans]![stdone]) AND ((Trans.stdone)>0));"

DoCmd.SetWarnings True

Forms![äãæÐÌ1]![qur1].Form.Requery

End Sub

و هو عبارة عن تنفيذ لنفس جمل ال SQL الموجود فى الاستعلامين باستخدام أمر docmd.runSQL

و لتسهيل كتابة هذا الكود صمم الاستعلامات و انقل الجمل من عرض ال SQL للاستعلام

test2_reaganet.rar

#20

الأخ محمد الطاهر

حقا عاجز عن الشكر لك

لكن هناك مشكلة بسيطة

1- أذا قمت بإدخال عمليات بيع وشراء فأنة يقوم بعمل ترحيل لعمليات الشراء دون أجراء اي تنفيذ لها ... اي أذا كان هناك في الجدول اي عملية شراء فأنها ترحل تلقائيا بدون عمل تنفيذ كلي او جزئي لها

2- البيانات التي تم ترحيلها يكون ال Perform لها Yes .. (هذه ليست بمشكلة فقط حبيت أخبرك بها)

لك مني كل الشكر واتمنى ان استطيع رد هذا الجميل لك إن شاء الله

تحياتي

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#21

الترحيل يتم بناء علي الاستعلام المسمي NonCompleted

فضع فيه شرط ( فى الاستعلام نفسه )

أنك تريد به عمليات البيع أو الشراء فقط

هل هذا يحل المشكلة ؟

#22

لقد قمت بكتابة

"بيع" Or "شراء"

في خانة Type في Noncompleted ولكن ما ذالت المشكلة كما هي

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#23

أنا أقصد بيع أو شراء بحسب الحاجة

و من كلامك

انت تريد "بيع" فقط

#24

السلام عليكم

أخي محمد

انا اريد هذه العملية تتم بالمثل في كل من البيع والشراء .. وكذلك هناك وجدت مشكلة أخرى عند تجربة البرنامج

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

1000 سهم نفذت منهم 300

فيكون الظاهر حين ذلك 700 وهذا صحيح

عند عمل تنفيذ ل 200 من ال 700 فيكون البيانات الظاهرة في نموذج التنفيذ هي 700 و 500 اي ان البيان تم نسخة مرتين

:o

اسف على الأزعاج وارجو ان تساعدني لأيجاد حل

"وَمَا تَدْرِي نَفْسٌ مَّاذَا تَكْسِبُ غَداً وَمَا تَدْرِي نَفْسٌ بِأَيِّ أَرْضٍ تَمُوتُ إِنَّ اللَّهَ عَلِيمٌ خَبِيرٌ"

صدق الله العظيم

#25

بالنسبة للتكرار

أعتقد انه تم تعديله فى المثال المرفق

و بالنسبة للبيع و الشراء لو كان مازال هناك مشكلة رجاء توضيحها

test3_reaganet.rar

هذا الموضوع مغلق.

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

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

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

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

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