اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

دمج اكثر من عمود فى جدول فى عمود واحد فى جدول جديد اسفل بعض


Abo-yousef
إذهب إلى أفضل إجابة Solved by متقاعد,

الردود الموصى بها

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

محترفى موقعنا الجميل اريد من حضراتكم

دمج اكثر من عمود فى جدول فى عمود واحد فى جدول جديد اسفل بعض، يعني لدى جدول به عدة اعمدة كالاسم وصنف1 وصنف2 وصنف3 والاجمالى اريد انشاء جدول جديد يعمل على دمج قيمة  الصنف الاول ثم اسفلها قيم الصنف الثانى ثم اسفلها قيم الصنف الثالث لعمل دالة الانحراف المعيارى لكل هذه القيم

رابط هذا التعليق
شارك

3 ساعات مضت, 01142177047 said:

اريد انشاء جدول جديد يعمل على دمج قيمة  الصنف الاول ثم اسفلها قيم الصنف الثانى ثم اسفلها قيم الصنف الثالث

الامر مبهم قليلا

اذا كان المطلوب كما في الصور المرفقة فيمكن عمل كود بحلقتين دوارة

الحلقة الاولى تمر على سجلات الجدول والحلقة الاخرى تمر على الحقول لكل سجل

ثم تنشئ سجل في الجدول الجديد بحيث تضع الحقول متتابعة في حقل واحد لكل صنف

الصور مرفقة

 

دوارة1.png

دوارة2.png

رابط هذا التعليق
شارك

لا اريد العمود b اسفله العمود c اسفله العمود d بدون اسم العمود

2 ساعات مضت, مبرمج سابق said:

الامر مبهم قليلا

اذا كان المطلوب كما في الصور المرفقة فيمكن عمل كود بحلقتين دوارة

الحلقة الاولى تمر على سجلات الجدول والحلقة الاخرى تمر على الحقول لكل سجل

ثم تنشئ سجل في الجدول الجديد بحيث تضع الحقول متتابعة في حقل واحد لكل صنف

الصور مرفقة

 

دوارة1.png

دوارة2.png

لا اريد العمود b اسفله العمود c اسفله العمود d بدون اسم العمود

رابط هذا التعليق
شارك

8 دقائق مضت, 01142177047 said:

لا اريد العمود b اسفله العمود c اسفله العمود d بدون اسم العمود

ممكن ذلك

    Dim rst As DAO.Recordset
    Dim rs As DAO.Recordset
    Dim fld As Field
    Dim a As Integer

    Set rst = CurrentDb.OpenRecordset("tbl_1")
    Set rs = CurrentDb.OpenRecordset("tbl_2")
    For a = 1 To rst.RecordCount
    For Each fld In rst.Fields
    If fld.Name <> "id" And fld.Name <> "item" Then
    rs.AddNew
      rs!a = fld.Value
'      rs!Item = rst!Item
    rs.Update
    End If
    Next fld
    rst.MoveNext
    Next a
    rst.Close: Set rst = Nothing
    rs.Close: Set rs = Nothing

عملته بشكل سريع وليس لدي وقت للمراجعة

مرفق مثال صغير

تحياتي

Database151.accdb

  • Thanks 1
رابط هذا التعليق
شارك

8 دقائق مضت, مبرمج سابق said:

ممكن ذلك

    Dim rst As DAO.Recordset
    Dim rs As DAO.Recordset
    Dim fld As Field
    Dim a As Integer

    Set rst = CurrentDb.OpenRecordset("tbl_1")
    Set rs = CurrentDb.OpenRecordset("tbl_2")
    For a = 1 To rst.RecordCount
    For Each fld In rst.Fields
    If fld.Name <> "id" And fld.Name <> "item" Then
    rs.AddNew
      rs!a = fld.Value
'      rs!Item = rst!Item
    rs.Update
    End If
    Next fld
    rst.MoveNext
    Next a
    rst.Close: Set rst = Nothing
    rs.Close: Set rs = Nothing

عملته بشكل سريع وليس لدي وقت للمراجعة

مرفق مثال صغير

تحياتي

Database151.accdb 424 kB · 2 downloads

بارك الله فيك وجزاك الله خير 

رابط هذا التعليق
شارك

37 دقائق مضت, 01142177047 said:

بارك الله فيك وجزاك الله خير 

اسف اخى هذه هي الفكرة التى اريدها ولكنها لاتعمل على الداتا بيس الخاصة بي سارفق لك نسخة من الداتا بيس الخاصة بي

Database51.rar

1 دقيقه مضت, 01142177047 said:

اسف اخى هذه هي الفكرة التى اريدها ولكنها لاتعمل على الداتا بيس الخاصة بي سارفق لك نسخة من الداتا بيس الخاصة بي

Database51.rar 101.76 kB · 0 downloads

الاعمدة المطلوب دمجها هى 28 و280 و281

رابط هذا التعليق
شارك

51 دقائق مضت, 01142177047 said:

