منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكلة فى حفظ اكتر من صنفين عند حفظ الفاتورة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
مفيش ردود فى حل المشكلة دى
هل يمكن ترفع مثال بسيط وصغير وليس مثالك الاساسي ؟؟
اخي  العزيز  جرب  تستخدم  try 
واستعلم  عن رسالة الخطا راح يظهر  الخطا بدون مشاكل  
Try
هنا ذع الكود الخاص بك  ستجد المشكلة  اخي  العريم ان شاء الله  
 Catch ex As Exception

            MsgBox(ex.Message)

End Try
السلام عليكم 
مرفق مثال بمشكلة حفظ الفاتورة 
-المشكلة الاولى وهي ان فى حفظ الفاتورة واذا كانت عدد الاسطر اكثر من 3 اسطر فلا يتم حفظ الفاتور وصور المشكلة فى اول مشاركة 
وومكن حل هذه المشكلات الاخرى
-جمع الصنف فى سطر واحد اذا كان موجود من قبل فى الفاتورة وجمع كميتة فى سطر واحد.بمعنى اذا كان فى الفاتورة موجود هذا الصنف وجاء المشترى بهذا الصنف مرة اخى ليشترية قبل حفظ الفاتور عند كتابة كود هذا الصنف الموجود من قبل المطلوب ان لا يظهر فى سطر جديد وتتغير كميتة فقط 

 -ممكن خانة كمية الصنف فى الداتا جريد فيو تكون بقيمة 1 واذا كانت الكمية اكبر من واحد اضغط على f4 مثلا للذهاب الى خانة الكمية فى الدتا جريد فيو بعد كتابة الكود لتعديل الكمية الى الرقم الجديد غير 1 

- كتابة عدد اسطر الدتا جريد فيو لتظهر فى textbox2 اسفل الشاشة  الدتا جريد فيو

وسامحونى لكثرة طلبتى لاننى مبتدى 
ودا الكود كاملا 
PHP كود :
       If con.State ConnectionState.Open Then con.Close()
 
       Dim strInsert As String " Insert into tb1([Date],[SelMan],[total])values(@Date,@SelMan,@total)"

 
       cmd = New OleDb.OleDbCommand(strInsertcon)
 
       cmd.Parameters.Add(New OleDb.OleDbParameter("@Date"OleDb.OleDbType.VarChar)).Value TextBox1.Text
        cmd
.Parameters.Add(New OleDb.OleDbParameter("@SelMan"OleDb.OleDbType.VarChar)).Value SelMan.Text
        cmd
.Parameters.Add(New OleDb.OleDbParameter("@total"OleDb.OleDbType.VarChar)).Value SelMdataTextBox.Text

        con
.Open()

 
       cmd.ExecuteNonQuery()
 
       cmd = New OleDb.OleDbCommand("select max(id) from tb1"con)
 
       Dim dr As OleDb.OleDbDataReader cmd.ExecuteReader
        dr
.Read()
 
       'اضافة تفاصيل الفاتورة
        Dim ID_tb1 As Integer = dr(0)
        dr.Close()
        Dim code, quant As Integer

        Dim price, total As Double

        strInsert = "Insert into sell(code,ID_tb1,Name,quant,price,total)values(@code,@ID_tb1,@Name,@quant,@price,@total)"
        cmd = New OleDb.OleDbCommand(strInsert, con)

        For i As Integer = 0 To SellDataGridView.RowCount - 2
            code = SellDataGridView.Rows(i).Cells(0).Value
            Name = SellDataGridView.Rows(i).Cells(1).Value
            quant = SellDataGridView.Rows(i).Cells(2).Value
            price = SellDataGridView.Rows(i).Cells(3).Value
            total = SellDataGridView.Rows(i).Cells(4).Value

            cmd = New OleDbCommand(strInsert, con)

            cmd.Parameters.Add(New OleDb.OleDbParameter("@code", OleDb.OleDbType.Integer)).Value = code
            cmd.Parameters.Add(New OleDb.OleDbParameter("[@ID_tb1]", OleDb.OleDbType.Integer)).Value = ID_tb1
            cmd.Parameters.Add(New OleDb.OleDbParameter("[@Name]", OleDb.OleDbType.VarChar)).Value = Name
            cmd.Parameters.Add(New OleDb.OleDbParameter("[@quant]", OleDb.OleDbType.Integer)).Value = quant
            cmd.Parameters.Add(New OleDb.OleDbParameter("[@price]", OleDb.OleDbType.Currency)).Value = price
            cmd.Parameters.Add(New OleDb.OleDbParameter("[@total]", OleDb.OleDbType.Currency)).Value = total

            cmd.ExecuteNonQuery()
            SellDataGridView.Rows.RemoveAt(SellDataGridView.CurrentRow.Index)
        Next
        add_number()
        con.Close() 
