السلام عليكم ورحمة الله وبركاته
اخي الكريم يبدو انك لم توفق بتوصيف السؤال
سافترض انني حصلت على محموع عمود معين في الدلتاغرايد ووضعت النتيجة في تكست بوكس الان لو اعتبرت ان القيمة هي المبلع المستحق وقام الزبون بدفع مبلغ سأكتبه في مربع نص أخر وبمجرد الانتقال الى مربع الباقي يتم طرح المبلغين من بعض وتظهر النتيجة في مربع الباقي
- هل هي عملية تسديد قسط زبالتالي سيتم طرح القسط من المجموع وبالعادة يكون ثابت بناء على تحديد القسط مسبقا
- هل هي عملية شراء وبالتالي المبلع الطدفوع اصغر من المبلغ الاجمالي ويظهر المتبقي في مربع الباقي لدفعه الى الزبون
الامر يحتاج الى ايضاح اكثر يتتم الاجابة بشكل صحيح
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
13-01-21, 10:03 PM (آخر تعديل لهذه المشاركة : 13-01-21, 10:07 PM {2} بواسطة essawq.)
(13-01-21, 09:50 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم يبدو انك لم توفق بتوصيف السؤال
سافترض انني حصلت على محموع عمود معين في الدلتاغرايد ووضعت النتيجة في تكست بوكس الان لو اعتبرت ان القيمة هي المبلع المستحق وقام الزبون بدفع مبلغ سأكتبه في مربع نص أخر وبمجرد الانتقال الى مربع الباقي يتم طرح المبلغين من بعض وتظهر النتيجة في مربع الباقي
- هل هي عملية تسديد قسط زبالتالي سيتم طرح القسط من المجموع وبالعادة يكون ثابت بناء على تحديد القسط مسبقا
- هل هي عملية شراء وبالتالي المبلع الطدفوع اصغر من المبلغ الاجمالي ويظهر المتبقي في مربع الباقي لدفعه الى الزبون
الامر يحتاج الى ايضاح اكثر يتتم الاجابة بشكل صحيح
مشكور اخي ابراهيم على هذا المرور العطر
اخي هذا البرنامج برنامج شخصي لي فقط ولاموري الشخصية
والبرنامج شغال مئة بالمئة ولا يوجد اية مشاكل بة والحمد لله
لكن عندي خلينا نحكي اقساط تدفع كل شهر ويتم عرض البيانات والقسط ويتم جمع العمود الخاص بالقسط علما لا يوجد غيرة
ويظهر الناتج في تكست بوكس يعمل مئة بالمئة ولا يوجد اية مشاكل .
# احببت ان اضع تكست بوكس على الفورم واردت انة عندما يتم تحميل الفورم يتم خصم المبلغ المدفوع من المبلغ الاجمالي ويظهر المبلغ المتبقي ويتجاوب مع لو حذفت او عدلت او ضفت ولم اوفق بالطريقة طبعا بدون ادخال مبلغ في تكست بوكس يكون الرقم ثابت بمعادلة معينة
اكيد في طريقة لعمل ذلك
وارفقت المشروع + القاعدة ماذا يوجد اكثر من ذلك نوضيح
كل الحب والاحتراك لك اخي ابراهيم
السلام عليكم اخي essawq الامر بإذن الله بسيط قم بتعريف متغير رقمي واعطه قيمة ثابتة واستخدم هذه القيمة في عملية الطرح ... ايضا هنا هذه القيمة هل هي ثابتة دائما حتى لو تغير مبلغ القسط ؟ ام انها متغيرة ويجب اخذ قيمتها من القسط المحدد ولكن ماذا لو اردت ادخال قيمة بدلا عنها ؟ هنا يجب عمل الاتي اولا يجب عدم وضع القيمة الثابتة في مربع النص وبذلك تتم العملية اتو ماتيكيا مع المتغير بناء على ان مربع نص القيمة فارغا اما ان وضعنا قيمة فهنا تلغى عملية الطرح مع المتغير وتصبح القيمة في مربع النص هي التي ستدخل في عملية الحساب لا أعرف ان كنت قد استطعت ايصال الفكرة في الحل
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
والحل انني اضفت حقل جديد في قاعدة البيانات هذا الحقل لكي اول صف وضعت فية القيمة العددية التي اريد الطرح منها وباقي الصفوف اصفار
وعدلت على كود الاضافة والتعديل
وعدلت دالة الجمع
كود :
Private Sub SumDgv()
Dim x, y, z As Integer
For i As Integer = 0 To DgvGoled.RowCount - 1
x += DgvGoled.Rows(i).Cells(2).Value
y += DgvGoled.Rows(i).Cells(5).Value
Next
TexTotal2.Text = x.ToString
TextBox1.Text = y.ToString
z = y - x
TexTotal1.Text = z.ToString
End Sub
وهذا كود الفورم كامل
كود :
Public Class Frm_Goled
Dim myconn As New DBconn
Private Sub AutoNumber()
myconn.tblGroup.Clear()
myconn.tblGroup = myconn.readData("Select * from Goled", "")
Dim coluname() As String = {"الرقم", "رقم المرجع", "المبلغ المدفوع", "تاريخ الوصل", "ملاحظات", "الباقي"}
myconn.formatgrd(coluname, DgvGoled)
myconn.cur = CType(Me.BindingContext(myconn.tblGroup), CurrencyManager)
myconn.showposition(lbl:=LbAdd)
myconn.NewRecAutoNumber("ID", "Goled", txtID, Me)
TexCompany.Clear()
DtbDate.Text = DateTime.Now.ToShortDateString()
'SummDgvGoled()
SumDgv()
TxtNotes.Clear()
TxtHouer.Clear()
btnAdd.Enabled = True
BtnNew.Enabled = True
btnDelete.Enabled = False
btnSave.Enabled = False
DgvGoled_Config()
End Sub
Private Sub DgvGoled_Config()
With DgvGoled
.Columns(0).FillWeight = 50
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).FillWeight = 60
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).FillWeight = 80
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).FillWeight = 80
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).DefaultCellStyle.Format = "yyyy/MM/dd"
.Columns(4).FillWeight = 170
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(5).FillWeight = 170
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(5).Visible = False
End With
End Sub
Private row As Integer
Private Sub Showe()
Try
myconn.tbl.Clear()
myconn.tbl = myconn.readData("select * from Goled", "")
If myconn.tbl.Rows.Count <= 0 Then
MessageBox.Show("لا يوجد بيانات فى هذه الشاشه")
Else
Try
txtID.Text = myconn.tbl.Rows(row)(0).ToString()
TexCompany.Text = myconn.tbl.Rows(row)(1).ToString()
TxtHouer.Text = myconn.tbl.Rows(row)(2).ToString()
DtbDate.Value = myconn.tbl.Rows(row)(3).ToString()
TxtNotes.Text = myconn.tbl.Rows(row)(4).ToString()
TxtSafy.Text = myconn.tbl.Rows(row)(5).ToString()
'TxtSafy.Text = False
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End If
btnAdd.Enabled = False
BtnNew.Enabled = True
btnDelete.Enabled = True
btnSave.Enabled = True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
'Private Sub SummDgvGoled()
' Dim summ As Integer = 0
' For i As Integer = 0 To DgvGoled.RowCount - 1
' summ += DgvGoled.Rows(i).Cells(2).Value
' Next
' TexTotal2.Text = Format(summ, "00.00")
' TexTotal2.ForeColor = Color.Red
'End Sub
Private Sub SumDgv()
Dim x, y, z As Integer
For i As Integer = 0 To DgvGoled.RowCount - 1
x += DgvGoled.Rows(i).Cells(2).Value
y += DgvGoled.Rows(i).Cells(5).Value
Next
TexTotal2.Text = x.ToString
TextBox1.Text = y.ToString
z = y - x
TexTotal1.Text = z.ToString
End Sub
Private Sub Frm_Goled_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AutoNumber()
End Sub
Private Sub BtnNew_Click(sender As Object, e As EventArgs) Handles BtnNew.Click
AutoNumber()
End Sub
Private Sub btnFirst_Click(sender As Object, e As EventArgs) Handles btnFirst.Click
Showe()
myconn.cur.Position = 0
Dim pos As Integer = Me.DgvGoled.CurrentRow.Index
txtID.Text = DgvGoled.Rows(pos).Cells(0).Value
TexCompany.Text = DgvGoled.Rows(pos).Cells(1).Value
TxtHouer.Text = DgvGoled.Rows(pos).Cells(2).Value
DtbDate.Value = DgvGoled.Rows(pos).Cells(3).Value
TxtNotes.Text = DgvGoled.Rows(pos).Cells(4).Value
TxtSafy.Text = DgvGoled.Rows(pos).Cells(5).Value
myconn.showposition(lbl:=LbAdd)
End Sub
Private Sub btnPrev_Click(sender As Object, e As EventArgs) Handles btnPrev.Click
Showe()
myconn.cur.Position -= 1
Dim pos As Integer = Me.DgvGoled.CurrentRow.Index
txtID.Text = DgvGoled.Rows(pos).Cells(0).Value
TexCompany.Text = DgvGoled.Rows(pos).Cells(1).Value
TxtHouer.Text = DgvGoled.Rows(pos).Cells(2).Value
DtbDate.Value = DgvGoled.Rows(pos).Cells(3).Value
TxtNotes.Text = DgvGoled.Rows(pos).Cells(4).Value
TxtSafy.Text = DgvGoled.Rows(pos).Cells(5).Value
myconn.showposition(lbl:=LbAdd)
End Sub
Private Sub btnNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click
Showe()
myconn.cur.Position += 1
Dim pos As Integer = Me.DgvGoled.CurrentRow.Index
txtID.Text = DgvGoled.Rows(pos).Cells(0).Value
TexCompany.Text = DgvGoled.Rows(pos).Cells(1).Value
TxtHouer.Text = DgvGoled.Rows(pos).Cells(2).Value
DtbDate.Value = DgvGoled.Rows(pos).Cells(3).Value
TxtNotes.Text = DgvGoled.Rows(pos).Cells(4).Value
TxtSafy.Text = DgvGoled.Rows(pos).Cells(5).Value
myconn.showposition(lbl:=LbAdd)
End Sub
Private Sub btnLast_Click(sender As Object, e As EventArgs) Handles btnLast.Click
Showe()
myconn.cur.Position = myconn.cur.Count - 1
Dim pos As Integer = Me.DgvGoled.CurrentRow.Index
txtID.Text = DgvGoled.Rows(pos).Cells(0).Value
TexCompany.Text = DgvGoled.Rows(pos).Cells(1).Value
TxtHouer.Text = DgvGoled.Rows(pos).Cells(2).Value
DtbDate.Value = DgvGoled.Rows(pos).Cells(3).Value
TxtNotes.Text = DgvGoled.Rows(pos).Cells(4).Value
TxtSafy.Text = DgvGoled.Rows(pos).Cells(5).Value
myconn.showposition(lbl:=LbAdd)
End Sub
Private Sub DgvGoled_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgvGoled.CellClick
Dim pos As Integer = Me.DgvGoled.CurrentRow.Index
txtID.Text = DgvGoled.Rows(pos).Cells(0).Value
TexCompany.Text = DgvGoled.Rows(pos).Cells(1).Value
TxtHouer.Text = DgvGoled.Rows(pos).Cells(2).Value
DtbDate.Value = DgvGoled.Rows(pos).Cells(3).Value
TxtNotes.Text = DgvGoled.Rows(pos).Cells(4).Value
TxtSafy.Text = DgvGoled.Rows(pos).Cells(5).Value
myconn.showposition(lbl:=LbAdd)
btnAdd.Enabled = False
BtnNew.Enabled = True
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If TexCompany.Text = "" Then MessageBox.Show(" يجب تعبئة كافة الحقول قبل الحفظ", "تنبية", MessageBoxButtons.OK, MessageBoxIcon.Warning) : TexCompany.Focus() : Exit Sub
If TxtHouer.Text = "" Then MessageBox.Show(" يجب تعبئة كافة الحقول قبل الحفظ", "تنبية", MessageBoxButtons.OK, MessageBoxIcon.Warning) : TxtHouer.Focus() : Exit Sub
Dim d As String = DtbDate.Value.ToString("yyyy/MM/dd")
myconn.exceuteData("insert into Goled Values (" & txtID.Text & " ,N'" + TexCompany.Text & "' ,N'" + TxtHouer.Text & "', N'" & d & "', N'" + TxtNotes.Text & "',N'" + TxtSafy.Text & "' )", "تم الادخال بنجاح")
AutoNumber()
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
If TexCompany.Text = "" Then MessageBox.Show(" يجب تعبئة كافة الحقول قبل الحفظ", "تنبية", MessageBoxButtons.OK, MessageBoxIcon.Warning) : TexCompany.Focus() : Exit Sub
If TxtHouer.Text = "" Then MessageBox.Show(" يجب تعبئة كافة الحقول قبل الحفظ", "تنبية", MessageBoxButtons.OK, MessageBoxIcon.Warning) : TxtHouer.Focus() : Exit Sub
myconn.exceuteData("update Goled set Number_Goled= '" & TexCompany.Text & "', Mony_Goled= '" & TxtHouer.Text & "', Date_Goled= '" & DtbDate.Text & "', Note_Goled= '" & TxtNotes.Text & "',Safy_Goled= '" & TxtSafy.Text & "' where ID=" + txtID.Text + " ", "تم التعديل بنجاح")
AutoNumber()
End Sub
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
If MessageBox.Show("هل انتا متاكد من مسح البيانات", "تاكيد", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then
myconn.tblSearch = myconn.readData("delete from Goled where ID=" + txtID.Text + "", "تم مسح البيانات بنجاح")
AutoNumber()
End If
End Sub
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
Close()
End Sub
Private Sub TexCompany_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TexCompany.KeyPress
Select Case e.KeyChar
Case "0"c To "9"c, Chr(Keys.Back)
Case "."
'لن نفعل أي شيء.. هذا معناه قبول كتابة هذا الحرف
Case Else
Beep()
e.Handled = True
End Select
End Sub
Private Sub TxtHouer_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TxtHouer.KeyPress
Select Case e.KeyChar
Case "0"c To "9"c, Chr(Keys.Back)
Case "."
'لن نفعل أي شيء.. هذا معناه قبول كتابة هذا الحرف
Case Else
Beep()
e.Handled = True
End Select
End Sub
End Class