منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

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

تحية لاعضاء المنتدى الكرام 

فى الصورة التالية داتا جريد 

[attachment=20984]

تحتوى على كود وكمية لصنف (مع ملاحظة تكرار الصنف بكميات مختلفة)

يوجد فنكشن للبحث قبل الحفظ 

اذا كان الكمية المدخلة اكبر من الرصيد (BalAfter) لكل يوم على حدة  ...  لا يمكن الحفظ 

وهى تعمل بشكل كويس 


    Function NoBalance_duringDate(grd As DataGridView, txtwhid As TextBox, txtNoteDate As MaskedTextBox, MyCellIndex As Integer)
        Dim TotalBalMinuse As MsgBoxResult
        For i As Integer = 0 To grd.RowCount - 1
            SearchDataSet("select whid, NoteID, NoteAname, BalAfter  from ViewItemTransaction where  whid = " & txtwhid.Text & "  and  NoteDate >= '" & Format(CDate(txtNoteDate.Text), "yyyy/MM/dd") & "' and  Item_ID = " & CInt(grd.Rows(i).Cells(5).Value) & " GROUP BY whid, NoteID, NoteAname, BalAfter, notenature, NoteDate ORDER BY NoteDate")
            If cur1.Count > 0 Then
                For R = 0 To cur1.Count - 1
                    If grd.Rows(i).Cells(8).Value > cur1.Current("BalAfter") Then
                     
                            TotalBalMinuse = Mymsg(" Item Code " & grd.Rows(i).Cells(5).Value & "  Item Balance Minuse .. Current Balance  " & cur1.Current("BalAfter") & "  ", vbInformation + vbOKOnly, " Banciana ")
                                              
                        End If
                        Exit Function
                    End If
                    cur1.Position += 1
                Next
            End If
        Next
        If TotalBalMinuse = MsgBoxResult.Ok Then
            Return False
        Else
            Return True
        End If
    End Function



[attachment=20985]

  ***********************  لكن المشكلة فى التالى ************

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

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

هل هناك طريقة لتجميع الكمية لنفس الصنف قبل المقارنة بالفنكشن 


اسف للاطالة بس فعلا الموضوع ارهقنى كثيرا 

ارجوا التعديل على الكود .... او اعطاء فكرة لما ذكرت لحضراتكم 

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

cells(0) = العمود الأول

cells(6) = العمود السابع


كود :
TextBox1.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells(0).Value)).Sum()
(27-02-19, 02:39 AM)thevirus كتب : [ -> ]بسهل لك الطريق 
عند إضافة صنف جديد قم بالتحقق هل هذا الصنف موجود في الجريد من قبل في حالة كان:
موجود على الجريد 
قم بزيادة الكمية المطلوبة
وفي حال لم يكن موجود من قبل (مضاف)
قم بإضافته 
وبهذا نحل المشكلة بحيث أن الصنف لايمكن أن يتكرر في الجريد أكثر من مرة

للاسف لا يصلح هذا الحل 

لان المستخدم  يوجة كل كمية على نشاط معين فى بالجريد 

يوجد اسفل الجريد اختيار لتوجية كل كمية لنشاط معين 

لابد من الادخال المتكرر

اشكرك اخى الكريم

(27-02-19, 03:11 AM)حريف برمجة كتب : [ -> ]هذا السطر يجلب لك مجموع خلية في كل الصفوف :

cells(0) = العمود الأول

cells(6) = العمود السابع


كود :
TextBox1.Text = (From row In DataGridView1.Rows Select CDbl(row.Cells(0).Value)).Sum()


استاذى الكريم 

لا يوجد فى الفنكشن text1

وبعدين ... ماذا لو كان هناك اكثر من صنف لكل منهم كميات مختلفة ؟؟


انا اريد تجميع كل صنف بكمياته  قبل التحقق من الفنكشن 

ارجوا ان يكون الفكرة وصلت لحضرتك

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

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

1- كيف يتم تعبئة الداتا جريد هل يتم تعبئتها يدوياً كالفاتورة ام انه يتم جلب البيانات التى بها من خلال استعلام
2- الكود بالموضوع او المرفق يوجد به خطاء ما فاتنا مراجعته جيداً ..
3- امر الحفظ هل يقوم بحفظ ما بداخل الداتا جريد كما هو بالتكرار وماذا عن جدول الكمية اتمنى توضيح اكثر عن كل جدول


