تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] دمج مصفوفتين بمصفوفة واحدة
#1
السلام عليكم ورحمة الله وبركاتة 


لدي مصفوفتين :

الاولي  بيانتها بالشكل دة داخل المصفوفة طبعا ممكن تزيد او تقل ملهاش عدد بيانات ا و عناصر محدد 
PHP كود :
STARTONE
man
spare 

الثانية بالشكل دة ممكن تزيد ملهاش عدد عناصر محدد ايضا ولكن الشكل الثابت التالي 
PHP كود :
"STARTONE":Present
"STARTONE":
"spare":Present
"spare":22h5zgcw 

المطلوب دمج المصفوفتين بواحدة حيث الاتي :


المصفوفة رقم واحد الاولي اساس العلاقة .

1- تتم العملية بالبحث بالاسم الموجد بالمصفوفة الاولي عنة في المصفوفة الثانية حيث يراعي اذا لم يكن موجد بالثانية بيانات يتم اضافتة كما هو بالمصفوفة التي تدمج الاثنين معا .

2- اذا تم البحث عن الاسم في المصفوفة الاولي ووجد بالثانية يتم النظر للاتي اذا كانت صفتة بعد العلامة :  Present  او فارغ او لة كود 2215zzcw  هذة الصفات  متغير. 

-يتم التعامل معة كالاتي  اذا كان احد الصفتين بالمصفوفة التانية  الموجود لة Present  او فارغ  يعتبر في كلتاهما فارغ بمعني يضاف للمصفوفة المدمجة باسمة فقط من المصفوفة الاولي.

- اذا كان  بعد البحث بصفتة الموجدة بالمصففة الثانية الموجود لة Present  او فارغ  او كود 2215zzcw  يضاف للمصفوفة المدمجة باسمة + الكود .

تصبح اخير البيانات داخل المصفوفة المدمجة :


  STARTONE    
   man
   spare : 22h5zgcw


دة شكل المصفوفة 
PHP كود :
Dim tmpLista As New List(Of String)
 
   Dim tmpListb As New List(Of String)
Dim tmpListc As New List(Of String

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

PHP كود :
 For Each value As String In tmpLista
            For Each x 
As String In tmpListb
                Dim a 
As String x.Remove(0x.IndexOf(":"))
 
               If x.Contains(valueAndAlso a <> Nothing AndAlso a <> "Present" Then
                    tmpListc
.Add(value ":" a)
 
                   'TextBox1.Text += value + ":" + a & vbNewLine

                Else
                    tmpListc.Add(value)
                    '
TextBox1.Text += value vbNewLine
                End 
If
 
           Next

        Next 
الرد }}}
تم الشكر بواسطة:
#2
 السلام عليكم ورحمة الله وبركاته 
اخي محمد ماكتبته هو لائحة وليس مصفوفة وهي قريبة جدا منها لكن يوجد بعض الفروقات بين خصائص اللائحة والمصفوفة 
منها مثلا المصفوفة يحدد طولها عند التعريف  او تسند القيم بدون تحديد الطول بينما اللائحة لانحدد طولها
 كما ان المصفوفة عندما نحذف احد قيمها يبقى مكانها محجوزا بينما اللائحة فلا وهناك اختلافات اخرى تابع هذا الرابط للتعرف اكثر
https://www.youtube.com/watch?v=dMgAg9pW...&index=146
المهم انا لم افهم ماتريد بالضبظ وبخاصة ان عناصر اللائحة الثانية تحتوي على ("") دبل كوتيشن
ناحية اخرى من ناحية تعدد الشروط حيث تختلف عبارة And عن AndAlso حيث الاولى تتحقق من كل الشروط تم تعمل ان كانت true بينما الثانية تتحقق من من الشروط تباعا وعند اول قيمة false تتوقف 
هذا السطر ايضا مالذي تريد منه
Dim a As String = x.Remove(0, x.IndexOf(":"))
ارجو المزيد من الايضاح
قمت بترتيب مااوردته مع تغيير السطر السابق الى اخذ القسم الاول 
لا اعلم ان كانت النتيجة هي المطلوبة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim tmpLista As New List(Of String)
       tmpLista.add("STARTONE")
       tmpLista.add("man")
       tmpLista.add("spare")
       Dim tmpListb As New List(Of String)

       tmpListb.Add("STARTONE:Present")
       tmpListb.Add("STARTONE:")
       tmpListb.Add("spare:Present")
       tmpListb.Add("spare:22h5zgcw")

       Dim tmpListc As New List(Of String)

       For Each value As String In tmpLista
           For Each x As String In tmpListb
               Dim a As String = x.Split(":").First ' هنا تم تغيير السطر الى جلب القسم الاول
               If x.Contains(value) And a <> Nothing And a <> "Present" Then
                   tmpListc.Add(value + ":" + a)
                   TextBox1.Text += value + ":" + a & vbNewLine

               Else
                   tmpListc.Add(value)
                   TextBox1.Text += value & vbNewLine
               End If
           Next

       Next
   End Sub
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: محمد اسماعيل
#3
(20-06-20, 05:13 PM)ابراهيم ايبو كتب :  السلام عليكم ورحمة الله وبركاته 
اخي محمد ماكتبته هو لائحة وليس مصفوفة وهي قريبة جدا منها لكن يوجد بعض الفروقات بين خصائص اللائحة والمصفوفة 
منها مثلا المصفوفة يحدد طولها عند التعريف  او تسند القيم بدون تحديد الطول بينما اللائحة لانحدد طولها
 كما ان المصفوفة عندما نحذف احد قيمها يبقى مكانها محجوزا بينما اللائحة فلا وهناك اختلافات اخرى تابع هذا الرابط للتعرف اكثر
