الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن إضافة محتويات حقل إلى آخر

بدأه Like Delphi في 14 ديسمبر 2008 · 14 رد · 2,166 مشاهدة · في قسم أرشيف الاكواد والمكتبات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

عندما أقوم باستيراد بيانات من ملف نصي مصدر من قواعدة بيانات أخرى, وبعد القيام بعمليات التنظيف عليه

يصبح عندي جدول يحتوي على مجموعة سجلات , لنقل مثلاً أنه لدي الحقول التالية:

ITEM_CODE,DESCRIPTION,UNIT

وكان يوجد مثلاً في السجل الأول:

CCC123,DESK,EA

و في السجل الثاني أي الذي يليه مباشرة و في حقل الـ DESCRIPTION : فقط البيانات التالية:

AND TABLE و باقي الحقول فارغة.

أي أنها تكملة لحقل الـ DESCRIPTION في السطر الذي قبله.

ومن الممكن أن أجد محتويات حقل الـ DESCRIPTION موزعة على ثلاثة سجلات.

فالسؤال الآن:

كيف يمكن بناء استعلام تحديث يقوم بعملية دمج لمحتويات هذا الحقل, و حذف تلك السجلات الغير لازمة في كافة الجدول.

أتمنى أن تكونوا أردكتم ما أريد

و جزاكم الله خيراً.

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#2

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

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

ناصر المصاروة

شبكة سوارقريباً

Sewar

#3

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

الثانية هي الصحيحة.

عندي أكثر من سجل و بعضا منها مقسمة على عدة سجلات, أي ليس كلها مقسمة بعضها كامل

و بعضها مقسم.

و جزاك الله خيراً

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#4
Like Delphi كتب:
السلام عليكــم ورحمـة الله وبركاتــه

الثانية هي الصحيحة.

عندي أكثر من سجل و بعضا منها مقسمة على عدة سجلات, أي ليس كلها مقسمة بعضها كامل

و بعضها مقسم.

و جزاك الله خيراً

هذا ماكنت اخشاه

يعني لو كنت انا وليس الحاسوب واردت دمج كل مجموعة من السجلات معاً فكيف استطيع ان احدد المجموعة التي تنتمي لنفس السجل

على سبيل المثال لنفترض ان الحقول هي (الاسم واسم الاب و اسم الجد) وكان لدينا هذه الاسماء

محمد عبد الله

احمد سليمان حسن

ناصر محمد

ووردت مجزأة كل اسم في سجل مستقل فكيف ساتعرف ان (عبد الله) يجب ضمها الى محمد

و حسن يجب ضمها الى سليمان والاثنتين يجب ضمهما الى احمد

وهكذا....

الاجابه مهمة لتحديد المعيار الذي سيتم الجمع بموجبه

ناصر المصاروة

شبكة سوارقريباً

Sewar

#5

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

أخي يوسف,

يمكننا أن نحدد الفرق بين السجلات, كيف؟

الصورة المرفقة ستوضح لك المشكلة تماماً

إذا لاحظت السجلات من 5 إلى 10 حقل الـ Description فيها لا يحتاج إلى دمج,

أما السجل 11 فيحتاج حقل الـ Description فيه إلى دمج محتوايته معاً

وكذلك الأمر بالنسبة للسجل 14 و 17

الحقل الذي فيه تتمة الـ Description باقي الحقول كما ترى فارغة

بانتظار ردكم الكريم

post-73371-1229321320_thumb.jpg

تم تعديل هذه المشاركة بواسطة Like Delphi في 15 ديسمبر 2008 في 09:11

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#6

بســم الله الـرحمــن الرحيــم

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

هل وجدتم شيئاً؟

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#7
Like Delphi كتب:
بســم الله الـرحمــن الرحيــم

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

هل وجدتم شيئاً؟

ارجو المعذرة على التاخر في الرد

شكراً على ارفاق الصورة فقد سهلت المسألة