اسف اخى هذه هي الفكرة التى اريدها ولكنها لاتعمل على الداتا بيس الخاصة بي سارفق لك نسخة من الداتا بيس الخاصة بي

استبدل الكود في زر الامر بالتالي

    Dim rst As DAO.Recordset
    Dim rs As DAO.Recordset
    Dim fld As Field
    Dim a As Integer

    Set rst = CurrentDb.OpenRecordset("the main")
    Set rs = CurrentDb.OpenRecordset("sd")
    For a = 1 To rst.RecordCount
    For Each fld In rst.Fields
    If fld.Name = "28" Or fld.Name = "280" Or fld.Name = "281" Then
    rs.AddNew
      rs!a = fld.Value
'      rs!id = rst!no
rs.Update
    End If
    Next fld
    rst.MoveNext
    Next a
    rst.Close: Set rst = Nothing
    rs.Close: Set rs = Nothing

ولو تضع عمود id تنقل له الرقم no للمحافظة على التسلسل

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

تحياتي

  • Like 2
رابط هذا التعليق
شارك

  • أفضل إجابة
24 دقائق مضت, 01142177047 said:

كيف افعل ذلك 

 

54 دقائق مضت, مبرمج سابق said:

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

ملاحظة تجنب تسمية الاحقول بالارقم

الملف مرفق

Database51.accdb

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

14 دقائق مضت, مبرمج سابق said:

 

ملاحظة تجنب تسمية الاحقول بالارقم

الملف مرفق

Database51.accdb 464 kB · 1 download

بارك الله فيك أخي الحبيب جزيت خيرا 

تعبتك كتير معايا هذا هو المطلوب 

  • Like 1
رابط هذا التعليق
شارك

7 دقائق مضت, 01142177047 said:

بارك الله فيك أخي الحبيب جزيت خيرا 

تعبتك كتير معايا هذا هو المطلوب

ولك مثل ذلك بعون الله

لا يوجد تعب والامر هين اخي الكريم

تمنياتي لك بالتوفيق وعيدكم مبارك

  • Like 1
رابط هذا التعليق
شارك

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

ممكن ان نصل للنتيجة بدون الحاجة الى اكواد وبعدة طرق

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

وقبل ذلك من المعلوم ان لدينا انواع متعددة من الاستعلامات ومنها استعلام توحيد

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

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

SELECT [The Main].[no], [The Main].dx
FROM [The Main]
union all
SELECT [The Main].[no], [The Main].dd
FROM [The Main]
UNION ALL SELECT [The Main].[no], [The Main].dh
FROM [The Main];

والخطوة التالي نعمل استعلام الحاق مصدر بياناته استعلام التوحيد

INSERT INTO sd ( id, a )
SELECT q_1.[no], q_1.dx
FROM q_1
ORDER BY q_1.[no];

ونحصل على نفس نتيجة استخدام الاكواد

تحياتي

  • Like 3
رابط هذا التعليق
شارك

42 دقائق مضت, مبرمج سابق said:

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

ممكن ان نصل للنتيجة بدون الحاجة الى اكواد وبعدة طرق

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

وقبل ذلك من المعلوم ان لدينا انواع متعددة من الاستعلامات ومنها استعلام توحيد

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

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

SELECT [The Main].[no], [The Main].dx
FROM [The Main]
union all
SELECT [The Main].[no], [The Main].dd
FROM [The Main]
UNION ALL SELECT [The Main].[no], [The Main].dh
FROM [The Main];

والخطوة التالي نعمل استعلام الحاق مصدر بياناته استعلام التوحيد

INSERT INTO sd ( id, a )
SELECT q_1.[no], q_1.dx
FROM q_1
ORDER BY q_1.[no];

ونحصل على نفس نتيجة استخدام الاكواد

تحياتي

اولا اشكرك جدا لاهتمامك

ثانيا انا جربت طريقة إستعلام التوحيد ولكن يحدث معى اخطاء ولم استطع الوصول لحل 

وجربت طريقة الاستعلام التوحيد من قبل بس كتابة الكود كان بطريقه ثانيه ولم استطع ايضا الوصول لحل، انا خارج المنزل عند العودة سوف ارسال لك الطريقه التى كنت استخدمها في الاستعلام 

  • Like 1
رابط هذا التعليق
شارك

6 دقائق مضت, 01142177047 said:

اولا اشكرك جدا لاهتمامك

الشكر لله اخي

ليس من الضروري تجربتها طالما انت وصلت للحل بالطريقة السابقة

واشارتي لاستعلام التوحيد فقط لغرض الحديث عن حلول اخرى واثراء للموضوع فقط

تحياتي

  • Like 1
رابط هذا التعليق
شارك

9 ساعات مضت, مبرمج سابق said:

ممكن ذلك

مبدع مشرفنا الكريم @مبرمج سابق

هل يمكن تطوير الكود بحيث لا يكرر البيانات.. وإنما ينقل الجديد فقط..؟:fff:

