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

هذا الكود يحتاج لكثير من الذكاء وقليل من العمل

مغلقرائج
بدأه المهنا في 21 فبراير 2005 · 50 رد · 6,971 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا الكود - على ما أظن -يحتاج لكثير من الذكاء وقليييييييييييييييييييييييييل من العمل.

عندي لللأسف الثانية و وقلييييييل من الأولى

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

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

الرقم الاول فمثلا لو كتبت الرقم 8 يقوم التكست بتوليد الرقم.

الاول 0001 ليصبح الرقم في التكست (0001- 8) ويعطيني أدب في الكامبو بوكس .

وبعدها أقوم عن طريق زر حفظ بحفظ الرقم في قاعدة البيانات.

وعند كتابة الرقم لرقم 8 مرة اخرى لكتاب جديد يقوم التكست بتوليد الرقم 0002 ليصبح الرقم في التكست (0002- 8) ويعطيني أدب في الكامبو بوكس وهكذا.

الرقم 1 يقوم التكست بتوليد الرقم.

الاول 0001 ليصبح الرقم في التكست (0001- 1) ويعطيني أديان في الكامبو بوكس الى ينصل الرقم في الفئة 8 الى 9999 (9999- 8)

وعند كتابة الرقم لرقم 1 مرة اخرى لكتاب جديد يقوم التكست بتوليد الرقم 0002 ليصبح الرقم في التكست (0002- 1) ويعطيني أديان في الكامبو بوكس وهكذا.

وعند حذف الكتاب ذي الرقم (0001- 8) يتم حذف الرقم (0001- 8) ولكنه يعود عند

اضافة كتاب جديد يحمل الرقم الذي يبدا بالرقم 8 ليولد البرنامج الرقم المحذوف الذي هو (0001- 8).

****الموجز

1- عدم تكرار الرقم لكتابين يبدآن برقم الفئة نفسه مثل الرقم (2.8) في المثال.

2- مهم جدأ ًًًً : يقوم البرنامج بهذة المهمة مع الزرين حفظ و حذف أما التعديل فلا يكون في الارقام الاربعة الاخيرة ولا يتحكم المستخدم الا في

رقم الفئة فقط

3-يقوم البرنامج بتوليد رقم الكتاب الذي تم حذفه الى الكتاب المضاف الجديد تلقائيا حتي ولو كان الزمن بين الحذف والاضافة طويل.

مصطلحات : رقم الفئة : هو الرقم الواقع قبل الداش (-) المستقل المفرد الآحاد. (0001- 8) رقم الفئة هنا هو الرقم (8) .

(0001- 2) رقم الفئة هنا هو الرقم (2).

(0001- 6) رقم الفئة هنا هو الرقم (6).

المعارف العامة الرقم 0 يعطيني المعارف العامة في الكامبو بوكس

الفلسفة الرقم 1 يعطيني الفلسفة في الكامبو بوكس

الاديان الرقم 2 يعطيني أديان في الكامبو بوكس

العلوم الاجتماعية الرقم 3 يعطيني العلوم الاجتماعية في الكامبو بوكس

اللغات الرقم 4 يعطيني اللغات في الكامبو بوكس

العلوم الطبيعية الرقم 5 يعطيني العلوم الطبيعية في الكامبو بوكس

التكنولوجيا الرقم 6 يعطيني التكنولوجيا في الكامبو بوكس

الفنون الرقم 7 يعطيني الفنون في الكامبو بوكس

الأدب الرقم 8 يعطيني الأدب في الكامبو بوكس

التاريخ والجعرافيا والتراجم الرقم 9 يعطيني التاريخ والجعرافيا والتراجم في الكامبو بوكس

هذا الكود - على ما أظن -يحتاج لكثير من الذكاء وقليييييييييييييييييييييييييل من العمل.rar

#3

عفوا : هل تريد شرح للفيجوال كامل ولا غيره

يعني معقولة بعد هذا الشرح تجي وتقولي ممكن توضيح اكتر

أظن انك لم تقرأ الموضوع بروية

