السـلام عليكم ورحمة الله وبركاته
عندي جدول 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 String, params 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.Bit) With {.Value = True})
parms.Add(New SqlParameter("@Stutes2", SqlDbType.Bit) With {.Value = True})
SqlCon.Open
Dal.ExcuteCommand("TransferData", parms)
SqlCon.Close
End Sub
بالتوفيق .