mmkibsi قام بنشر مارس 15, 2021 قام بنشر مارس 15, 2021 لدي بيانات مستخرجة من نظام اوراكل في ملفات txt لكن البيانات الموجودة غير منتظمة احتاج طريقة اليه لاستيراد البيانات في جدول هل بإمكان احد اعانتي فانا محتاج الطريقة في شغلي مع العلم ان البيانات تزيد عن 50 الف صف مرفق لكم ملف مضغوط يحتوي عل الملفات txt المطلوب العمل عليها البيانات.rar
أبو إبراهيم الغامدي قام بنشر مارس 15, 2021 قام بنشر مارس 15, 2021 أهلا بك.. أعتذر إليك إن كنت أحزنتك. في هذه المشاركة سوف أحاول مع من يتبرع من الزملاء من قراءة واستخلاص البيانات من الملفات النصية، وكيف يمكن وضع المحددات التي تساعد على ذلك.. الملف النصي: IAS_Out_Cs_Detail.txt * من الممكن جعل البيانات في جدول واحد.. يخض هذا الإجراء لصاحب العلاقة..! لكني لا أشجع عليهلكونه يتسبب في وجود كم كبير من البيانات المتكررة! - يتكون هذا الملف من ثالث طبقات من البيانات وكل طبقة منها يمكن أن تكون في جدول خاص، وهذا من الناحية الفنية أرتب لكنه مكلف من ناحية الشفرة! -- الطبقة الأولي: بيانات مركز التكلفة. -- الطبقة الثانية: بيانات أوامر الصرف. -- الطبقة الثالثة: بيانات بنود أوامر الصرف. * كيف يمكن استخلاص البانات؟ - بما أننا سنذهب إلى تقسيم البيانات إلى ثالث طبقات، فسوف نقوم بعمل التالي. -- إيجاد محدد فريد لكل طبقة (وليس للبيانات) -- تحويل البيانات في كل طبقة إلى مصفوفة بيانات وفقاً لمنط تكراري منتضم؛ إن أمكن (المصفوفة تسهل ضبط البيانات،لكن ليست شرطاً في المعالجة) -- إرسال البيانات إلى جدول البيانات * قراءة البيانات من الملف النصي هناك العديد من الطرق لقراءة البيانات من الملف النصي، من أسهلها التعليمة التالية Sub IAS_Out_Cs_Detail() Dim i As Integer Dim row, cols, col '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read text file line by line Line Input #1, row Loop Close #1 End Sub - أرجو التكرم يالذهاب لملف تعليمات VBA لمعرفة مدلولات هذه التعليمة *معالجة البيانات ستكون معالجة البيانات كما في الشفرة التالية Sub IAS_Out_Cs_Detail() Dim i As Integer Dim row, cols, col '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, ":") For Each col In cols Debug.Print col Next Debug.Print String(100, "+") ElseIf row Like "الحساب*" Then cols = Split(row, ":") For Each col In cols Debug.Print col Next Debug.Print String(100, "=") Else cols = Split(row, vbTab) For Each col In cols Debug.Print col Next Debug.Print String(100, "-") End If Loop Close #1 End Sub - يوجد في هذا الملف بيانات خارجة عن الصف، سأتطرق لطريقة معالجتها عند رفع المثال * نقل البيانات للجداول التعليمات الخاصة بتقل البيانات للجداول سأشير إليها عند رفع المثال 5
jjafferr قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 13 ساعات مضت, أبو إبراهيم الغامدي said: قراءة واستخلاص البيانات من الملفات النصية، وكيف يمكن وضع المحددات التي تساعد على ذلك وانا سأوضح قصد اخوي ابو ابراهيم ، ولكن بالنظر في الملف بطريقة اخرى ، ليست الشفرة ، وانما استيراد البيانات الى جدول مؤقت ، وباستعلامات إلحاقية 🙂 - عملت برنامج اكسس جديد ، ثم استوردت من ملف النص IAS_Out_Cs_Detail.txt ، ثم نتابع طريقة الاكسس التلقائية لإستيراد الملف الى جدول جديد tbl_tmp ، وبدون تنظيف ، - عملت نسخ لجميع بيانات الجدول والصقتها في صفحة اكسل ، حتى يكون التحليل سهل : الحقول الصفراء والبرتقالية والمربع الاحمر ، هي معلومة واحدة ، اي ان جميع هذه الحقول لسجل واحد (رجاء المتابعة لشرح هذا) ، الحقول الصفراء متكررة مرتين ، فمثل ما قال اخوي ابو ابراهيم ، ممكن جعلها في جدول مستقل ، وفي الكود اشار اليه (If row Like) ("مركز*"Then ) ، الحقول البرتقالية كذلك ممكن جعلها في جدول مستقل (ElseIf row Like) ("الحساب*" Then) ، ونلاحظ بأن الحقول ابتداءً من field16 لسنا بحاجة اليها ، لأنها موجودة في المربع الاحمر ، وهذا ما اشار اليه اخوي ابو ابراهيم لما قال: "يوجد في هذا الملف بيانات خارجة عن الصف" ، والبيانات في المربع الاحمر هي للجدول الثالث ، وهذا الجدول يجب ان يحتوي على "رقم سجل" للجدول الاول ، و "رقم سجل" للجدول الثاني : . 14 ساعات مضت, أبو إبراهيم الغامدي said: هناك العديد من الطرق لقراءة البيانات من الملف النصي وبهذه الطريقة ، نعمل استعلام الحاقي لبيانات كل جدول ، واستعمال المعايير المناسبة لتنظيف البيانات قبل ادخالها للجدول 🙂 طريقة العمل تكون : 1. الاكسس يعمل اول جدول تلقائيا ، ونطلب منه ان لا يستورد الحقول التي لا حاجة لنا بها ، ثم في نهاية نطلب منه حفظ طريقة الاستيراد : . 2. نعمل استعلام الحاقي لكل جدول (قد نحتاج الى 3 استعلامات او اكثر) ، وتنظيف البيانات بإستخدام المعايير المناسبة ، 3. ثم عمل كود ليقوم بعمل 1 (طبها الاستيراد سيكون من نفس اسم الملف ولن يتغير ، فلابد لنا من عمل طريقة لهذه النقطة) و 2 🙂 وطبعا كود اخوي ابو ابراهيم جاهز وانظف واسهل للفهم 🙂 جعفر 3 1
biskra قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 على الرابط التالي ممكن كود مهم يساعد على تحويل النص الى جدول في الأكسس، https://saplsmw.com/Import_a_text_file_as_a_table_in_MS_Access_using_VBA
أبو إبراهيم الغامدي قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 45 دقائق مضت, biskra said: على الرابط التالي ممكن كود مهم يساعد على تحويل النص الى جدول في الأكسس، https://saplsmw.com/Import_a_text_file_as_a_table_in_MS_Access_using_VBA أهلا بك.. نحن لدينا أفكاراً وإبداعاً وحيلاً كما للآخرين! 1 1
biskra قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 40 دقائق مضت, أبو إبراهيم الغامدي said: أهلا بك.. نحن لدينا أفكاراً وإبداعاً وحيلاً كما للآخرين! معذرة أخي الكريم، تجاوز مشاركتي.
jjafferr قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 1 ساعه مضت, biskra said: على الرابط التالي ممكن كود مهم يساعد على تحويل النص الى جدول في الأكسس وهنا يأتي الابداع ، كل مبرمج يتفنن في عمله 🙂 للتجربة ، قمت بإستخدام الكود من الرابط ، ونتيجة الجدول كانت غير صحيحة/كاملة : . لذا ، فهذا الميدان يا حميدان ، تستطيع الاستفادة من ذاك الكود وتطوعه لحاجتك ، او بالتحليل تفهم ملف النص ، وتشارك في كود يعمل 🙂 جعفر 1
أبو إبراهيم الغامدي قام بنشر مارس 16, 2021 قام بنشر مارس 16, 2021 2 ساعات مضت, jjafferr said: وبهذه الطريقة ، نعمل استعلام الحاقي لبيانات كل جدول ، واستعمال المعايير المناسبة لتنظيف البيانات قبل ادخالها للجدول 🙂 لا عدمنا أفكارك ولا كلت أناملك أ. جعفر،، 2 ساعات مضت, jjafferr said: وطبعا كود اخوي ابو ابراهيم جاهز وانظف واسهل للفهم 🙂 طبعا كود اخوك ابو ابراهيم أكثرا تعقيدا.. ما يحرني أنك تتحدث وكأنك جالس بجانبي! 2
mmkibsi قام بنشر مارس 17, 2021 الكاتب قام بنشر مارس 17, 2021 اخوكم مبتدء في الاكسس واتعلم بصعوبة حاولت اعمل بكود الأخ أبو إبراهيم الغامدي ولكني فشلت في استيراد البيانات وترتيبها في أعمده فاذا تكرمتم ارجوا ان احد يضعه في ملف أكسس جاهز للاستيراد كما عمل @أبو إبراهيم الغامديفي مشاركة سابقة فله الشكر فيسهل علي نسخ النموذج
أبو إبراهيم الغامدي قام بنشر مارس 17, 2021 قام بنشر مارس 17, 2021 9 ساعات مضت, mmkibsi said: حاولت اعمل بكود الأخ أبو إبراهيم الغامدي ولكني فشلت في استيراد البيانات وترتيبها في أعمده فاذا تكرمتم ارجوا ان احد يضعه في ملف أكسس جاهز للاستيراد كما عمل @أبو إبراهيم الغامديفي مشاركة سابقة فله الشكر فيسهل علي نسخ النموذج أعتذر عن التأخير.. لن تعمل الشفرة لأنها ناقصة وهذه تكملتها Sub IAS_Out_Cs_Detail() Dim rs As DAO.Recordset Dim i As Integer Dim row, cols, col '-- data variables Dim cntr_id, cntr_name, acnt_no, iss_no, iss_typ, iss_date, crr_typ, gtotal '-- open rs to add records With CurrentDb Set rs = .OpenRecordset("IAS_Out_Cs_Detail", dbOpenDynaset) .Execute "delete * from [" & rs.Name & "]" End With '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, vbTab) cntr_id = Right(cols(0), 4) cntr_name = cols(1) '-- second layer ElseIf row Like "الحساب*" Then cols = Split(row, vbTab) acnt_no = Split(cols(0), ":")(1) iss_no = Split(cols(1), ":")(1) iss_typ = Split(cols(2), ":")(1) iss_date = Split(cols(3), ":")(1) crr_typ = cols(13) gtotal = cols(14) '-- third layer Else cols = Split(row, vbTab) rs.AddNew rs(0) = cntr_id rs(1) = cntr_name rs(2) = acnt_no rs(3) = iss_no rs(4) = iss_typ rs(5) = iss_date rs(6) = crr_typ rs(7) = gtotal For i = 0 To UBound(cols) - 2 rs(i + 8) = cols(i) Next rs.Update End If Loop Close #1 Set rs = Nothing End Sub وهذا المرفق بعد التعديل Import Data from oracle Report.zip 3
mmkibsi قام بنشر مارس 18, 2021 الكاتب قام بنشر مارس 18, 2021 9 ساعات مضت, أبو إبراهيم الغامدي said: أعتذر عن التأخير.. لن تعمل الشفرة لأنها ناقصة وهذه تكملتها Sub IAS_Out_Cs_Detail() Dim rs As DAO.Recordset Dim i As Integer Dim row, cols, col '-- data variables Dim cntr_id, cntr_name, acnt_no, iss_no, iss_typ, iss_date, crr_typ, gtotal '-- open rs to add records With CurrentDb Set rs = .OpenRecordset("IAS_Out_Cs_Detail", dbOpenDynaset) .Execute "delete * from [" & rs.Name & "]" End With '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, vbTab) cntr_id = Right(cols(0), 4) cntr_name = cols(1) '-- second layer ElseIf row Like "الحساب*" Then cols = Split(row, vbTab) acnt_no = Split(cols(0), ":")(1) iss_no = Split(cols(1), ":")(1) iss_typ = Split(cols(2), ":")(1) iss_date = Split(cols(3), ":")(1) crr_typ = cols(13) gtotal = cols(14) '-- third layer Else cols = Split(row, vbTab) rs.AddNew rs(0) = cntr_id rs(1) = cntr_name rs(2) = acnt_no rs(3) = iss_no rs(4) = iss_typ rs(5) = iss_date rs(6) = crr_typ rs(7) = gtotal For i = 0 To UBound(cols) - 2 rs(i + 8) = cols(i) Next rs.Update End If Loop Close #1 Set rs = Nothing End Sub وهذا المرفق بعد التعديل Import Data from oracle Report.zip 49.45 kB · 3 downloads شكراً جزيلاً اعنتني بمجهود رائع... هل بالامكان تستكمل باقي الملفات اذا تكرمت يا وفي
mmkibsi قام بنشر مارس 22, 2021 الكاتب قام بنشر مارس 22, 2021 في 17/3/2021 at 18:02, أبو إبراهيم الغامدي said: أعتذر عن التأخير.. لن تعمل الشفرة لأنها ناقصة وهذه تكملتها Sub IAS_Out_Cs_Detail() Dim rs As DAO.Recordset Dim i As Integer Dim row, cols, col '-- data variables Dim cntr_id, cntr_name, acnt_no, iss_no, iss_typ, iss_date, crr_typ, gtotal '-- open rs to add records With CurrentDb Set rs = .OpenRecordset("IAS_Out_Cs_Detail", dbOpenDynaset) .Execute "delete * from [" & rs.Name & "]" End With '-- open text file Open App_Path & "IAS_Out_Cs_Detail.txt" For Input As #1 '-- read data from text file Do Until EOF(1) '-- read line by line Line Input #1, row '-- make condition for each layer '-- first layer If row Like "مركز*" Then cols = Split(row, vbTab) cntr_id = Right(cols(0), 4) cntr_name = cols(1) '-- second layer ElseIf row Like "الحساب*" Then cols = Split(row, vbTab) acnt_no = Split(cols(0), ":")(1) iss_no = Split(cols(1), ":")(1) iss_typ = Split(cols(2), ":")(1) iss_date = Split(cols(3), ":")(1) crr_typ = cols(13) gtotal = cols(14) '-- third layer Else cols = Split(row, vbTab) rs.AddNew rs(0) = cntr_id rs(1) = cntr_name rs(2) = acnt_no rs(3) = iss_no rs(4) = iss_typ rs(5) = iss_date rs(6) = crr_typ rs(7) = gtotal For i = 0 To UBound(cols) - 2 rs(i + 8) = cols(i) Next rs.Update End If Loop Close #1 Set rs = Nothing End Sub وهذا المرفق بعد التعديل Import Data from oracle Report.zip 49.45 kB · 10 downloads يبدو ان الكود الموجود في الملف الخاص ببقية الملفات ناقص فلهذا لم استطع استيراد بقية الملفات
أبو إبراهيم الغامدي قام بنشر مارس 22, 2021 قام بنشر مارس 22, 2021 3 ساعات مضت, mmkibsi said: يبدو ان الكود الموجود في الملف الخاص ببقية الملفات ناقص فلهذا لم استطع استيراد بقية الملفات نعم! جميعها قد أُسس لها إجراء، لكن بدأت فيها بالأسهل في التطبيق! أرجو أن تتحقق من مواضع البيانات وعناوينها لأن الأخيران فيهما انحراف! Import Data from oracle Report.zip 2 1
mmkibsi قام بنشر مارس 23, 2021 الكاتب قام بنشر مارس 23, 2021 في ٢٢/٣/٢٠٢١ at 12:28, أبو إبراهيم الغامدي said: نعم! جميعها قد أُسس لها إجراء، لكن بدأت فيها بالأسهل في التطبيق! أرجو أن تتحقق من مواضع البيانات وعناوينها لأن الأخيران فيهما انحراف! Import Data from oracle Report.zip 107.47 kB · 1 download يوجد خطأ في المرفق
أفضل إجابة أبو إبراهيم الغامدي قام بنشر مارس 23, 2021 أفضل إجابة قام بنشر مارس 23, 2021 3 ساعات مضت, mmkibsi said: يوجد خطأ في المرفق جرب نسخة 2003 من المرجح أنها تعمل! Import Data from oracle Report.zip 2 1
mmkibsi قام بنشر مارس 29, 2021 الكاتب قام بنشر مارس 29, 2021 في 23/3/2021 at 16:50, أبو إبراهيم الغامدي said: جرب نسخة 2003 من المرجح أنها تعمل! Import Data from oracle Report.zip 62.07 kB · 9 downloads شكراً جزيلاً هذا هو المطلوب
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.