ولن استطيع ان اعطي توضيع اكثر من هذا لاني وقتها لا زمن اكلمك مشافهة

اما اللغة فهذه حدودها مع فائق الاحترام والتقدير

المطـــــــــــــــــــــــــــــــــــــــــــــــــــــــلوب :

هو ترقيم تلقائي في التكست بوكس بعد رقم الفئة

#6

العملية تحتاج إلى أحدى جمل التكرار وخاصية Mid

ويمكنك الاستفادة من المثال التالي لصنع ما تريد

:rolleyes:

/index.ph...=post&id=176027

ولوضوح الطريقة اكثر يمكنك الاستفادة من الموضوع التالي

/index.ph...وليد+رقم+تسلسلي

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#7

يجب على الإخوة الأعضاء مراعاة قوانين المنتدى لئلا يتعرض الموضوع للحذف:

- يجب أن يكون عنوان الموضوع دالاً على ما فيه

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

بالتوفيق

ani.gif
#8

-09

الاخ العزيز

فى البداية ارجوا ان انبهك الى شئ ربما تكون قد غفلت عنة

اقتباس
عفوا : هل تريد شرح للفيجوال كامل ولا غيره

يعني معقولة بعد هذا الشرح تجي وتقولي ممكن توضيح اكتر

أظن انك لم تقرأ الموضوع بروية

ولن استطيع ان اعطي توضيع اكثر من هذا لاني وقتها لا زمن اكلمك مشافهة

اما اللغة فهذه حدودها مع فائق الاحترام والتقدير

