اذهب الي المحتوي
أوفيسنا

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

قام بنشر (معدل)

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

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

http://www.officena.net/ib/index.php?showt...t=0entry29932

ارجو المساعدة

تم تعديل بواسطه m.hindawi
قام بنشر

السلام عليكم ...

ربما لم يستطع الأخ m.hindawi إيصال المعلومة بشكل صحيح ، لذلك سأشرح الموضوع بالتفصيل :

الأخ m.hindawi يريد أن يستورد إلى الاكسل سجل معين من قاعدة بيانات وذلك عن طريق مايكرو معين ، وقد كتبت الكود التالي لحل مشكلته:

Sub DAO1()
Dim DB As Database
Dim RS As Recordset
Dim NumberRecorder As String
Dim SQL As String
Dim EndRow As Long
Dim MyPath As String
NumberRecorder = Application.InputBox(prompt:="أدخل رقم السجل", Title:="رقم السجل", Type:=2)
If NumberRecorder = "False" Or NumberRecorder = "" Then Exit Sub
MyPath = Workbooks("Labour.xls").Path & "\mh1.mdb"
SQL = "SELECT * FROM PM3 WHERE PNO=" & NumberRecorder & ";"
Set DB = OpenDatabase(MyPath, ReadOnly)
Set RS = DB.OpenRecordset(SQL)
EndRow = Sheets(1).Range("A1").CurrentRegion.Rows.Count
Sheets(1).Cells(EndRow + 1, 1).CopyFromRecordset RS
RS.Close
DB.Close
End Sub
المايكرو السابق يعتمد على أدوات الإقحام DAO ، وDAO هي مجموعة من الأساليب الخاصة بالتعامل مع مصادر البيانات الخارجية (استيراد،إضافة،حذف،تغيير،...،الخ). المهم بالأمر أنه لاستيراد سجل معين يلزمنا وضع استعلام الـ SQL الذي سيتم على أساسه الاستيراد (أي أن الاستيراد سيتم لنواتج الاستعلام). لاحظ أنني في الكود السابق أسندت استعلام الـ SQL التالي في المتغير SQL:
SELECT *
FROM PM3
WHERE PNO='---رقم السجل---';

ولاحظ أنني مررت رقم السجل المكتوب في الحقل PNO إلى الاستعلام عن طريق المتغير NumberRecorder .

الكود السابق كان مجهز في حالة كون السجل PNO يحتوي على أرقام فقط وأن كل رقم لا يمكن تكراره أكثر من مرة (أي باختصار يجب أن يكون الحقل PNO هو حقل ترقيم تلقائي) ، ولكن الأخ m.hindawi أخبرني بما يلي:

اما في الملف الموجود عندي فان التسلسل يتم وفقا لأرقام متسلسلة مختلفة عن التسلسل العادي حيث أن العمود الأول يحتوي على أرقام أصناف يتكون رقم الصنف من عشر خانات ويكون التسلسل في الخمسة الأولى أما الخمسة الأخرى فتكون مختلفة مثال

لدي الرقم AJ1090A005

والرقم A0101H862G

وهكذا حتى نهاية الملف

و بما أنني في بداياتي مع الـ SQL وخبرتي في كتابة جمله ضعيفة جداً ، لذلك فقد نصحته بطرح التساؤل في منتدى الاكسس العام .

المطلوب الآن هو :

كتابة استعلام SQL لحل المشكلة السابقة ، وذلك حتى نستطيع تغيير الاستعلام القديم (الموجود في الكود) إلى الاستعلام الذي يستطيع تحديد السجل صاحب الشيفرة المعينة.

أي إذا أدخل الشخص الشيفرة AJ1090A005 فإن الاستعلام يقوم بفرز البيانات ويظهر السجل صاحب هذه الشيفرة في الحقل PNO.

وهنا يجب أن أنبه إلى أن الأسلوب CopyFromRecordset يقوم باستيراد جميع السجلات الناتجة عن الاستعلام (وليس سجل واحد) ، لذلك فيجب الانتباه إلى ضرورة كون ناتج الاستعلام عبارة عن سجل واحد فقط .

مرفق بالملف المطلوب تعديله:

mh1.zip

قام بنشر

السلام عليكم

اخي محمد حجازي :fff: ، بارك الله فيك

وإن كان سيستخدم الحروف بالطريقة التي أشرت إليها أعلاه فالأمر غاية في البساطة حينها يكون التغيير في الكود هكذا

SQL = "SELECT * FROM PM3 WHERE Mid(PNO,2,4) ='" & NumberRecorder & "';"

مع الاحترام

قام بنشر

السلام عليكم ...

أخ خضر الرجيبي ، لاحظ أنه عند تطبيق الجملة التالية:

SELECT *
FROM PM3 WHERE Mid(PNO,3,5)='10125';

نحصل على السجلات التي تحتوي على الشفرات AM10125A25 و A010125M2E في الحقل PNO ، بينما لا يظهر السجل صاحب الشفرة BLU10125KITS أبداً .

تحياتي :fff:

قام بنشر

السلام عليكم

أخي محمد حجازي :fff: ، بارك الله فيك

كل الامور المتعلقة بكيفية إدخال الرقم ، ستكون معالجتها سهلة جدا وحتى التي في التعقيب السابق ، ولكن يجب أن تطرح جميع الامور معا حتى يكون العمل متكاملاً فأرجو التفاهم بينك وبين صاحب السؤال وبعدها ، سيكون لكما كل ما تطلبان إن شاء الله.

مع الاحترام

قام بنشر (معدل)

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

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

خصوصا اذا علمت ان حجم الملف حوالي 6 ميجا بايت قبل استيراده الى الاكسل وبعد استيراده يصبح حجم ملف الاكسل 13 ميجا بيات لا حظ اني ارفقت جزء بسيط من الملف لاتمكن من تحميله الى الموقع

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

M.HINDAWI

تم تعديل بواسطه m.hindawi
قام بنشر

السلام عليكم ...

شكراً لك أخي خضر الرجبي، وما دامت المشكلة قد حلت فإني أدعوك يا أخ خضر لإضافة المرفق في الموضوع الموجود في قسم الاكسل:

http://www.officena.net/ib/index.php?showtopic=5883

وذلك حتى ننهي الموضوع ونستطيع نقله لقسم الخلاصات.

بالتوفيق :fff:

  • 3 weeks later...
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information