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

بعد البحث لا أستطيع التعديل على نفس البيانات المطلوبة

بدأه العنزي252 في 18 فبراير 2012 · 6 رد · 569 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

يا شباب مشكلتي في البرنامج عندما أبحث مثلاُ عن رقم الفاتورة لا أستطيع التعديل عليها

فمثلاً قمت بالبحث عن فاتور رقم 300 لتعديل عليها او حذفها لا يقبل التعديل على نفس الفاتورة أو حتى حذفها

وش الحل ؟

WindowsApplication1.rar

تم تعديل هذه المشاركة بواسطة العنزي252 في 18 فبراير 2012 في 18:33

#2

السلام عليكم ..

  1. طريقة الــ TableAdapter مع الــ DataSet تتطلب وجود مفتاح رئيسي للجدول حتى تعمل عملية الحذف ..
  2. افتح قاعدة البيانات بالاكسس , ثم الجدول invoice و اجعل الحقل invoiceno مفتاح رئيسي .. ثم حفظ .. إغلاق ..
  3. افتح الــ DataSet ثم نقرة يمينية على الــ invoiceTable ثم configure ثم نضغط على الزر Advanced Option نتأكد انه تم تفعيل الخيار Generate Insert , Update , Delete Statments (افتراضيا مفعل .. لكن للتأكد) ..Next .. Next ثم Finish ..
  4. نقرة يمينية على الــ Solution ثم Clean .. ثم تشغيل المشروع ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

نفس المشكلة .....

عندما أقوم بعمل Requir لا يقبل التعديل أو حتى الحذف ؟

كود الاستعلام ::: من المشروع الذي أعمل عليه .:::

SELECT     Recept_No, Recept_date, Account_No, Customer_Name, Branch_Name, Collector_Name, Amount, C_Flq
FROM         ReceptTBL
WHERE     (Recept_No = ?) AND (Branch_Name = ?)

كود زر الاستعلام

   Try
            Me.ReceptTBLTableAdapter.FillBy(Me.FawazgDataSet.ReceptTBL, New System.Nullable(Of Integer)(CType(Recept_NoToolStripTextBox.Text, Integer)), Branch_NameToolStripTextBox.Text)
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try

post-249100-069507500 1329715586_thumb.g

المرفقات
erorrrr.GIF

تم تعديل هذه المشاركة بواسطة العنزي252 في 20 فبراير 2012 في 08:28

#4

السلام عليكم ..

  1. اعتقد أنه أيضا الجدول ReceptTBL ليس فيه مفتاح رئيسي ..
  2. إذا لم تحل المشكلة , ممكن ترفق لنا الكود ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

استخدمت كود آخر ولكن لازالت المشكله

أرفق لك المشروع بالأكواد

كود الحفظ بعد التعديل :

 Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim SavInto As New OleDb.OleDbCommand
        Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
        SavInto.Connection = Conn
        SavInto.CommandType = CommandType.Text
        SavInto.CommandText = "UPDATE invoice SET invoice_no = '" & Trim(txt2.Text) & "' , invoice_date = '" & Trim(txt3.Text) & "' , invoice_amount = '" & Trim(txt4.Text) & "' , sales_man = '" & Trim(txt5.Text) & "'  WHERE id ='" & txt1.Text & "'"
        Conn.Open()
        'SavInto.ExecuteNonQuery()
        DataSet1.Clear()
        adapter2.Fill(DataSet1, "invoice")
        Conn.Close()

        MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")
        cls_txt()
        DataSet1.Clear()
    End Sub

