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

نسخة كاملة : أستفسـار نسخ جدول لجدول
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السـلام عليكم ورحمة الله وبركاته 

عندي جدول Tabel1 يتم تخزين البيانات داخله  ويوجد به  شـرطين  لبعض الحقول 

عندي جدول أخر Tabel 2  نفس حقول Tabel1  بالضبط 

محتاج طريقه تبحث في كل بيانات الجدول رقم (1) في حال تحقق الشـرطين أنقل جميع السجلات التي تم التحقق من شرطها إلى جدول (2)
وقم بحذفها من جدول (1)


فماهي الطريقه الصحيحه والسليمه للقيام بذالك ..!!

دمتم بود..
مرحبا اخى

اعتقد بدلا من من عمل جدول آخر ان تعمل عمود (نعم/لا) تخصصه لوضع علامه True وكانك نقلته
بحيث في الاستلام تضع في الاعتبار هذا العمود
شكراً أبو نوره 
 الجدول عليه عمليات وهو يبحث بكل الجدول عن ثلاث حالات  الحاله الرابعه لا أحتاجها ومعناتها منتهيه  
نعم - لا 
لا- نعم 
نعم - نعم 
لا - لا 

محتاج أجعل نعم - نعم في جدول مستقل 
وسلامتك
السـلام عليكم ورحمة الله وبركاته
الأخ/ طلال تحية خاصة ...
أنا من رأي أبو نورة في أن تكتفي بجدول واحد وتنشأ كيوري أو استعلام بدل الجدول الثاني وتضع عليه شرط ان يظهر الأعمدة التي تحتوي على الشرط المطلوب فقط ..
وكنت أتمنى لو وضعت مرفق لجداولك.. وشكرا
ارفق تركيبه الجدول
id - int 
Code-Nvarchar
Stutes1=Bit
Stutes2=Bit

تركيبه شبيهه للجدول code - id  لا تتكرر 

مشكلتي يا أخوان هي الأستعلام من جدول واحد وهذا الجدول فيه ضغط بيانات  بشكل كبير 
أنا طبقت الطريقه هاذي عشـان أبعد عن بطئ التعامل مع البيانات

(20-09-17, 11:14 AM)عبقرينو كتب : [ -> ]السـلام عليكم ورحمة الله وبركاته
الأخ/ طلال تحية خاصة ...
أنا من رأي أبو نورة في أن تكتفي بجدول واحد وتنشأ كيوري أو استعلام بدل الجدول الثاني وتضع عليه شرط ان يظهر الأعمدة التي تحتوي على الشرط المطلوب فقط ..
وكنت أتمنى لو وضعت مرفق لجداولك.. وشكرا

صعب جداً تتعامل مع جدول كبيـر وفيه ضغط بيانات عندما تحاول أن تصفي جدول حسب الشـرط معنـاته سيبحث من أول سجل إلى أخر سجل 
وهذا مرهق لنظام وسيصاب بعد فتره ببطئ في جلب البيانات 

هي أسلم حل هو أن أصنع جدول مثيل للجدول الأساسي بحيث أجعله مثل الأرشيف وبناء على الأستعلامات أوزعها بين الجداول بين الشـروط القائمه والشـروط المنتهيه 
وبكذا هربت بالجدول الأساسي عن البطئ لكونه هو المسؤل عن الصفحه
مرحبا اخى

في برامج استخدمت معها جدول في الوف الاسطر ولم الاحظ البطئ او الضغط الذي تتحدث عنه
فاسلوب محرك قاعدة البيانات لا يستخدم For Next مثل البرمجه العاديه، ولكن له طرقه باحضار الاسطر المستعلم عنها مهما كان العدد، بالاضافه لميزه الفهرسه في قاعدة البيانات التي تسرع الاستعلام،

ضع مشروعك في المرفقات
السلام عليكم و رحمة الله و بركاته
اخي الكريم , اذا كنت تتعامل مع SQL Server
فالافضل عمل اجراء مخزن يقوم بعملية النقل للصفوف التي تريدها وفق الشرط المحدد من الجدول الاول الى الجدول الثاني.
ثم تقوم بعملية الحذف للصفوف في الجدول الاول وفق نفس الشرط .
ثم يمكنك استدعاء الاجراء من داخل برنامجك .
العملية على السيرفر تجري بسرعة ويسر.

شكل الاجراء:
PHP كود :
Create proc TransferData

    
As

    
INSERT Into Tbl2
                            SELECT 
*
                             
 FROM Tbl1
                              Where Stutes1
='True' And Stutes2='True'
    
Delete From Tbl1
                              Where Stutes1
='True' And Stutes2='True' 

اما استدعاء الاجراء يمكنك تخصيص دالة تقوم بالوظيفة مثل هذه الدالة مع تغيير ما يلزم
PHP كود :
   Public Sub ExcuteCommand(Stored_Prosedure As String)
 
       Dim SqlCmd As New SqlCommand
        SqlCmd
.CommandType CommandType.StoredProcedure
        SqlCmd
.CommandText Stored_Prosedure
        SqlCmd
.Connection SqlCon

        SqlCmd
.ExecuteNonQuery()
 
   End Sub 
اما اذا كنت تنوي النقل وفق شروط محددة (تقوم بتحديدها في قلب البرنامج) يمكنك تغيير الاجراء السابق ليصبح معتمداً على البارمترات , كما يلي
PHP كود :
Create proc TransferData
 
@Stutes1 Bit
,@Stutes2 Bit

    
As

    
INSERT Into Tbl2
                            SELECT 
*
                             
 FROM Tbl1
                              Where Stutes1
=@Stutes1 And Stutes2=@Stutes2
    Delete From Tbl1
                              Where Stutes1
=@Stutes2 And Stutes2=@Stutes2 
وشكل الدالة المسؤولة عن الاستدعاء كما يلي :
PHP كود :
       Public Sub ExcuteCommand(Stored_Prosedure As Stringparams As List(Of SqlParameter))
 
           Dim SqlCmd As New SqlCommand
            SqlCmd
.CommandType CommandType.StoredProcedure
            SqlCmd
.CommandText Stored_Prosedure
            SqlCmd
.Connection SqlCon

            If Not params Is Nothing Then
                For Each Param 
As SqlParameter In params
                    SqlCmd
.Parameters.Add(Param)
 
               Next
            End 
If
 
           SqlCmd.ExecuteNonQuery()
 
       End Sub 

الدالتان السابقتان عامتان يمكنك استدعائهم مع اي اجراء مخزن , فقط غير ما يلزم
مثال للاستدعاء:
PHP كود :
       Public Sub TransferData()
 
           Dim parms As New List(Of SqlParameter)
 
           parms.Add(New SqlParameter("@Stutes1"SqlDbType.BitWith {.Value True})
 
           parms.Add(New SqlParameter("@Stutes2"SqlDbType.BitWith {.Value True})

 
           SqlCon.Open
            Dal
.ExcuteCommand("TransferData"parms)
 
           SqlCon.Close
        End Sub 
بالتوفيق .
جزاكم الله خيـر