في هذه الحالة يا اخي فانت بحاجة الى نموذج منظم الى الجدول وتكون البيانات فيه مفروزة تنازلياً حسب الحقل (ID)

ثم اضف زر امر وليكن اسمه مثلاً "Go_Add"

ثم اضف الكود التالي الى حدث عند النقر على هذا الزر


Dim stopstr As String
Dim dicribstr As String
DoCmd.GoToRecord , , acLast
stopstr = Me![id]
DoCmd.GoToRecord , , acFirst
Do While Me![id] >= stopstr
If IsNull(Me![item_coce]) Then
dicribstr = Me![Description] & " " & dicribstr
Me![Description] = Null
Else
dicribstr =Me![Description] & " " & dicribstr
Me![Description] = dicribstr
dicribstr = ""
End If
DoCmd.GoToRecord , , acNext
Loop
Private Sub Go_add_Click()

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

مع ملاحظة استبدال الكلمة (Tablename) باسم الجدول


End Sub
DoCmd.RunSQL "DELETE Tablename.*FROM Tablename WHERE (((Tablename.Description) Is Null));"

طبعاً لم اقم بتجربة الكود لذا خذ نسخة احتياطية عن البيانات قبل تجربة العملية

واعلمني بالنتيجة

مع التمنيات بالتوفيق

ناصر المصاروة

تم تعديل هذه المشاركة بواسطة Naser Al Masarwa في 16 ديسمبر 2008 في 16:57

شبكة سوارقريباً

Sewar

#8

بســم الله الـرحمــن الرحيــم

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

أخي الكريم ناصر

جزاك الله خيراً, إنه يعمل ولكنه يقف في نقطة معينة و لا يكمل,

أي أنه ينجح و لكنه لا يكمل.

و هل أفهم من ذلك أنه لا يوجد طريقة لعمل هذا من خلال استعلام؟

وذلك يا أخي كما تعلم أن تنفيذ الاستعلام أسرع من تنفيذ كود VBA.

وفقني الله و إياك إلى ما يحب و يرضى.

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#9

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

لا اعتقد انه يمكن تنفيذه بواسطة استعلام ولكن هل يتوقف التنفيذ طبيعياً ام بسبب خلل "Debug"??

ناصر المصاروة

شبكة سوارقريباً

Sewar

#10

اخي الفاضل

اولا : نشكر الأخ ناصر على المشاركه في الموضوع

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

لهذا لديك حلين :

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

2. وضع الملف النصي المستورد من قواعد البيانات الأخرى هنا في المنتدى ليتم معالجته بصورة صحيحة بحيث يتم استبعاد السجلات الفارغة ودمج بقية السجلات في حقل الوصف لهذا السجل مع بعضها البعض لتكون سجل واحد او انك تضع قاعدة البيانات التي تعمل عليها الآن للنظر فيما يمكن عمله بها .

#11

بســم الله الـرحمــن الرحيــم

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

الأخوة الكرام:

اقتباس
لا اعتقد انه يمكن تنفيذه بواسطة استعلام ولكن هل يتوقف التنفيذ طبيعياً ام بسبب خلل "Debug"??

يتوقف طبيعياً.

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

لهذا لديك حلين :

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

أختي الكريمة, المشكلة هي أننا نعمل على برنامج خاص بالشركة و هذا البرنام مصمم على Oracle developer و هو يتعامل مع قواعد بيانات Oracle.

و من داخل هذا البرنامج لدينا خدمة التقارير حيث يمكننا سحب العديد من التقارير, و هذه التقارير عندما نطلبها و تكتمل تظهر لنا ضمن صفحة HTMLو من ثم نقوم بحفظ هذه الصفحة as text و الملف الذي أحصل عليه يحتاج إلى كثير من التظيف حتى أستطيع التعامل معه, كما أن التجزئة الحاصلة لا يوجد بينها علامات اقتباس, إنما هي