كود الحذف :::

 Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        If MsgBox("هل تريد حذف السجل الحالي", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
            Exit Sub
        End If
        Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
        Dim SavInto As New OleDb.OleDbCommand
        SavInto.Connection = Conn
        SavInto.CommandType = CommandType.Text
        SavInto.CommandText = "DELETE FROM invoice WHERE id ='" & Trim(txt1.Text) & "'"
        Conn.Open()
        SavInto.ExecuteNonQuery()
        DataSet1.Clear()
        adapter2.Fill(DataSet1, "invoice")
        Conn.Close()
        cls_txt()

الملف ::::::::::::::::

المطلووووووب.rar

#6

السلام عليكم ..

  1. نفس الملاحظة السابقة ... افتح الحقل قاعدة البيانات و حدد الحقل id و اجعله مفتاح رئيسي للجدول .. بتحديد الحقل و الضفظ على رمز المفتاح في شريط الأدوات ثم حفظ ... ثم تكرار نفس الخطوات في مشاركتي الأولى كي يتم نقل التعديلات من الجدول إلى الكود الذي تولده الـ DataSet
  2. الحقل id هو ترقيم تلقائي و بالتالي لا نستخدم معه علامة التنصيص ..
  3. كود الــ txt1.DataBindings.Add إذا تم وضعه داخل الزر , فإن النقر مرة ثانيه عليه يسبب خطأ , لأن ربط للخاصية الواحدة يتم تكراره .. و تمت معالجة الموضوع ..
  4. إليك كود الــ Form2 بعد التعديل :
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Form2
    
    	Public Sub cls_txt()
        	txt1.Enabled = False
        	txt2.Enabled = False
        	txt3.Enabled = False
        	txt4.Enabled = False
        	txt5.Enabled = False
        	txt1.Text = ""
        	txt2.Text = ""
        	txt3.Text = ""
        	txt4.Text = ""
        	txt5.Text = ""
    	End Sub
    	Public Sub open_txt()
        	txt1.Enabled = True
        	txt2.Enabled = True
        	txt3.Enabled = True
        	txt4.Enabled = True
        	txt5.Enabled = True
    
    	End Sub
    
    	Dim ConStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\try_new.accdb"
    	Dim cs As New OleDbConnection(ConStr)
    	Dim Conn As New OleDbConnection(ConStr)
    	Dim DataSet1 As New DataSet
    	Dim ds As New DataSet
    	Dim SQLstr As String
    	Dim m As String
    
    	Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
    
        	Dim DataAdapter5 As New OleDbDataAdapter("Select * from invoice", cs)
        	Dim DS6 As New DataSet
        	DS6.Clear()
        	DataAdapter5.Fill(DS6, "invoice")
        	ComboBox1.DataSource = DS6.Tables(0).DefaultView
        	ComboBox1.DisplayMember = "invoice_no"
        	ComboBox1.ValueMember = "invoice_no"
        	ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        	ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
        	'=========================
        	Dim DataAdapter4 As New OleDbDataAdapter("Select * from sales_man", cs)
        	Dim DS5 As New DataSet
        	DS5.Clear()
        	DataAdapter4.Fill(DS5, "sales_man")
        	txt5.DataSource = DS5.Tables(0).DefaultView
        	txt5.DisplayMember = "sales_man"
        	txt5.ValueMember = "sales_man"
        	txt5.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        	txt5.AutoCompleteSource = AutoCompleteSource.ListItems
    
        	'===========================================
        	cls_txt()
    	End Sub
    	Dim isFirstTime As Boolean = True
    	Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    
        	SQLstr = "SELECT * FROM invoice WHERE invoice_no LIKE '" & ComboBox1.Text & "'"
        	open_txt()
        	Conn.Open()
        	Dim DataAdapter1 As New OleDbDataAdapter(SQLstr, Conn)
        	DataAdapter1.Fill(DataSet1, "invoice")
        	Conn.Close()
    
        	If isFirstTime Then
            	txt1.DataBindings.Add("Text", DataSet1, "invoice.id")
            	txt2.DataBindings.Add("Text", DataSet1, "invoice.invoice_no")
            	txt3.DataBindings.Add("Text", DataSet1, "invoice.invoice_date")
            	txt4.DataBindings.Add("Text", DataSet1, "invoice.invoice_amount")
            	txt5.DataBindings.Add("Text", DataSet1, "invoice.sales_man")
            	isFirstTime = False
    
        	End If
    	End Sub
    
    	Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        	Dim SavInto As New OleDb.OleDbCommand
        	Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
        	SavInto.Connection = Conn
        	SavInto.CommandType = CommandType.Text
        	SavInto.CommandText = "UPDATE invoice SET invoice_no = '" & Trim(txt2.Text) & "' , invoice_date = '" & Trim(txt3.Text) & "' , invoice_amount = '" & Trim(txt4.Text) & "' , sales_man = '" & Trim(txt5.Text) & "'  WHERE id =" & txt1.Text & ""
        	Conn.Open()
        	SavInto.ExecuteNonQuery()
        	'DataSet1.Clear()
        	'adapter2.Fill(DataSet1, "invoice")
        	Conn.Close()
    
        	MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")
        	cls_txt()
        	'DataSet1.Clear()
    	End Sub
    
    	Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
        	If MsgBox("هل تريد حذف السجل الحالي", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
            	Exit Sub
        	End If
        	Dim adapter2 As New OleDbDataAdapter(SQLstr, Conn)
        	Dim SavInto As New OleDb.OleDbCommand
        	SavInto.Connection = Conn
        	SavInto.CommandType = CommandType.Text
        	SavInto.CommandText = "DELETE FROM invoice WHERE id =" & Trim(txt1.Text) & ""
        	Conn.Open()
        	SavInto.ExecuteNonQuery()
        	DataSet1.Clear()
        	adapter2.Fill(DataSet1, "invoice")
        	Conn.Close()
        	cls_txt()
    	End Sub
    
    	Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
        	Me.Close()
        	Form1.Show()
    	End Sub
    End Class

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

الله يعطيك العافيه

اتعبناك معنا يا مال العافيه

كفيت وفيت ....

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…