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

تحويل عمود إلى صفوف بشرط


Omar_Kreem

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

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

حاولت توزيع عمود إلى عدة صفوف بشرط لكن لم أستطع ذلك ..

هل يمكن توزيع بيانات صف  إلى عدة أعمدة بشرط تشابه الجهات كما فى الصورة؟

بدون استخدام (crosstab)

Clip.jpg

col_to_raw.rar

تم تعديل بواسطه omar19-3
زيادة ايضاح
رابط هذا التعليق
شارك

أعتذر إن كان السؤال غير واضح ..

الصورة التالية توضح الجدول المراد التعديل عليه .. وهو بهذا الشكل (الجهة ،، الوظيفة الاسم) ..

Clip_2.jpg.cbbcfe2a63caeae7d33eac1f8551f124.jpg

هل يمكن توزيع بيانات صف (الجهة)  إلى عدة أعمدة (فيصبح هو رأس العمود) بشرط تشابه الجهات كما فى الصورة؟

بدون استخدام (crosstab)

Clip.jpg.9520822aa5a204165eb1ef3190f13903.jpg

 

 

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

  • 2 weeks later...

وعليكم السلام 🙂

 

ولكن السؤال هنا ، كم حقل تريد في الجدول الجديد؟

هل يعني انك كلما زادت عندك المواد ، تزيد عدد الحقول في الجدول برمجيا؟ طبعا ممكن ، ولكن هذه ليست الطريقة الصحيحة في عمل جداول قواعد البيانات ، 

والطريقة الصحيحة هي التي عملتها في جدولك ، هكذا

Clip_2.jpg

.

والطريقة الصحيحة لحل مشكلتك هي استعلام Crosstab 🙂

وسؤالي هنا ، ليش ما تريد تستعمل Crosstab ، صحيح له عيوبه ، ولكن له ميزاته كذلك 🙂

 

الاختيار الآخر اللي يجي في بالي ، هو تصدير البيانات بالطريقة اللي تريدها الى الاكسل بصيغة csv مثلا 🙂

 

جعفر

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

بارك الله فيك أستاذ جعفر ..

ـ بالنسبة لعدد الأعمدة فتكون بعدد عمود (الجهة). مثلا فى الجدول السابق بعمود الجهة (الماليات، القانون)، وعددها ثابت (ثمان جهات تقريبا)

ـ بالنسبة لزيادة عدد الحقول بالجدول وفقاً لزيادة عدد الجهات،، فعدد الحقول ثابت لا يزيد ولا ينقص، والغرض هو الحصول على البيانات بهذا الشكل لاخراجها بعد ذلك فى صورة تقرير بشكل (هيكلى).

ـ فإنه لا يتم تحديثه بشكل تلقائى (Crosstab ) بالنسبة لـ استعلام ـ

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

ـ أرفقت تصميم لجدول يوضح الشكل المطلوب ..

col_to_raw_2.rar

تم تعديل بواسطه omar19-3
رابط هذا التعليق
شارك

54 دقائق مضت, omar19-3 said:

1ـ بالنسبة لزيادة عدد الحقول بالجدول وفقاً لزيادة عدد الجهات فمن الممكن تصميم جدول يحتوى على أعمدة بعدد الجهات (وهم تقريباً ثمانية جهات)  ويتم برمجياً إدخال البيانات، والغرض هو الحصول على البيانات بهذا الشكل لاخراجها بعد ذلك فى صورة تقرير بشكل (هيكلى).

2ـ فإنه لا يتم تحديثه بشكل تلقائى (Crosstab ) بالنسبة لـ استعلام ـ

3ـ بالنسبة لاستخراج البيانات عن طريق إكسل فهذا ما أفعله فعلا عن طريق ربط مصنف إكسيل بقاعدة البيانات ليكون التحديث تلقائى .. لكن المشكلة هنا أن مصنف إكسيل مرتبط باليوزر الذى تم تصميمه عليه، وهو حاسبى الشخصى بالمنزل، وقد احتاج إلى إخراج البيانات بالشكل الهيكلى فى أى وقت وهو ما يرفضه مصنف إكسيل حيث أنه يريد اليوزر الذى أنشأ فيه.

2-

استعلام Crosstab يقدر ان يقوم مقام الجدول ، واذا فهمت قصدك صح في قولك: لا يتم تحديثه بشكل تلقائي ، فقصدك اسماء الاعمدة تزيد وتنقص حسب البيانات الموجودة ، مما يعطيك اخطاء في التقرير ، لذا انصحك قراءة هذا الرابط لأن فيه الحل (حقول ثابته ، كما في الجدول) :

كلامي عن Column Heading ، واذا عندك معيار في الاستعلام ، فيجب النظر في Parameters كذلك :

 

.

.

.

 