كما في الصورة السابقة, هكذا ضمن أسطر حتى هي كذلك في ملف الـ Html.

أنا أعرف أن المشكلة تكمن في استرياد الملف و لكن لا نستطيع عمل شيئاً في هذا.

اقتباس
2. وضع الملف النصي المستورد من قواعد البيانات الأخرى هنا في المنتدى ليتم معالجته بصورة صحيحة بحيث يتم استبعاد السجلات الفارغة ودمج بقية السجلات في حقل الوصف لهذا السجل مع بعضها البعض لتكون سجل واحد او انك تضع قاعدة البيانات التي تعمل عليها الآن للنظر فيما يمكن عمله بها .

سأحاول وضع جزء من الملف النصي قبل الاستيراد إلى الأكسس,أي كما هو مصدر من البرنامج وذلك لكون الملف النصي كبير نسبياً, فسأحول وضع الملف محتوياً على عدد قليل من الأصناف.

وجزاكم الله كل الخير على تفاعلكم الكريم, وجعله الله في ميزان حسناتكم.

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#12

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

هذا جزء من الملف بعد حفظه as text.

وفقكني الله و إياكم إلى ما يحب و يرضى

table1.zip

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#13

بعد الاطلاع على الملف النصي

اعذرني يا اخي لاني سارفع يدي استسلاماً واقف الى جانبك انتظر الاجابة

ولكن هلا اخبرتني كيف ادرجت محتويات الملف النصي الى جدول مع توزيع البيانات على الحقول؟؟

ناصر المصاروة

شبكة سوارقريباً

Sewar

#14

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

اقتباس
ولكن هلا اخبرتني كيف ادرجت محتويات الملف النصي الى جدول مع توزيع البيانات على الحقول؟؟

أبشر:

أولاً أقوم بعمل Import وحدد نوع الملف txt

post-73371-1229507772_thumb.jpg

ثم التالي, و من ثم أقوم برسم الأعمدة بالضغط فقط على المكان المناسب بين البيانات كما في الصورة:

post-73371-1229507969_thumb.jpg

و إنهاء

و أخيراً يصبح الجدول كالتالي:

post-73371-1229508027_thumb.jpg

بعد ذلك أقوم بتنفيذ مجموعة من الاستعلامات للتنظيف,

1- استعلام لحذف الأعمدة غير المرغوب فيها

2- استعلام لحذف الصفوف غير المرغوب فيها

3- استعلام trim

4- ثلاث استعلامات لتغيير أسماء الحقول

5- و أخيراً احتاج إلى العملية التي أسألكم عنها.

و أنا اعمل كل هذا من باب الحصول على automation كامل للعملية ككل.

يعني على سبيل المثال قمت بعمل ماكرو ليقوم بعملية الاستيراد.

و العملية السابقة يا أخي أنا كنت اعملها من تطبيق خارجي (عملية دمج الحقل الموزع)

وإذا كانت لديك معرفة بالدلفي أزودك بالكود اللازم

ولكن مشكلتي مع هذا هو البطء في عملية التنظيف, فعدد السجلات كبير جداً

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

اما من خلال تطبيق خارجي أو كود بيسك تكون أبطء يكثير.

وفقني الله وإياكم لما يحب و يرضى

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

و الحمد لله على نعمة العلم.

قال تعالى: ((وَمَا أَصَابََكُمْ مِنْ مُصِيبَةٍ فَبمَا كَسَبَتْ أَيْدِيكُمْ وَ يَعْفُو عَنْ كَثِيرٍ)) :.:.: الشورى: الآية 30.

IN ALLAH WE TRUST

:.:.:.:.:.:.:.:.:.:.:.:.:.:

#15

شكراً لك يا اخي وبارك الله فيك على هذا الشرح

الان فهمت المشكلة وسافكر معك في الحل

ناصر المصاروة

شبكة سوارقريباً

Sewar

مواضيع مشابهة