09-04-16, 03:16 PM
(آخر تعديل لهذه المشاركة : 09-04-16, 03:55 PM {2} بواسطة الماجيك مسعد.)
(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(sqlstr, con)
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, "الرقم", 2, 2)
txtItem.DataBindings.Add("text", bs, "الصنف", 2, 2)
txtPrice.DataBindings.Add("text", bs, "السعر", 2, 2)
txtIN.DataBindings.Add("text", bs, "الوارد", 2, 2)
txtTotal.DataBindings.Add("text", bs, "الإجمالي", 2, 2)
txtOut.DataBindings.Add("text", bs, "الصادر", 2, 2)
txtRemain.DataBindings.Add("text", bs, "المتبقي", 2, 2)
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(sqlstr, con)
cmd.Parameters.Add("@ItmID", OleDbType.Integer).Value = IIf(txtID.Text.Trim.Length = 0, System.DBNull.Value, txtID.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(sqlstr, con)
Dim Total As Integer = Val(txtOut.Text) + Val(txtToOut.Text)
With cmd.Parameters
.Add("@ItmName", OleDbType.VarWChar).Value = IIf(txtItem.Text.Trim.Length = 0, System.DBNull.Value, txtItem.Text)
.Add("@ItmPrice", OleDbType.Integer).Value = IIf(txtPrice.Text.Trim.Length = 0, System.DBNull.Value, txtPrice.Text)
.Add("@ItmIN", OleDbType.Integer).Value = IIf(txtIN.Text.Trim.Length = 0, System.DBNull.Value, txtIN.Text)
.Add("@ItmTotal", OleDbType.Integer).Value = IIf(txtTotal.Text.Trim.Length = 0, System.DBNull.Value, txtTotal.Text)
.Add("@ItmOut", OleDbType.Integer).Value = IIf(Len(Total) = 0, System.DBNull.Value, Total)
.Add("@ItmRemain", OleDbType.Integer).Value = IIf(txtRemain.Text.Trim.Length = 0, System.DBNull.Value, txtRemain.Text)
.Add("@ItmID", OleDbType.Integer).Value = IIf(txtID.Text.Trim.Length = 0, System.DBNull.Value, txtID.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(sqlstr, con)
With cmd.Parameters
.Add("@ItmName", OleDbType.VarWChar).Value = IIf(txtItem.Text.Trim.Length = 0, System.DBNull.Value, txtItem.Text)
.Add("@ItmPrice", OleDbType.Integer).Value = IIf(txtPrice.Text.Trim.Length = 0, System.DBNull.Value, txtPrice.Text)
.Add("@ItmIN", OleDbType.Integer).Value = IIf(txtIN.Text.Trim.Length = 0, System.DBNull.Value, txtIN.Text)
.Add("@ItmTotal", OleDbType.Integer).Value = IIf(txtTotal.Text.Trim.Length = 0, System.DBNull.Value, txtTotal.Text)
.Add("@ItmOut", OleDbType.Integer).Value = IIf(txtToOut.Text.Trim.Length = 0, System.DBNull.Value, txtToOut.Text)
.Add("@ItmRemain", OleDbType.Integer).Value = IIf(txtRemain.Text.Trim.Length = 0, System.DBNull.Value, txtRemain.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
بالفعل انا حاولت التعديل لمايناسبنى وما هو افضل للمشروع
هذا تعديلى من امس كما فى الصور
وعجبنى طريقة تفكيرك جدا
وسوف احمل مشروعك
لسببين حتى
اتعلم التعامل مع القواعد وافهم الاكواد
ثانيا حتى
افهم ما تقصده اكتر واوصل لوجهة نظرك
ساعود بعد قراءة وفهم الاكواد جيدا
اخى لدى استفسار بسيط
بالنسبة لحقل الصادر = الكمية المباعة
طيب الوارد = ايه؟؟؟؟؟؟

