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

مجموع عمود

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

السلام عليكم

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

عايز حساب مجموع اخر عامود في تكست بوكس

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

ممكن حد يساعدني

#2

لتقسيم النص الى عواميد يجب إستخدام علامة معينة نخبر بها البرنامج ان هذا هو الفاصل بين العواميد

مثلاً ولاننا نريد البيانات تظهر وكأنها في جدول سنستخدم العلامة Tab ليظهر النص كالشكل :

1	Item1	100
2	Item2	25
3	Item3	36
4	x	90

ونستخدم الدالة Split مرتين , مرة للفصل بين السطور ومرة للفصل بين العواميد

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

والمثال للتوضيح ..

(إذا اردت توضيح لكود معين اخبرني فقط)

TextGrid.rar

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

mmghv VB6 Programmer

#3

حبيبي شكرا على اهتمامك بس الملف ناقص لأني مش عارف افتحه

#4

يظهر في مشكلة عندك لانه يفتح معي عادي ..

على العموم , قم بإضافة 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 Sub

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

mmghv VB6 Programmer

#5

شكرا للأخ محمد مصطفى على مجهودك بس لاسف ليس الطلوب

انا عامل البرنامج داخل جريد كنترول والعمود الرابع في الجريد هوا اللي عايز احسب مجموعه

اتمنى اني اكون وضحت اكتر

#6

مجرد فكرة :

قم بعمل متغير يقوم بحساب العمود الرابع .

أو قم بعمل متغير ينتقل من سطر إلى السطر الأخير ويقوم بحساب العمود الرابع كلما إنتقل إلى سطر مثال :

Dim X As Integer

X = 0

Data1.Recordset.MoveFirst

'ومثلاً مربع النص الخاص بـالعمود الرابع هو Text1.Text

X = X + Text1.Text

Data1.Recordset.MoveNext


X = X + Text1.Text

إلى آخره

أو قم بإبتكار فكرة آخرة فالحاجة أم الإختراع أو إستخدم الداتا ريبورت

وإستخدم أداة RptFunction وإختر ما تريد حسابه وهو العمود الرابع أي مجموع قيم العمود الرابع

(بصراحة لم أجربه ولا أعلم هل هناك خاصية للحساب الأعمدة أم لا جرب !!!)

رجعت ومازال الفريق خاملاَ  :( 


 


abPuw.1.gif

#7

والله حاولت ابتكر وطلع عيني

حد يساعدني يا شباب

البرنامج واقف عالمجموع

#8

هل تقوم بتعبئة الجريد عن طريق إتصال بالداتابيز (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

#9

إذا كان لديك إتصال بالداتابيز وتريد مجموع قيم حقل معين تستطيع إستخدام الكود :

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

#10

لأ انا بعبي الجريد من ملف notepad

#11

يعني عرفت تعبي الجريد من الـ NotePad ومعرفتش تحسب مجموع عمود dry.gif

على العموم استخدم هذا الكود :

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

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