اخى العزيز ((((((((( ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ )))) ليس هناك كلام على طريقة الكلام !!!

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

الحل فى هذا الكود :

Private Sub Combo1_Change()
If Len(Combo1.Text) = 1 Then
Combo1.Text = Combo1.Text + "-0001"
End If
End Sub

على ان نقم بعمل بحث سريع عن قيمة الــ combo1.text فى الجدول  و اذا وجددت يتم تغير القيمة الخاصة بالcombo1   الى 0002

على ان يكون الكود بهذة الطريقة :
[CODE]Private Sub Combo1_Change()
Dim a As Integer
If Len(Combo1.Text) = 1 Then
Combo1.Text = Combo1.Text + "-0001"
label1.Caption = Combo1.Text
rst.find "[serial]='" + Combo1.Text + "'"
If rst.EOF = True Then
Exit Sub
Else
a = Mid(Combo1.Text, 6, 1)
a = a + 1
Combo1.Text = label1.Caption + a
End If
End Sub

ملحوظة :

اخى لا تعتمد على الكود فأنا بنام .....

بس انا بوصلك الفكرة و لا انت عايز

اقتباس
هل تريد شرح للفيجوال كامل

و الله أعلم ....!!!

السلام عليكم

ارجوا مساعدتى للعمل كمبرمج اوراكل باى شركة خبرتى 1 سنه و ربنا الموفق

خبرى 6 سنوات فى فيجوال بيزك 6و ASP

#12

الحل بسيط جدا ولا يحتاج الى كل هذا التعقيد

انتظرنى حتى مساء اليوم او غدا على الاكثر باذن الله احله لك

الايمان +الحلم +العلم +العمل = النجاح

ما اسهل ان تنجح ... وما اصعب ان تحافظ على نجاحك

#13

-09

الاخ الفاضل

أعتقد اننى قمت بحل الموضوع فى أول مشاركة !!

شكرا

ارجوا مساعدتى للعمل كمبرمج اوراكل باى شركة خبرتى 1 سنه و ربنا الموفق

خبرى 6 سنوات فى فيجوال بيزك 6و ASP

#14

السلام عليكم ...

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

طبعاً الرقم المدخل في التكست بوكس بيكون هو رقم الفئة يعني لو دخلت ( 8 ) هذا معنى إنه رقم الفئة ( 8 ) هو الأدب ..

إذا في الحدث ( change ) للتكست بوكس عند إدخال رقم تعمل بحث في قاعدة البيانات على جدول الفئات ... وتأخذ منه إسم الفئة وتخزنها في متغير مثلا ( type ) ...

هذي أول خطوة في هذا الحدث .. بعدين تبحث في جدول الكتب على أكبر قيمة لعداد الكتب ( طبعاً بعبارة sql ) وتخزنها في متغير وتزيد عليها واحد ويكون اسم المتغير مثلاً ( last ) ...

الخطوة الثالثة .. هي تسند قيمة ( last ) مع الرقم المدخل من المستخدم ويكون هذا هو الرقم اللي يكتب في التكست بوكس ...

الخطوة الرابعة .. تعمل تغير في قيمة الكومبو بوكس إلى قيمة ( type ) ...

أتمنى اكون أفدتك ...

أخوك شوقي ..

#18

مازالت المشكلة لم تحل

المطلوب : اريد عند حفظ بيانات كتاب جديد يقوم زر حفظ باضافة رقم الىText5 وعند حذف يقوم بحذف الرقم

مواصفات الرقم : يكون بالتنسيق التالي 0001-8 اذا كان الكتاب ادب من فئة الكتاب في Combo15 وبالتنسيق 0001-2 اذا كان الكتاب اسلامي كما هو

المهم انه عند حذف بيانات الكتاب صاحب رقم معين يقوم البرنامج بحفظ الرقم لاضافته لاي كتاب جديد يتم ادخاله

فلوا تم حذف بيانات الكتاب رقم 0001-8 وهو فئة الادب يقوم البرنامج باضافة الرقم 0001-8 الى الكتاب الجديد

مشروح في التكست المرفق

#19

اخ المهنا ... ..

لم أفهم ما تريد بالضبط ولكن على حسب ما فهمت بإختصار أنك تريد الآتي

اقتباس
الرقم الاول فمثلا لو كتبت الرقم  8  يقوم التكست بتوليد الرقم.

الاول 0001  ليصبح الرقم في التكست (0001- 8)  ويعطيني أدب في الكامبو بوكس .

وبعدها أقوم عن طريق زر حفظ  بحفظ الرقم في قاعدة البيانات.

وهذا هو كود العملية :

Dim n As Long

n = Val(Text1) * 10000 
n = n+ 1
Text2 = Format(n, "#-####")

حيث قمنا بتعريف متغير من نوع رقم طويل وسميناه n

وقمنا بتخزين قيمة التيكس أو الكمبو فيه كما يلي ..

n = Val(Text1)

ثم قمنا بضر القيمة في 1000 لكي يكون الرقم مكون من الخانات المطلوبه ثم نقوم بعملية الزياده له

وبعدها أعدنا تنسيقه بستخدام Format ليظهر بشكل الذي تريده

فيصبح الناتج مثلا من 8 إلى 80001 ثم إلى 8-0001

فمعا تخزينه واعادة العملية عليه سيزداد الرقم

وهكذا اخ مهنا نكون أنتهينا من عملية التوليد لرقم . أما بالنسبة لشق الثاني من السؤال الذي استوعبته

وهو ..

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

اضافة كتاب جديد يحمل الرقم الذي  يبدا بالرقم 8  ليولد البرنامج الرقم المحذوف الذي هو (0001- 8).

يمكنك ذلك أخ المهنا بعمل التالي ....

Dim n, i As Long

'HnHn
n = Val(Text1) * 1000

Do While i < 1000000


n = n + 1

SQL = "SELECT * FROM Table where field = '" & n & "' "
Set rs = db.Execute(SQL)
If rs.EOF Then Exit Do
Loop


Text2 = Format(n, "#-####")

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

حيث قمنا بالتعديل على الكود السابق وأضفنا ما يلي

i تم تعريفه كقيمه افتراضية ان يتم تكرار العملية حتى الرقم

الأقل من المليون .. ولكنه لن يكون ذلك .. والقصد منه أنه اننا لا نعلم عدد السجلات الموجووده

في القاعدة فهو مجرد تخمين ويمكنك استعمال جملة تكرار For وتحدد ما تريد ولكن المهم أن الفكرة

توصل

واستخدمنا في الكود جملة الاستعلام الاتيه

SQL = "SELECT * FROM Table where field = '" & n & "' "
Set rs = db.Execute(SQL)

حيث ان

Table وهو اسم الجدول الذي ستقوم بعملية التفحص عليه

field اسم الحقل الذي ستقوم بتفحص قيمه أذا كانت يوجد رقم 8 ام لا مثلاً

n الرقم الذي سيقارن بما هو مجود في الجدول أم لا

والعملية كالآتي ...

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

الضرب في 1000 وعملية الزيادة له بمقدار واحد ليصبح 80001

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

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

موجود ومخزن في الجدول . .فإذا لم يتم العثور على الرقم في الجدول ستتوقف عملية التكرار

ويظهر الناتج في Text 2أم لا

وهكذا تتم عملية تفحص الرقم .. وكل هذا يتم تقريبا في ثانية إلى 3 ثوان على حسب كمية البيانات

الموجوده في الجدول .....

وهذا هو المثال مرفق قم فقط بالصقه في الحدث الذي تريده مع تغيير اسم الجدول وأسم الحقل فقط

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

والمعذرة على الاطالة

تقبل تحياتي B)

NumberAuto.rar

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#20

الف شكر يا اخي العزيز HnHn

مجهود اكثر من رائع الكود شغال وممتاز

بس انا اريد على ما عملت ان استطيع اضافة الرقم الي السجل كامل كرقم استدعاء للكتاب

ولو قمت بحذف هذا السجل او الكتاب يقوم البرنامج بحفظ الرقم للسجل التالي حتي تكون الارقام متسلسلة لجميع السجلات

00001-8 --- 00002-8 ---- 00003-8 ---- 00004-8 --- 00005-8 ---- 00006-8 --- 00007-8 ---00008-8 ----00009-8 الخ ......

#21

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

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#22

هلا أخوي المهنا ..

أتمنى انك تكون حليت مشكلتك ...

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

والمعذرة على التأخير ..

طبعاً أنا ما اعتمدت على تكست الماسك اللي أنشأته .. وأنشأت تكست بوكس جديد وعملت عليه العمليات .. مع تحفظي على طريقة عملك للجدول .. لكن إنت أدرى كيف تريد أن تكون طريقة الجدول .

برنامجك بعد التعديل في المرفقات ..

أخوك shoqi ..

Edited.zip

#24

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

بعد تجربة الملف الاخير لاحضت ان الملف

يعمل بشكل جيد ولكــــــــــــــــــــــــــــــن بشكل جزئي وقمت بارفاق الملف بعد التجرية

وجدت ان الارقام تتكرر في بعض الاوقات وعرفت قدر المشقة التي كلفتكم اياها بهذا الكود

الذي اراه انا معقد فالرقم (00001-5) يتكرر في كل الارقام

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

المطلوب : ما اريده هو ان عندي برنامج لحفظ بيانات الكتب واريد ان اقوم عند اضافة كتاب

جديد بتوليد رقم اسمه "رقم الاستدعاء" استطيع من خلاله استدعاء الكتاب بهذا الرقم

اريد ان يكون تنسيق الرقم بهذا الشكل

(00001-0) و (00002-0) و (00001-0) و(00003-0) و(00004-0) و ((00005-0) و (00006-0) و(00007-0).. حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (المعارف العامة)

(00001-1) و (00002-1) و (00001-1) و(00003-1) و(00004-1) و ((00005-1) و (00006-1) و(00007-1)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (الفلسفة)

(00001-2) و (00002-2) و (00001-2) و(00003-2) و(00004-2) و ((00005-2) و (00006-2) و(00007-2)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (الاديان)

(00001-3) و (00002-3) و (00001-3) و(00003-3) و(00004-3) و ((00005-3) و (00006-3) و(00007-3)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (العلوم الاجتماعية)

(00001-4) و (00002-4) و (00001-4) و(00003-4) و(00004-4) و ((00005-4) و (00006-4) و(00007-4)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (اللغات)

(00001-5) و (00002-5) و (00001-5) و(00003-5) و(00004-5) و ((00005-5) و (00006-5) و(00007-5)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (العلوم الطبيعية)

(00001-6) و (00002-6) و (00001-6) و(00003-6) و(00004-6) و ((00005-6) و (00006-6) و(00007-6)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (العلوم التقنية)

(00001-7) و (00002-7) و (00001-7) و(00003-7) و(00004-7) و ((00005-7) و (00006-7) و(00007-7)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (الفنون)

(00001-8) و (00002-8) و (00001-8) و(00003-8) و(00004-8) و ((00005-8) و (00006-8) و(00007-8)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (الادب)

(00001-9) و (00002-9) و (00001-9) و(00003-9) و(00004-9) و ((00005-9) و (00006-9) و(00007-9)..حيث ان الرقم () = قيمة في

الكامبو بوكس وهي (التراجم والتاريخ والجغرافيا)

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

لو قمت باضغط على زر اضافة حتي ادخل بيانات كتاب "تاريخ الادب العربي الحديث" للمؤلف / شوقي ضيف . يطلب مني البرنامج تحديد قيمة من الكامبو

بوكس وتكون القيمة "الادب" يتم على اساسها توليد الرقم (00001-8) كرقم استدعاء للكتاب يتم حفظه في قاعدة البيانات.

ولو قمت باضافة كتاب اخر في نفس القيمة "الادب" يقوم البرنامج بتوليد الرقم الذي يليه في التسلسل وهو (00002-8)

ولو قمت بحذف الكتاب "تاريخ الادب العربي الحديث" للمؤلف / شوقي ضيف صاحب الرقم (00001-8) يقوم بتحويل الكتاب صاحب الرقم (00002-8)

الى الرقم المحذوف (00001-8)

يعني اريد لو اضفت الف كتاب في نفس الفئة "الادب" يعطيني الارقام من (00001-8) الى (01000-8)

ولو قمت بحذف الكتب العشرة ذات الارقام (00001-8) و(00011-8)و(00055-8)و(00881-8)و(00061-8)و(00391-8)و(00731-8)و(00991-8

)و(00454-8)و(00999-8)

وقمت بفرز جميع الارقم لا تطلع لى كل الارقام (00001-8) الى (01000-8) مخصوم منها الارقام العشر

وانما تطلع لى الارقام من (00001-8) الى (00990-8) لان الارقام الموجودة اخذت الارقام المحذوفه مثل ارقام التسلسل في التقارير

انا اسف للا طالة ولكن نظرا للتعب الذي سببته لكم

اقتباس
طبعاً أنا ما اعتمدت على تكست الماسك اللي أنشأته .. وأنشأت تكست بوكس جديد وعملت عليه العمليات .. مع تحفظي على طريقة عملك للجدول .. لكن إنت أدرى كيف تريد أن تكون طريقة الجدول .

فاريد ان يعمل كل واحد هذا الشئ على طريقته واسلوبه بغض النظر عن المرفقات

انا هذا الكود جنني

كلكم تقولو سهل والله ما هو سهل

#25

إذا كان كذا أخوي المهنا .. معنى هذا إن رقم الكتاب (00001-*) ( أقصد طبعاً الخمس الخانات الأخيرة ) ماله أي وظيفة برمجية وإنما هو تسلسل ...

لأن ما تريده هو تغيير جميع الأرقام ، عند حذف مثلاً الرقم ( 00005-8) يكون الرقم ( 00006) يأخذ مكانه والرقم (00007) يأخذ مكان (00006) وهكذا ...

وبهذا يتغير ترتيب الكتب بمعنى أنه لا فائدة من ترقيم الكتب لأن قيمتها تتغير بمجرد الحذف ..

فأنصحك بحذف هذا الحقل من قاعدة البيانات وتعمل عملية تسلسل من داخل الكود .. والإعتماد على رقم ( id ) غير مكرر للعمليات على الكتاب من حذف وعرض وبحث وغيره .

إذا كانت 100 كتاب وحذفت الكتاب رقم 55 ستعاد عملية التسلسل في المرة القادمة ويعطيك 99 كتاب .. وهكذا ...

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

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