وهل بالإمكان أن يقبل النص.. لأني فيما رأيت لا يقبل سوى الرقم..؟

تم تعديل بواسطه حامل المسك
  • Like 1
رابط هذا التعليق
شارك

39 دقائق مضت, حامل المسك said:

هل يمكن تطوير الكود بحيث لا يكرر البيانات.. وإنما ينقل الجديد فقط..؟

يا هلا دكتورنا العزيز

في البرمجة كل شي ممكن ولكن هنا نتحث عن حالة خاصة

ربما الامر الغير ممكن ان نحصل على نتيجة اذا لم تتوفر المعطيات المطلوبة

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

و لو تلاحظ اني تحدثت عن طريقتين بالكود وعدم التكرار يحتاج الى تعديل

وايضا تحدثت عن طريقة اخرى تحقق النتيجة باستعلام توحيد وهذه الطريق لا نحتاج الى تعديل فقط ازالة عبارة all

اي تعديل union all في السطر الثالث والسطر السادس الى union وهنا سوف يقوم بجمع البيانات بدون تكرار

39 دقائق مضت, حامل المسك said:

مشرفنا الكريم

انا عضو  ولست مشرف صحيح كنت في السابق احمل لقب خبير ولكن هذا امر اخر

و الحديث في الماضي نقصان عقل ونحن ابناء اليوم

تحياتي وتقديري اخي الكريم 🌹

  • Like 1
رابط هذا التعليق
شارك

16 ساعات مضت, مبرمج سابق said:

 

    Dim rst As DAO.Recordset
    Dim rs As DAO.Recordset
    Dim fld As Field
    Dim a As Integer

    Set rst = CurrentDb.OpenRecordset("the main")
    Set rs = CurrentDb.OpenRecordset("sd")
    For a = 1 To rst.RecordCount
    For Each fld In rst.Fields
    If fld.Name = "28" Or fld.Name = "280" Or fld.Name = "281" Then
    rs.AddNew
      rs!a = fld.Value
'      rs!id = rst!no
rs.Update
    End If
    Next fld
    rst.MoveNext
    Next a
    rst.Close: Set rst = Nothing
    rs.Close: Set rs = Nothing

 

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

واريد ان اعدل على هذا الكود بااضافة زر تصفية يعني انا قمت بااضافة عمود اخر بااسم s عند اختيار منه 400 يظهر البيانات الخاصة ب400 فقط

مرفق نسخة من قاعدة البيانات 

Database51-1.rar

رابط هذا التعليق
شارك

2 ساعات مضت, 01142177047 said:

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

واريد ان اعدل على هذا الكود بااضافة زر تصفية يعني انا قمت بااضافة عمود اخر بااسم s عند اختيار منه 400 يظهر البيانات الخاصة ب400 فقط

جرب الان

 

Database511.accdb

رابط هذا التعليق
شارك

تسلم بارك الله فيك 

ولكن اريد تعديل بسيط فى حالة تغير القيمة من 400الى 500 اريد ان يقوم بمسح الجدول السابق ولا يضع القيم اسفل بعضها ويضع قيمة الذى اختاره فقط 

وشكراً جزيلا لك 

رابط هذا التعليق
شارك

  

في 13‏/7‏/2022 at 00:39, مبرمج سابق said:

يا هلا دكتورنا العزيز

هذه خلفها سر ..

في 13‏/7‏/2022 at 00:39, مبرمج سابق said:

في البرمجة كل شي ممكن ولكن هنا نتحث عن حالة خاصة

كم نحتاج مثل هذه العبارة في حياتنا .. كل شيء ممكن ما لم يتعارض مع أمر رباني أو قدر كوني..

بالفعل مارست هذا الأمر وتعملت من هذا المنتدى أشياء كنت أراها مستحيلة.. وأصبحت واقعا ملموسا..

في 13‏/7‏/2022 at 00:39, مبرمج سابق said:

و لو تلاحظ اني تحدثت عن طريقتين بالكود وعدم التكرار يحتاج الى تعديل

وايضا تحدثت عن طريقة اخرى تحقق النتيجة باستعلام توحيد وهذه الطريق لا نحتاج الى تعديل فقط ازالة عبارة all

اي تعديل union all في السطر الثالث والسطر السادس الى union وهنا سوف يقوم بجمع البيانات بدون تكرار

وهذا إبداع..

 

في 13‏/7‏/2022 at 00:39, مبرمج سابق said:

انا عضو  ولست مشرف صحيح كنت في السابق احمل لقب خبير ولكن هذا امر اخر

لك ولهذا المنتدى علينا فضائل... وستظلون أساتذة لنا نذكركم بخير ما حيينا..

 

23 ساعات مضت, مبرمج سابق said:

الملف مرفق

مبدع حقيقة..

كتب الله أجرك وأجر من طرح الموضوع وكل من شارك وقرأ..

تم تعديل بواسطه حامل المسك
  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information