منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] الاضافة المتعددة بوقت واحد لاكتر من جهاز - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] الاضافة المتعددة بوقت واحد لاكتر من جهاز (/showthread.php?tid=37418)



الاضافة المتعددة بوقت واحد لاكتر من جهاز - محمد اسماعيل - 08-01-21

السلام عليكم ورحمة الله وبركاتة 

احنا لو قمنا بالاضافة باستخدام سيكول سيرفر 2014 كقاعدة بيانات مرفوعة اونلاين  .

اولا عندنا اجراء مخزن واستدعاء الاجراء للاضافة باكتر من جهاز  .

كل شيء تمام المشكلة تحدث لما يكون فية اكتر من جهاز  شغالين  بنفس الوقت مع بعض مثلا في انشاء فاتورة بيع طبعا ممكن اكتر من سيسيتم شغال في نفس الوقت ..
يحدث خطاء sql confilict تابعت اكتر من منتدي بس لم اصل لحل . لان عندي مشكلة بجهاز فبجرب بجهاز واحد ياريت حد يضع حل مجرب للمشكلة لان ممكن السيستم يشتغل بعدد لامحدود من الاجهزة ممكن2 او 4 او 3 ...؟؟  
قمت بوضع مثال بسيط للشرح والتوضيح 
دة كود الاجراء المخزن 


كود :
USE [DATA_TRIALMULYIINSERT]
GO
/****** Object:  StoredProcedure [dbo].[insertooks]    Script Date: 1/8/2021 9:39:54 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER  PROCEDURE  [dbo].[inserTb]  
  @MULTIINSERT_CODE                    NVARCHAR(50)  = NULL   ,    
     @MULTIINSERT_NAME                 NVARCHAR(50)  = NULL   ,    
    @MULTIINSERT_DATE                 DATETIME      = NULL  
AS  
BEGIN  
SET NOCOUNT ON  
INSERT INTO MULTIINSERT_TB
     (                    
       MULTIINSERT_CODE,  
       MULTIINSERT_NAME,  
      MULTIINSERT_DATE
             
     )

VALUES
     (
       @MULTIINSERT_CODE  ,
       @MULTIINSERT_NAME ,
       @MULTIINSERT_DATE                
     )

END

دة كود الاضافة بالفورم .


كود :
Sub ADDDATA()

       Try
           Dim com As New SqlCommand()
           com.CommandType = CommandType.StoredProcedure
           com.CommandText = "inserTb"

                      com.Parameters.AddWithValue("@MULTIINSERT_CODE", SqlDbType.NVarChar).Value = TextBox1.Text
           com.Parameters.AddWithValue("@MULTIINSERT_NAME", SqlDbType.NVarChar).Value = TextBox2.Text
           com.Parameters.AddWithValue("@MULTIINSERT_DATE ", SqlDbType.Date).Value = DateTimePicker1.Value

           com.Connection = con
           con.Open()
           com.ExecuteNonQuery()
           con.Close()

           MsgBox("Record inserted successfully")
       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           con.Close()
           con.Dispose()
       End Try



RE: الاضافة المتعددة بوقت واحد لاكتر من جهاز - Ashref - 09-01-21

قد يكون الحل في هذه الطريقه
https://stackoverflow.com/questions/9842253/lock-table-while-inserting


RE: الاضافة المتعددة بوقت واحد لاكتر من جهاز - محمد اسماعيل - 09-01-21

(09-01-21, 12:44 AM)Ashref كتب : قد يكون الحل في هذه الطريقه
https://stackoverflow.com/questions/9842253/lock-table-while-inserting

كدة انا قفلت الجدول مش هقدر اعمل اضافة ولا استعلام ولا تعديل ولا اي شيء الا لما الاضافة تنتهي .

في طريقة شوفتها بس ما ضبط الاجراء المخزن معايا 

https://dba.stackexchange.com/questions/196008/avoid-sql-conflicts-when-inserting-data-at-same-time