https://www.youtube.com/watch?v=dMgAg9pW...&index=146
المهم انا لم افهم ماتريد بالضبظ وبخاصة ان عناصر اللائحة الثانية تحتوي على ("") دبل كوتيشن
ناحية اخرى من ناحية تعدد الشروط حيث تختلف عبارة And عن AndAlso حيث الاولى تتحقق من كل الشروط تم تعمل ان كانت true بينما الثانية تتحقق من من الشروط تباعا وعند اول قيمة false تتوقف 
هذا السطر ايضا مالذي تريد منه
Dim a As String = x.Remove(0, x.IndexOf(":"))
ارجو المزيد من الايضاح
قمت بترتيب مااوردته مع تغيير السطر السابق الى اخذ القسم الاول 
لا اعلم ان كانت النتيجة هي المطلوبة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim tmpLista As New List(Of String)
       tmpLista.add("STARTONE")
       tmpLista.add("man")
       tmpLista.add("spare")
       Dim tmpListb As New List(Of String)

       tmpListb.Add("STARTONE:Present")
       tmpListb.Add("STARTONE:")
       tmpListb.Add("spare:Present")
       tmpListb.Add("spare:22h5zgcw")

       Dim tmpListc As New List(Of String)

       For Each value As String In tmpLista
           For Each x As String In tmpListb
               Dim a As String = x.Split(":").First ' هنا تم تغيير السطر الى جلب القسم الاول
               If x.Contains(value) And a <> Nothing And a <> "Present" Then
                   tmpListc.Add(value + ":" + a)
                   TextBox1.Text += value + ":" + a & vbNewLine

               Else
                   tmpListc.Add(value)
                   TextBox1.Text += value & vbNewLine
               End If
           Next

       Next
   End Sub

بدايتا جزاكم الله خيرا عما قدمت 

- المثال صحيح الي وضعتة حضرتك من حيث البيانات .

- اسف علي خطأي بخصوص اللائحة بكتابتها مصفوفة .

- الكود دة  لغرض  Dim a As String = x.Remove(0, x.IndexOf(":"))   حذف الاسم واستخلاص الوصف    spare:Present

بخصوص السؤال انا لم افهم ماتريد بالضبظ وبخاصة ان عناصر اللائحة الثانية تحتوي على ("") دبل كوتيشن؟

ج : هيا لازم الائحة الثانية يكون فيها نفس الاسم من اللائحة الاولي داخل الكوتيشن مارك  لائحة 2 "spare"   لائحة 1 spare اما قصدي بالوصف فهو ياتي بعد الكوتيشن لكل اسم مشابهة spare:Present   الوصف هنا Present  او فارغ او كود .

البيانات بعد تجربة الكود الخاص بحضرتك ظهرت بالشكل دة 

كود :
STARTONE:STARTONE
STARTONE:STARTONE
STARTONE
STARTONE
man
man
man
man
spare
spare
spare:spare
spare:spare

والمفروض تكون كدة 

 STARTONE    
   man
   spare : 22h5zgcw
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#4
السلام عليكم اخي محمد
بالرغم من عدم فهمي لمت تريد تماما ولكن اليك الكود مع الانتباه بأن النتيجة ستكون بهذا الشكل لانه سيتحقق من العناصر كلها
كود :
STARTONE
man
spare:22h5zgcw
spare

