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

عدم تكرار الرقم ونموذج فرعي

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

أخواني الكرام بعد محاولات كثيره والبحث لم أستطع عمل المطلوب بالمرفقات أرجو تكرمكم بمساعدتي

Project - Copy.rar

#2

أخواني أنتظر مساعدتكم

#3

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

اما إذا كنت تريد التحقق من تكرار قيمة معينة فيمكنك استخدام الكود التالي :

Dim rs As New Recordset
rs.Open "select * from TblNames Where ZNumber='" & txtCode & "'", Adodc1.Recordset.ActiveConnection

If rs.RecordCount > 0 Then
	' Cancel Saving Command
End If

هذا الكود يتحقق من تكرار القيمة النصية الموجودة بصندوق النص txtCode في الحقل النصي ZNumber في الجدول TblNames

ويمكنك إضافة كود إلغاء الحفظ في حال تحقق الشرط , ويكون كود إلغاء الحفظ هو :

Adodc1.Recordset.CancelUpdate

في حين ان كود حفظ التعديل او الإضافة هو :

Adodc1.Recordset.Update

اما بالنسبة للبيانات الفرعية فيمكنك استخدام اداة DataGrid لتقوم بعرض البيانات في جدول افضل من TextBoxs

يمكنك إضافة اداة الداتاجريد من خلال الذهاب الى :

Project >> Components ثم ابحث عن المكون Microsoft DataGrid Control

ويمكنك ربطها بالـ Adodc من خلال الخاصية RecordSet من نافذة الخصائص الخاصة بها ..

تم تعديل هذه المشاركة بواسطة محمد غريب في 23 مارس 2012 في 21:09

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#4

أخي الكريم محمد غريب أشكرك على معلوماتك وردك عملت الربط بس هل ما قمت به صحيح بالإضافة إلى إجراء بعض العمليات الحسابيه حسب الصور المرفقه على فكره هذه دروس الاستاذ الكريم محمد فؤاد بس أريد أربطها بالفيجوال بيسك إليكم المرفقات

Project - Copy.rar

#5

اجل التكستات تكون مربوطة بـ Adodc والجريد تكون مربوطة بـ Adodc آخر كما في الصورة

بالنسبة للحقول وتسميتها وعرض بعض الحقول واخرى لا :

لنفترض ان جدول الفواتير اسمه Bills ويحتوى على الحقول :

ID, Customer, Product, Quantity, UnitPrice, Discount, Store, Notes

ونريد فقط عرض الحقول التالية :

Product, Quantity, UnitPrice, Discount

مع إضافة الحقول الإفتراضية (اي انها ليست موجوده بالجدول فعلياً ولكن يتم حسابها في الاستعلام):

Total , GrandTotal

على ان تظهر كلها بمسميات عربية

لعمل كل هذا نستخدم استعلام SQL مع الـ Adodc فيكون الكود التالي :

Adodc1.CommandType = adCmdUnknown
Adodc1.RecordSource = "Select Product as [الصنف], Quantity as [عدد], UnitPrice as [سعر الوحدة], Discount as [خصم], (Quantity*UnitPrice) as [إجمالي], ((Quantity*UnitPrice)-Discount) as [صافي] From Bills"

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

ايضاً قمنا بإضافة حقول إفتراضية عبارة عن عملية حسابيه

وبالنسبة لإجمالي الفاتورة وإجمالي الخصم يتم حسابهم ايضاً بإستعلام SQL فيكون الكود :

Dim rs As New Recordset
rs.Open "select Sum(Quantity*UnitPrice) as [Total], Sum(Discount) as [TotalDiscount] From Bills", Adodc1.Recordset.ActiveConnection

Text1.Text = rs!Total
Text2.Text = rs!TotalDiscount
Text3.Text = Val(rs!Total) - Val(rs!TotalDiscount)

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

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#6

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

Project.rar

#7

عندك ثلاث اخطاء بالكود :

الاول : وهو خطأي انا حيث نسيت ذكره: انه يجب إضافة الكود Adodc1.Refresh بعد سطرين الكود

الثاني : انك استخدمت الإستعلام :

select * from bills product as [الصنف], quantity as [عدد]

استخدمت العلامة (*) والتي تعني اعرض كل الحقول في حين اننا نريد فقط عرض الحقلين المذكورين , وايضاً وضعت اسم الجدول قبل اسماء الحقول

إذاً المفروض انك تستخدم المصطلح Select ثم الحقول التي تريد ويفصل بينها بالعلامة (,) ثم المصطلح From ثم اسم الجدول , فيصبح الإستعلام كالتالي :

select product as [الصنف], quantity as [عدد] from bills

والخطأ الثالث : وهو انك وضعت الكود بحدث WillMove الخاص بالـ Adodc في حين انه يجب تنفيذ الكود مرة واحدة عند تحميل الفورم اي انه يجب وضع الكود بحدث الـ Form Load

إذاً في النهاية يجب إستخدام الكود :

Adodc1.CommandType = adCmdUnknown
Adodc1.RecordSource = "select product as [الصنف], quantity as [عدد] from bills"
Adodc1.Refresh

في حدث الـ Form_Load

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#8

وبالنسبة لإجمالي الفاتورة وإجمالي الخصم يتم حسابهم ايضاً بإستعلام SQL فيكون الكود :

Dim rs As New Recordset
rs.Open "select Sum(Quantity*UnitPrice) as [Total], Sum(Discount) as [TotalDiscount] From Bills", Adodc1.Recordset.ActiveConnection

Text1.Text = rs!Total
Text2.Text = rs!TotalDiscount
Text3.Text = Val(rs!Total) - Val(rs!TotalDiscount)

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

Project.rar

#9

الكود صحيح لكن في مشروعك انت كتبت :

Adodc1.Recordset

بدلاً من :

Adodc1.Recordset.ActiveConnection

ايضاً قبل كود وضع القيم في التكستات قم بإضافة السطر :

On Error Resume Next

حتى لا يحدث خطأ عندما تكون قيم الحقول فارغة (Null)

تم تعديل هذه المشاركة بواسطة محمد غريب في 30 مارس 2012 في 21:30

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

#10

كل الشكر والتقدير والاحترام لك أخي العزيز محمد غريب جزاك الله تعالى خيراً وعقبه جنات النعيم أشهد أني أستفدت منك كثير إليك المرفق

Project.rar

#11

تمام .. بالتوفيق

It does not matter what they know about you, but what you can do, so let your work speak of you

mmghv VB6 Programmer

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

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

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

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

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