شوف نظرياً الامر لحل الوضع
اذا كان الداتا يتم جلبها من خلال استعلام فكل ما عليك عمل جروب باى الصنف او رقم الصنف
واذا كان الادخال يدوي يتم تحويل محتوى الداتا جريد الى ليست فيو بحيث عند اضافة فى الليست فيو يتم كما شرح الاخ thevirus
من ثم ترحيل محتوى الليست الى الكميات للتحقق كما اشرت انت لما تريد

وحتى اتمكن من تحويل الفكرة نظرياً الى عملى من خلال الكود
بحاجة لتوضيح اكثر عن الجداول وطريقة ادخال البيانات فى الداتا جريد

تحياتى لك
وتمنياتى لك التوفيق
(27-02-19, 02:18 PM)elgokr كتب : [ -> ]
وعليكم السلام ورحمة الله وبركاته

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

1- كيف يتم تعبئة الداتا جريد هل يتم تعبئتها يدوياً كالفاتورة ام انه يتم جلب البيانات التى بها من خلال استعلام
2- الكود بالموضوع او المرفق يوجد به خطاء ما فاتنا مراجعته جيداً ..
3- امر الحفظ هل يقوم بحفظ ما بداخل الداتا جريد كما هو بالتكرار وماذا عن جدول الكمية اتمنى توضيح اكثر عن كل جدول


شوف نظرياً الامر لحل الوضع
اذا كان الداتا يتم جلبها من خلال استعلام فكل ما عليك عمل جروب باى الصنف او رقم الصنف
واذا كان الادخال يدوي يتم تحويل محتوى الداتا جريد الى ليست فيو بحيث عند اضافة فى الليست فيو يتم كما شرح الاخ thevirus
من ثم ترحيل محتوى الليست الى الكميات للتحقق كما اشرت انت لما تريد

وحتى اتمكن من تحويل الفكرة نظرياً الى عملى من خلال الكود
بحاجة لتوضيح اكثر عن الجداول وطريقة ادخال البيانات فى الداتا جريد

تحياتى لك
وتمنياتى لك التوفيق



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

استاذنا الفاضل elgoker

تحية لشخصكم الكريم 

1 - يتم تعبئه الجريد يدوى سطر بسطر عند ادخال السندات 
2 - يتم الحفظ بجدول التفاصيل كما تم الادخال (لكل سطر على حدى)
3-الكود للفنكشن تمام ولا يوجد به مشاكل ولكن (حذفت منه بعض ما يخص بتعريب الرسايل لعدم الاطالة على من يساعد )
ومرفق الفنكشن بالكامل .....

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

            Dim query = From row In grdReciptQty.Rows.Cast(Of DataGridViewRow)() Group row By Item = row.Cells(5).Value Into ItemGroup = Group
                      Select New With {Key Item, Key .Count = ItemGroup.Count(Function® r.Cells(8).Value), Key .sum = ItemGroup.Sum(Function® r.Cells(8).Value)}
                      grdItems.DataSource = query.ToArray

حيث ان :
1 - grdReciptQty 
هى الجريد الاساسية للاصناف و المرفق اعلاه صورة لها 
2 - grdItems 
هى جريد لتجميع كميات الاصناف بها بناء كود الصنف 
3 - Cells(8)
خلية كود الصنف
4 -Cells(8)
خلية الكمية 

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

وبربط الفنكشن اعلاه ب الجريد الجديدة (المجمع بها الاصناف ) يكون الحال بالظبط  هو المطلوب الوصول اليه  كما اريد 

--------------  ولكن -----------

هذا يتطلب عمل جريد للتجميع لكل شاشات الاستلام والصرف بالبرنامج 

هل لا يوجد حل احر دون اللجوء لجريد تجميعية لكميات الاصناف ؟؟؟؟ 

تحياتى 

واسف على الاطالة



الفنكشن الاصلية دون تغير 


[attachment=21001]
اتمنى لو يتم ارفاق السورس
لاتمام عمل الكود طبقاً لما لديك من مسميات ولكى يمكننى اختبار صحة كتابة الكود

تحياتى لك
وتمنياتى لك التوفيق