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

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


m.hindawi

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

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

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

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

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

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

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

الملف صاحب اللاحقة dbf خاص بتطبيق FoxPro (على ما أظن) ، ولم يسبق لي أن استخدمت هذا النوع ، ولكن على أية حال سأشرح لك كيفية عمل ما طلبت على ملف بلاحقة mdb.

أولاً تأكد من وجود مرجع ADO معرف ، ومن ثم جرب الكود التالي:

Sub ADO()
Dim DB As Database
Dim RS As Recordset
Dim SQL As String
Dim Endrow As Long
SQL = "ضع الاستعلام هنا"
Set DB = OpenDatabase("C:\M\mah.mdb")
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

تم تعديل بواسطه محمد حجازي
رابط هذا التعليق
شارك

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

لقد جربت الكود ولكنني لا اعرف ماهو مرجع ado لو تفضلت بالشرح اكثر اكون ممتنا لك

بالمناسبة ملفات dbf يمكن تحويلها بسهولة الى ملفات mdb عن طريق الاكسس

وهي كما قلت مستخدمة من قبل برامج foxpro

بالمناسبة لقد جربت الكود و لقد ظهرت الرسالة التالية compile error user defined type not defined

وهي تشير الى السطر التالي في الكود

Dim DB As Database

اخيرا لك جزيل الشكر

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

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

DAO هي مجموعة من الأساليب الخاصة بالتعامل مع مصادر البيانات الخارجية (استيراد،اضافة،حذف،تغيير،...،الخ).

أما عن الخطأ الناتج عن السطر Dim DB As Database فهذا ناتج عن عدم تمكين المرجع DAO.

في محرر الفيجوال ومن القائمة Tools انقر فوق References لتظهر لك نافذة ، تحت Available References أضف مكتبة الـ DAO.

في المشاركة مرفق لمثال بسيط:

:pp:

DAO.zip

تم تعديل بواسطه محمد حجازي
رابط هذا التعليق
شارك

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

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

لدي الرقم AJ1090A005

والرقم A0101H862G

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

المثال المرفق رائع في التعامل مع dbf المرتية تسلسليا وفق نظام التر قي م التلقائي لكنه لايعمل على نظام متسلسل وفق طريقة خاصة مثل الملف الموجود لدي

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

و شكرا لك على جهودك

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

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

لدينا ملف اكسس باسم mh1 يختوي على جدول pm3 وهو في الاصل ملف dbf قمت بتحويله الى صيغة mdb عن طريق استيراد جدول

الطلوب ان ادخل رقم الصنف pno عن طريق استعلام بالاكسل فيعطيني معلومات الصنف الموجدة بالاعمدة المقابلة ل pno

الصنف الاول مثلا رقمه

AJ1090A005

بياناته كاتالي PNO SC BPRICE RPRICE

AJ1090A005 1 2586.96 3593

انا لا اريد استيراد الملف كاملا الى الاكسل لانه ضخم جدا وسوف يستهلك الذاكرة

ولكم الشكر

عفوا لم استط تحميل الملف الى الموقع لم اعرف الطريقة

ساحاول لاحقا

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

السلام عليكم

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

مجهود مبارك وعملك متقن 100% فقط تعديل بسيط جدا على الكود، ويعمل الاستعلام بالشكل الصحيح والمطلوب.

وإن أحب الاخ m.hindawi :fff: ، البحث عن جزء من الرقم ما عليه سوى استخدام دالة Mid كما يلي:

فمثلاً إن كان المستخدم سيقوم بإدخال الرقم 1090 للدلالة على السجل الذي يحتوي على الشيفرة AJ1090A005 في الحقل PNO.

فإن الحل يكون هكذا

SQL = "SELECT * FROM PM3 WHERE Mid(PNO,2,4) ='" & NumberRecorder & "';"
ومثلا إن كان المستخدم سيقوم بإدخال الرقم 10125 التي تحتوي على الشفرات AM10125A25 و A010125M2E و BLU10125KITS فإن الحل يكون هكذا
SQL = "SELECT * FROM PM3 WHERE Mid(PNO,2,5) ='" & NumberRecorder & "' or Mid(PNO,3,5) = '" & NumberRecorder & "'; "

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

مع الاحترام

mh1.rar

تم تعديل بواسطه خضر الرجبي
رابط هذا التعليق
شارك

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

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

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

تحياتي :fff:

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

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

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

Important Information