مفيش اى ردود Confused
اخوانى الافاضل انا رفعت مثال ياريت لو اجد حل لمشكلاتى
والله انا تعبت ياريت حد متخصص يرد عليا ويحل المشكلة دى
السلام عليكم و رحمة الله و بركاته
الاخ الكريم ,
المشكلة من طريقتك في الحفظ و الحذف معاً....؟؟
مثالك هذا غير عملي .
بالنسبة لطريقة الحفظ استبدل الكود لديك بهذا الكود

PHP كود :
       Dim strInsert As String "Insert into tbl(code,name,Quant,Price,total)values(@code,@name,@Quant,@Price,@total)"

 
       If con.State ConnectionState.Open Then con.Close()
 
       cmd = New OleDbCommand(strInsertcon)
 
       con.Open()
 
       For Each Dgrow As DataGridViewRow In dgv.Rows
            cmd
.Parameters.Clear()
 
           If Not Dgrow.IsNewRow Then
                Dim Row 
As DataRow DirectCast(Dgrow.DataBoundItemDataRowView).Row
                If Row IsNot Nothing Then
                    cmd
.Parameters.AddWithValue("@code"Convert.ToInt32(Row("code")))
 
                   cmd.Parameters.AddWithValue("@name"Row("name"))
 
                   cmd.Parameters.AddWithValue("@Quant"Convert.ToInt32(Row("Quant")))
 
                   cmd.Parameters.AddWithValue("@Price"Convert.ToDecimal(Row("Price")))
 
                   cmd.Parameters.AddWithValue("@total"Convert.ToDecimal(Row("total")))

 
                   cmd.ExecuteNonQuery()

 
               End If
 
           End If
 
       Next
        con
.Close() 
بالنسبة لباقي الاسئلة , وفق طريقتك التي تعمل عليها ستجد صعوبة كبيرة في تنفيذ المطلوب..!
بدلاً من الاستعلام عن الكود داخل DataGridView استعلم عنه داخل مربع نص و في حال التطابق يتم اضافة السطر الى القريد , و تكون عندها لديك حالتين اما ان الصنف غير موجود فيضاف , او موجود فتعدل الكمية داخل القريد

الغريب انك تملئ القريد بداية اقلاع النموذج من نفس جدول الادخال و هذا اسلوب خاطئ.
المفروض ان تكون القريد فارغة لعمليات الادخال.
بالتوفيق
طيب اخى الكريم انا شوفت اكتر من برنامج بيشتغل من الدتا جريد فيو مباشرة مثل ما قمت ببه
(01-05-18, 04:31 AM)atef_020 كتب : [ -> ]طيب اخى الكريم انا شوفت اكتر من برنامج بيشتغل من الدتا جريد فيو مباشرة مثل ما قمت ببه

اخي الكريم اداة شبيكة الييانات تكون سلسلة من ناحية الحفظ اذا ربطتها بجدول واحد فقط عن طريق DataTable استعانة بـ DataAdapter و OledbCommandBuilder اما لو ربطتها باي طريقة اخرى فتحتاج التعامل مع كل مصدر او طريقة بما يناسبها.

شوف اللقطة هذي وتعرف قصدي.
الصفحات : 1 2 3