وليس كما اسلفت انت 
كود :
STARTONE
man
spare:22h5zgcw
والكود اصبح هكذا
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim tmpLista As New List(Of String)
       tmpLista.add("STARTONE")
       tmpLista.add("man")
       tmpLista.add("spare")
       Dim tmpListb As New List(Of String)

       tmpListb.Add("STARTONE:Present")
       tmpListb.Add("STARTONE:")
       tmpListb.Add("spare:Present")
       tmpListb.Add("spare:22h5zgcw")

       Dim tmpListc As New List(Of String)
       Dim a As String = ""
       For Each valu As String In tmpLista
           For Each x As String In tmpListb
               a = x.Split(":").Last '   جلب القسم الاخير
               If x.Contains(valu) And a <> Nothing And a <> "Present" Then
                   tmpListc.Add(valu + ":" + a)
                   TextBox1.Text += valu + ":" + a & vbNewLine
               End If
           Next
           If a <> valu Then
               tmpListc.Add(valu)
               TextBox1.Text += valu & vbNewLine
           End If
       Next
   End Sub
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: محمد اسماعيل
#5
(20-06-20, 11:49 PM)ابراهيم ايبو كتب : السلام عليكم اخي محمد
بالرغم من عدم فهمي لمت تريد تماما ولكن اليك الكود مع الانتباه بأن النتيجة ستكون بهذا الشكل لانه سيتحقق من العناصر كلها
كود :
STARTONE
man
spare:22h5zgcw
spare

وليس كما اسلفت انت 
كود :
STARTONE
man
spare:22h5zgcw
والكود اصبح هكذا
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Dim tmpLista As New List(Of String)
       tmpLista.add("STARTONE")
       tmpLista.add("man")
       tmpLista.add("spare")
       Dim tmpListb As New List(Of String)

       tmpListb.Add("STARTONE:Present")
       tmpListb.Add("STARTONE:")
       tmpListb.Add("spare:Present")
       tmpListb.Add("spare:22h5zgcw")

       Dim tmpListc As New List(Of String)
       Dim a As String = ""
       For Each valu As String In tmpLista
           For Each x As String In tmpListb
               a = x.Split(":").Last '   جلب القسم الاخير
               If x.Contains(valu) And a <> Nothing And a <> "Present" Then
                   tmpListc.Add(valu + ":" + a)
                   TextBox1.Text += valu + ":" + a & vbNewLine
               End If
           Next
           If a <> valu Then
               tmpListc.Add(valu)
               TextBox1.Text += valu & vbNewLine
           End If
       Next
   End Sub


بشكر حضرتك علي المتابعة 

- بخصوص شرح المطلوب هوا معقد شوية لانة مش دة كل شيء البيانات بتيجي من اكتر من ملف  وكل بيان لة شكل بخصوص كتابتة للاسم مختلف بس لازم يكون موجود الاسم.

- وانا صراحة اول مرة يتطلب مني تجميع بيانات فيها كمية الطلبات دية بس انا عشان أسهل الطلب بالموقع هنا  وضعت وصف بسيط للجزء الي بيظهر فية خطأ معايا.

- بالنسبة للنتيجة الاخير جيدة جدا اقدر احذف الي مش محتاجة من اللائحة الاخير التجميعية . 

وجزاكم الله خيرا عما قدمت .
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو
#6
وجزاك الله كل الخير ووفقك في مسعاك
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: محمد اسماعيل


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تعديل عدة سجلات مرة واحدة أحمد فتح الرحمن 2 366 06-06-24, 10:01 PM
آخر رد: أحمد فتح الرحمن
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 691 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  [VB.NET] مطلوب دمج جملتين لتحديث قاعدة بيانات فى جملة واحدة AmeenRashed 1 529 18-11-23, 01:32 AM
آخر رد: sniper2030
  استفسار عام بخصوص فتح اكثر من اتصال على قاعدة بيانات واحدة assuhimi 0 627 15-09-23, 04:54 PM
آخر رد: assuhimi
  حذف المسافات الزائدة في الداتا جريد لعدة سجلات دفعة واحدة yosif 4 830 09-04-23, 06:41 PM
آخر رد: Taha Okla
  طباعة بيانات التقرير دفعة واحدة Tajaldeen 1 667 27-01-23, 10:03 PM
آخر رد: h2551996
  مسح جميع أدوات النص دفعة واحدة sads 8 4,179 29-10-22, 04:04 PM
آخر رد: خالد العصاوي
  [سؤال] دمج سجلين من جدول فى خلية واحدة داخل الجريد dr.programming 2 845 09-09-22, 09:55 PM
آخر رد: حسن الجلب
  تشغيل البرنامج ككتلة واحدة mohamedassim 5 1,322 10-08-22, 11:26 PM
آخر رد: yassoo1985
  هل استطيع اضافة عدد 2 من السوتش في شبكة واحدة بسام محمدغانم 2 1,042 03-06-22, 04:49 PM
آخر رد: بسام محمدغانم

التنقل السريع :


يقوم بقرائة الموضوع: