تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكلة فى تحديث حقل اداة DataGridView
#10
(09-04-16, 08:58 AM)khodor1985 كتب : عذرا أخي لدي اعتراض على الطريقة أو الأسلوب، لماذا تنتهجون الطرق الطويلة في التفكير؟ لماذا تصعبون الأمور؟
لنفترض أن لديك 1000 صنف في الجدول كيف ستنفذ عملية البيع؟

مرحبا اخى

الا اشكرك جدا على طرحك للافكار

لانى بالفعل طلبت طرح افكار اكتر

فى هذا الموضوع

http://vb4arb.com/vb/thread-15384-page-2.html

عن مثل هذه البرامج

وبالنسبة لهذا السؤال
لنفترض أن لديك 1000 صنف في الجدول كيف ستنفذ عملية البيع؟

لم افهم ما تقصده جيدا

على حد فهمى لو سؤالك دا معناه كيف هبيع كمية من الصنف

فالاخ سعود بارك الله فيه

ضايف خاصية جميلة جدا
وهى الكمية المراد بيعها
حيث اكتب فيها الكمية الى عايز ابعها
مثلا لو هبيع 1000 قطعة من صنف واحد

هكتب 1000 فى حقل الكمية المراد بيعها واضغط زر بيع

وانا عدلته قليلا بان ييظهر رسالة بعد ضغط بيع
يظهر فيها العدد المراد بيعه + سعر القطعة الواحدة +السعر الاجمالى لكل القطع المراد بيعها

لكن لو حضرتك تقصد شئ اخر بسؤالك يريت توضحلى اكتر

واتمنى ان تمدنا بالافكار هذا شئ يفرحنى جدا والله

(09-04-16, 01:15 PM)khodor1985 كتب : السلام عليكم أخي العزيز ورحمة الله وبركاته
لقد قمنا بالتعديل على مشروعكم من وجهة نظرنا ونحن بالتأكيد نحترم وجهة نظر الآخرين ونضعها على رأسنا ولكن التنوع والإختلاف في تقديم الأفكار والآراء يغني المشاركة  ويثريها.

وأرجو من الله عز وجل أن أكون قد أصبت إنه سميع مجيب.

صور عن التعديلات :
المشروع بشكل عام :
لقد قمنا بإضافة زر جديد لتهيئة عناصر التحكم لاستقبال البيانات الجديدة يدويا، وقمنا بإضافة زر حفظ لادخال البيانات إلى قاعدة البيانات، وقمنا بإنشاء زر حذف لازالة البيانات التي لا نريدها، كما قمنا بإنشاء مجموعة من الأزرار بهدق التنقل بين السجلات.


إدخال صنف جديد :
نضغط أولا على زر جديد في حال كانت مربعات النوصوص معبئة ثم نقوم بتحرير البيانات داخل مربعات النصوص، وبعد أن ننتهي نضغط على الزر حفظ لإدخال البيانات إلى قاعدة البيانات :






إذا اردنا تنفيذ عملية بيع أنظر جيد ما الذي سيجري :








الأكواد :
قم بالإعلان عن المتغيرات التالية :
PHP كود :
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\db.accdb")
 
   Dim cmd As OleDbCommand
    Dim cmb 
As OleDbCommandBuilder
    Dim da 
As OleDbDataAdapter
    Dim ds 
As DataSet
    Dim bs 
As BindingSource
    Dim sqlstr 
As String 

تحميل البيانات من قاعدة البيانات وإظهارها في مربعات النصوص والداتا غريد للمستخدم النهائي وطبعا سوف نستدعي هذا الاجراء في الحدث Load للنموذج :
PHP كود :
Private Sub LoaddgvInventory()
 
       Try

            con
.Open()
 
           sqlstr "Select ItmID as الرقم,ItmName as الصنف,ItmPrice as السعر,ItmIN as الوارد,ItmTotal as الإجمالي,ItmOut as الصادر, " _
                
"ItmRemain as المتبقي From tblInventory Where ItmActv=1"
 
           cmd = New OleDbCommand(sqlstrcon)
 
           da = New OleDbDataAdapter(cmd)
 
           ds = New DataSet
            ds
.Clear()
 
           da.Fill(ds"tblInventory")

 
           bs = New BindingSource
            bs
.DataSource ds.Tables("tblInventory")


 
           ClearDataBinding()

 
           txtID.DataBindings.Add("text"bs"الرقم"22)
 
           txtItem.DataBindings.Add("text"bs"الصنف"22)
 
           txtPrice.DataBindings.Add("text"bs"السعر"22)
 
           txtIN.DataBindings.Add("text"bs"الوارد"22)
 
           txtTotal.DataBindings.Add("text"bs"الإجمالي"22)
 
           txtOut.DataBindings.Add("text"bs"الصادر"22)
 
           txtRemain.DataBindings.Add("text"bs"المتبقي"22)


 
           dgvInventory.DataSource bs
            CalTotal
()

 
           con.Close()
 
       Catch ex As Exception
            If con
.State ConnectionState.Open Then con.Close()
 
           MsgBox(ex.Message)
 
       End Try

 
   End Sub 

