السلام عليكم
شباب عندي جريد كنترول مكون من اكثر من عمود والعمود الاخير اللي هوا الرابع عباره عن سعر الصنف
عايز حساب مجموع اخر عامود في تكست بوكس
بحيث لما ادوس على امر معين يحسب مجموع اسعار الاصناف اللي في اخر عمود في هذا التكست
ممكن حد يساعدني
السلام عليكم
شباب عندي جريد كنترول مكون من اكثر من عمود والعمود الاخير اللي هوا الرابع عباره عن سعر الصنف
عايز حساب مجموع اخر عامود في تكست بوكس
بحيث لما ادوس على امر معين يحسب مجموع اسعار الاصناف اللي في اخر عمود في هذا التكست
ممكن حد يساعدني
لتقسيم النص الى عواميد يجب إستخدام علامة معينة نخبر بها البرنامج ان هذا هو الفاصل بين العواميد
مثلاً ولاننا نريد البيانات تظهر وكأنها في جدول سنستخدم العلامة Tab ليظهر النص كالشكل :
1 Item1 100 2 Item2 25 3 Item3 36 4 x 90
ونستخدم الدالة Split مرتين , مرة للفصل بين السطور ومرة للفصل بين العواميد
ونقوم بعمل حلقة تكرارية لحساب قيمة عمود معين في كل السطور
والمثال للتوضيح ..
(إذا اردت توضيح لكود معين اخبرني فقط)
It does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer
حبيبي شكرا على اهتمامك بس الملف ناقص لأني مش عارف افتحه
يظهر في مشكلة عندك لانه يفتح معي عادي ..
على العموم , قم بإضافة Textbox و CommandButton
واضبط الخصائص التالية للـ TextBox :
Multiline = True ScrollBars = 3-Both
ثم قم بإدراج الكود التالي :
Private Sub Form_Load()
Dim S As String
S = "1" & vbTab & "Item1" & vbTab & "100" & vbNewLine
S = S & "2" & vbTab & "Item2" & vbTab & "25" & vbNewLine
S = S & "3" & vbTab & "Item3" & vbTab & "36" & vbNewLine
S = S & "4" & vbTab & "x" & vbTab & "90"
Text1.Text = S
End Sub
Private Sub Command1_Click()
' هنا نقوم بتعيرف مصفوفتين ديناميكيتين لوضع بيانات الصفوف والاعمدة بها
Dim Ar1() As String, Ar2() As String
Dim Total As Double
' هنا نستخرج السطور على حدى ونحدد العلامة الفاصلة بين السطور وهي انتر
Ar1 = Split(Text1.Text, vbNewLine)
Total = 0
' الحلقة التكرارية لحساب المجموع في كل السطور
For Each ar In Ar1
Ar2 = Split(ar, vbTab) ' هنا نقوم بالفصل بعلامة التاب وهي علامة الفصل بين الحقول
If UBound(Ar2) > 1 Then
Total = Total + Val(Ar2(2)) ' إضافة قيمة الحقل الثالث لمتغير المجموع
End If
Next
Text2.Text = Total
End SubIt does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer
شكرا للأخ محمد مصطفى على مجهودك بس لاسف ليس الطلوب
انا عامل البرنامج داخل جريد كنترول والعمود الرابع في الجريد هوا اللي عايز احسب مجموعه
اتمنى اني اكون وضحت اكتر
مجرد فكرة :
قم بعمل متغير يقوم بحساب العمود الرابع .
أو قم بعمل متغير ينتقل من سطر إلى السطر الأخير ويقوم بحساب العمود الرابع كلما إنتقل إلى سطر مثال :
Dim X As Integer X = 0 Data1.Recordset.MoveFirst 'ومثلاً مربع النص الخاص بـالعمود الرابع هو Text1.Text X = X + Text1.Text Data1.Recordset.MoveNext X = X + Text1.Text
إلى آخره
أو قم بإبتكار فكرة آخرة فالحاجة أم الإختراع أو إستخدم الداتا ريبورت
وإستخدم أداة RptFunction وإختر ما تريد حسابه وهو العمود الرابع أي مجموع قيم العمود الرابع
(بصراحة لم أجربه ولا أعلم هل هناك خاصية للحساب الأعمدة أم لا جرب !!!)
والله حاولت ابتكر وطلع عيني
حد يساعدني يا شباب
البرنامج واقف عالمجموع
هل تقوم بتعبئة الجريد عن طريق إتصال بالداتابيز (RecordSet) ؟
It does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer
إذا كان لديك إتصال بالداتابيز وتريد مجموع قيم حقل معين تستطيع إستخدام الكود :
Dim Total As Double Total = 0 rs.MoveFirst Do Until rs.EOF Total = Total + Val(rs!MyField) rs.MoveNext Loop MsgBox Total
حيث rs هو الجدول المربوط بالداتابيز و MyField هو الحقل الذي تريد حساب مجموع قيمه
It does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer
لأ انا بعبي الجريد من ملف notepad
يعني عرفت تعبي الجريد من الـ NotePad ومعرفتش تحسب مجموع عمود ![]()
على العموم استخدم هذا الكود :
Dim Total As Double
With DataGrid1
.Col = 2
.Row = 0
For n = 0 To .VisibleRows - 1
Total = Total + Val(.Text)
If .Row < .VisibleRows - 1 Then .Row = .Row + 1
Next
MsgBox Total
End With
حيث Col هو رقم العمود (مع ملاحظة ان بداية العد من الصفر)
وطبعاً ممكن تحسب المجموع وانت بتعبي الجريد وهذا يكون افضل .
تم تعديل هذه المشاركة بواسطة محمد مصطفي غريب في 16 فبراير 2012 في 17:59
It does not matter what they know about you, but what you can do, so let your work speak of you
mmghv VB6 Programmer