1- ولو اني لا انصح بالقيام بعمل جدول مؤقت (لأنه يزيد من حجم قاعدة البيانات , لا ترجع قاعدة البيانات الى حجمها الطبيعي إلا بعد الضغط والاصلاح) ، ولكن اذا كان كلا ولابد ، فرجاء ارفق الجدول النهائي بجميع اسماء الجهات ،

 

3- ما كان قصدي ربط بين الاكسس والاكسل ، وانما مجرد تصدير ملف من الاكسس الى مجلد ، ومنه يقرأه الاكسل 🙂

 

وبغض النظر اي طريق اردت ان تأخذ ، فمحتاجين بيانات اكثر ، وخصوصا عدد الجهات يكون صحيح 🙂

 

جعفر

 

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

جزاك الله خيرا أستاذ/ جعفر

مرفق جدولين :

وبه البيانات التى سيتم التطبيق عليها - (trry) جدول

(Co_to_Row) وجدول مصمم لوضع البيانات به

col_to_raw.mdb

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

السلام عليكم 🙂

 

الموضوع كان معقد اكثر مما كنت اعتقد ، وبدأت من جديد اكثر من مرة !! ولكنها خزية تضاف الى شيء اسمه تجربه 🙂

 

اساس العمل هو استعلام Crosstab ، سهل عمله ، ونتائجه مقبولة 🙂

1045.Clipboard01.jpg.221b3a827521391afa75bd9ac445114c.jpg

.

1045.Clipboard03.jpg.7f6ae4ebc6de3b008845c14db875a03d.jpg

.

1045.Clipboard05.jpg.916da2798f0f08fc8412120b459e7008.jpg

.

 

ولكن لأنك اصررت انك تريد طريقة الجدول ، فأكملنا المشوار من هنا ، بالاستفادة من هذا الاستعلام ، وتحويله الى استعلام إلحاقي ، ليلحق البيانات في الجدول Co_to_Row :

1045.Clipboard07.jpg.3a24dbfacfae1b870ad0a1863e45ff37.jpg

.

جعلت جميع اسماء الحقول بنفس الطريقة ، والاهم ، اني اضفت حقل الرقم التلقائي:

1045.Clipboard08.jpg.0baf614c49d62c1e65ebc20a6b99b82d.jpg

.

وتكون البيانات هكذا:

1045.Clipboard11.jpg.226babfaa826652f5dc614010c769ce7.jpg

.

ثم يأتي دور هذا الزر الكبير ، ليقوم بتشغيل الوحدة النمطية ، والتي ستقوم بتعديل البيانات في الجدول

1045.Clipboard09.jpg.8c877eb2e76cf82a2a05701e773c1802.jpg

.

وهذه هي الوحدة النمطية اللتي تقوم بالعمل ،

وحاولت ان اجزئها ، واضع الشرح فيها :


Public Function ReArrang()

'1
    Dim rstS As DAO.Recordset
    Dim rstD As DAO.Recordset
    Dim RCs As Integer
    Dim i As Integer
    Dim N As Integer
    Dim Co As String
    Dim jo As String
    Dim arr_Co() As String
    Dim arr_jo() As String
    
'2
    'append the New data to the Table Co_to_Row
    DoCmd.SetWarnings False
        DoCmd.OpenQuery "qry_Append_Co_to_Row"
    DoCmd.SetWarnings True
    
'3
    'we have 8 Areas
    For N = 1 To 8
    
'4
        'make the field names, based on the loop value
        Co = "Co" & N
        jo = "jo" & N
        
'5
        'get each set (fields CoX and joX) values
        Set rstS = CurrentDb.OpenRecordset("Select * From Co_to_Row Where " & Co & " IS NOT NULL")
        rstS.MoveLast: rstS.MoveFirst: RCs = rstS.RecordCount
        
'6
        ReDim arr_Co(RCs)
        ReDim arr_jo(RCs)
    
'7
        'fill the array
        For i = 1 To RCs
            
'8
            arr_Co(i) = rstS(Co)    'Co values
            arr_jo(i) = rstS(jo)    'jo values
            
'9
            'Remove this value from the previous Records
            rstS.Edit
                rstS(Co) = ""
                rstS(jo) = ""
            rstS.Update
'10
            rstS.MoveNext
        Next i
    
'11
    Set rstD = CurrentDb.OpenRecordset("Select * From Co_to_Row Order By Auto_ID")
    
'12
    For i = 1 To RCs
                
'13
        'add this value to fill all Records
        rstD.Edit
            rstD(Co) = arr_Co(i)
            rstD(jo) = arr_jo(i)
        rstD.Update
                        
        rstD.MoveNext
    Next i
    Next N
    
'14
    'Delete the Empty Records
    DoCmd.OpenQuery "qry_Delete_Empty_Records"
    
'15
    rstS.Close: Set rstS = Nothing
    rstD.Close: Set rstD = Nothing
    
    MsgBox "Done"
    
End Function

.

وهذا استعلام حذف السجلات الفارغة:

1045.Clipboard10.jpg.e9fc09f83dfd7ba890f37bc91ccbb8a3.jpg

.

والنتيجة النهائية للجدول:

1045.Clipboard12.jpg.89dd0c23bb7b11cf530c234d9b191b9b.jpg

.

جعفر

1045.col_to_raw.mdb.zip

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

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

أخى وأستاذى .. أستاذ/ جعفر ..

:clapping::clapping::clapping:

............................... والله العظيم عبقرى .....................................

جزاك الله كل خير .. والله ... علم، وفن، ومجهود كبير

اقترح تثبيت الموضوع لكثرة الطلب عليه .. وجزاكم الله خيرا 💚

تم تعديل بواسطه omar19-3
رابط هذا التعليق
شارك

وعليكم السلام 🙂

 

حياك الله 🙂

10 دقائق مضت, omar19-3 said:

اقترح تثبيت الموضوع لكثرة الطلب عليه .. وجزاكم الله خيرا 💚

 

الموضوع ممكن يُثبت ، ولكن لفترة !!

 

طيب ، لوسمحت تعمل لنا هذه الخدمة:

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

وانا سوف اضيفها الى سؤالك الاصل ،

وبهذه الطريقة ، لما احد الاعضاء يقوم بالبحث عن مثل موضوعك ، يستطيع الوصول اليه بسبب كلماتك وشرحك 🙂

 

جعفر

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

فرز وتوزيع بيانات عمود ، إلى عدة أعمدة فى حالة تشابه البيانات بهذا العمود، لاخراجها بعد ذلك فى صورة تقرير بشكل (هيكلى)

فإذا كان الجدول يحتوى على البيانات التالية:

الجهة

 

الوظيفة

 

الاسم

 

موارد بشرية

اخصائى

محمد

موارد بشرية

مسجل بيانات

طارق

موارد بشرية

عامل

صلاح

موارد بشرية

مدير

محمد

سوهاج

مسجل بيانات

حسنين

سوهاج

مدير

عاطف

سوهاج

سكرتير

سيد

المنيا

محاسب

مصطفى

المنيا

اخصائى

علاء

المنيا

مدير

السيد

المنيا

باحث

جراح

المنيا

عامل

سمير

الماليات

عامل

اكرم

فهل يمكن تحويل عمود (الجهة) إلى عدة أعمدة بحيث تصبح البيانات المتشابهة هى رأس العمود، وإدراج عمود الاسم كصفوف للأعمدة الجديدة، وإدراج الوظيفة فى أعمدة الوظيفة؟ كالتالى:

موارد بشرية

الوظيفة

سوهاج

الوظيفة

المنيا

 

الوظيفة

الماليات

الوظيفة

محمد

اخصائى

حسنين

مسجل بيانات

مصطفى

محاسب

اكرم

عامل

طارق

مسجل بيانات

عاطف

مدير

علاء

اخصائى

 

 

صلاح

عامل

سيد

سكرتير

السيد

مدير

 

 

محمد

مدير

 

 

جراح

باحث

 

 

 

 

 

 

سمير

عامل

 

 

             
               
               
               
               
               

 

 

تم تعديل بواسطه omar19-3
رابط هذا التعليق
شارك

  • 2 years later...

السلام عليكم ورحمة الله وبركاته / اخي العزيز المبدع  jjafferr   اليوم وبعد عناء بحث ايام وليالي عثرت على قاعدة البيانات التي ابدعتها اناملك الذهبيه وفكرك النير . ادعو الله لك ان يحفظك ذخرا لنا ولكل محبيك . يا اخي العزيز اقسم بالله كدت اطير من الفرح عندما عثرت عليها لان اكيد تعلم كم هو الجهد الذي  يبذله شخص مثلي يتطلب عمله تدوير البيانات حيث كنت اقوم عدة مرات باليوم بارسال قاعدة البيانات الى اكسل لتدويرها ومن ثم اعادتها الى اكسس وانا بصراحه كنت انجز عشرات المعاملات يوميا بعد عناء طويل واليوم بجهودك الجباره اختصرت لي عملي الى ساعات قلائل  . عاجزا عن تقديم الشكر لك ولا املك الا ان اقول جزاك الله عنا خير الجزاء . ولي سؤال . هل بالامكان تدوير البيانات بالعكس اي ندخل بيانات في الجدول ( Co_to_Row ) وعند الضغط على زر الامر تنتقل الى الجدول ( trry ) وبشرط  بمعنى ان لايتم تدوير كل الجدول وانما فقط التي نضع امامها علامة صح .  تقبل تحياتي اخي العزيز

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

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