زر جديد :
PHP كود :
 ClearDataBinding()
 
       txtID.Clear()
 
       txtItem.Clear()
 
       txtPrice.Clear()
 
       txtIN.Clear()
 
       txtTotal.Text 0
        txtOut
.Text 0
        txtRemain
.Text 0
        txtToOut
.Text 0

        Dim Max 
As Integer
        Max 
ds.Tables("tblInventory").Rows.Count
        txtID
.Text += CStr(Max 1

زر الحفظ أو البيع :
PHP كود :
Private Sub SaveRecord()
 
       Try
            con
.Open()
 
           sqlstr "Select * From tblInventory Where ItmID=@ItmID"
 
           cmd = New OleDbCommand(sqlstrcon)
 
           cmd.Parameters.Add("@ItmID"OleDbType.Integer).Value IIf(txtID.Text.Trim.Length 0System.DBNull.ValuetxtID.Text)

 
           If cmd.ExecuteScalar 0 Then
                sqlstr 
"Update tblInventory Set ItmName=@ItmName,ItmPrice=@ItmPrice,ItmIN=@ItmIN,ItmTotal=@ItmTotal,ItmOut=@ItmOut, " _
                         
"ItmRemain=@ItmRemain Where ItmID=@ItmID"
 
               cmd = New OleDbCommand(sqlstrcon)
 
               Dim Total As Integer Val(txtOut.Text) + Val(txtToOut.Text)
 
               With cmd.Parameters
                    
.Add("@ItmName"OleDbType.VarWChar).Value IIf(txtItem.Text.Trim.Length 0System.DBNull.ValuetxtItem.Text)
 
                   .Add("@ItmPrice"OleDbType.Integer).Value IIf(txtPrice.Text.Trim.Length 0System.DBNull.ValuetxtPrice.Text)
 
                   .Add("@ItmIN"OleDbType.Integer).Value IIf(txtIN.Text.Trim.Length 0System.DBNull.ValuetxtIN.Text)
 
                   .Add("@ItmTotal"OleDbType.Integer).Value IIf(txtTotal.Text.Trim.Length 0System.DBNull.ValuetxtTotal.Text)
 
                   .Add("@ItmOut"OleDbType.Integer).Value IIf(Len(Total) = 0System.DBNull.ValueTotal)
 
                   .Add("@ItmRemain"OleDbType.Integer).Value IIf(txtRemain.Text.Trim.Length 0System.DBNull.ValuetxtRemain.Text)
 
                   .Add("@ItmID"OleDbType.Integer).Value IIf(txtID.Text.Trim.Length 0System.DBNull.ValuetxtID.Text)
 
               End With
                cmd
.ExecuteNonQuery()
 
               MsgBox("تمت عملية التحديث بنجاح"MsgBoxStyle.MsgBoxRight MsgBoxStyle.Information"إنتباه")
 
           Else
                sqlstr 
"INSERT INTO tblInventory(ItmName,ItmPrice,ItmIN,ItmTotal,ItmOut,ItmRemain) " _
                    
"Values(@ItmName,@ItmPrice,@ItmIN,@ItmTotal,@ItmOut,@ItmRemain)"

 
               cmd = New OleDbCommand(sqlstrcon)

 
               With cmd.Parameters
                    
.Add("@ItmName"OleDbType.VarWChar).Value IIf(txtItem.Text.Trim.Length 0System.DBNull.ValuetxtItem.Text)
 
                   .Add("@ItmPrice"OleDbType.Integer).Value IIf(txtPrice.Text.Trim.Length 0System.DBNull.ValuetxtPrice.Text)
 
                   .Add("@ItmIN"OleDbType.Integer).Value IIf(txtIN.Text.Trim.Length 0System.DBNull.ValuetxtIN.Text)
 
                   .Add("@ItmTotal"OleDbType.Integer).Value IIf(txtTotal.Text.Trim.Length 0System.DBNull.ValuetxtTotal.Text)
 
                   .Add("@ItmOut"OleDbType.Integer).Value IIf(txtToOut.Text.Trim.Length 0System.DBNull.ValuetxtToOut.Text)
 
                   .Add("@ItmRemain"OleDbType.Integer).Value IIf(txtRemain.Text.Trim.Length 0System.DBNull.ValuetxtRemain.Text)

 
                   cmd.ExecuteNonQuery()
 
                   MsgBox("تمت عملية الإضافة بنجاح"MsgBoxStyle.MsgBoxRight MsgBoxStyle.Information"إنتباه")

 
               End With
            End 
If

 
           con.Close()
 
           LoaddgvInventory()
 
       Catch ex As Exception
            If con
.State ConnectionState.Open Then con.Close()
 
           MsgBox(ex.Message)
 
       End Try 

وباقي الأكواد سوف تتطلع عليها في المشروع

المشروع بعد التعديل :

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

السلام عليكم

اولا تسلم ايدك جدا يا استاذى الفاضل khodor1985

بالفعل انا حاولت التعديل لمايناسبنى وما هو افضل للمشروع

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






وعجبنى طريقة تفكيرك جدا

وسوف احمل مشروعك

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

ساعود بعد قراءة وفهم الاكواد جيدا

اخى لدى استفسار بسيط

بالنسبة لحقل الصادر = الكمية المباعة

طيب الوارد = ايه؟؟؟؟؟؟
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم