أخواني الكرام بعد محاولات كثيره والبحث لم أستطع عمل المطلوب بالمرفقات أرجو تكرمكم بمساعدتي
عدم تكرار الرقم ونموذج فرعي
أخواني أنتظر مساعدتكم
اولاً بالنسبة لحقل الكود يمكنك عمله ترقيم تلقائي في قاعدة البيانات حيث يتم إدخاله بتسلسل تلقائي لا يمكن للمستخدم ان يقوم بإدخاله او تغييره
اما إذا كنت تريد التحقق من تكرار قيمة معينة فيمكنك استخدام الكود التالي :
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
أخي الكريم محمد غريب أشكرك على معلوماتك وردك عملت الربط بس هل ما قمت به صحيح بالإضافة إلى إجراء بعض العمليات الحسابيه حسب الصور المرفقه على فكره هذه دروس الاستاذ الكريم محمد فؤاد بس أريد أربطها بالفيجوال بيسك إليكم المرفقات
اجل التكستات تكون مربوطة بـ 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
أشكرك أخي الكريم والمعذره على إزعاجك بس حاولت أطبق ما قلته لي لكن ما وفقت أرجو أن توضح لي بمثال في المرفق وليكن في نموذج الفاتوره Bills
عندك ثلاث اخطاء بالكود :
الاول : وهو خطأي انا حيث نسيت ذكره: انه يجب إضافة الكود 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
وبالنسبة لإجمالي الفاتورة وإجمالي الخصم يتم حسابهم ايضاً بإستعلام 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)
أشكرك أخي الكريم بارك الله تعالى فيك في ميزان حسناتك بإذنه تعالى ضبط عندي بعد مجهودك الثمين بس حاولت أطبق عمليه الجمع في الاجمالي والصافي وصافي الفاتوره بس ما ضبط عندي
الكود صحيح لكن في مشروعك انت كتبت :
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
كل الشكر والتقدير والاحترام لك أخي العزيز محمد غريب جزاك الله تعالى خيراً وعقبه جنات النعيم أشهد أني أستفدت منك كثير إليك المرفق
تمام .. بالتوفيق
It does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer