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

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

قام بنشر

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

السلام عليكم

اغلبيتنا يعلم بان الاكسل جيد في انشاء برامج حسابية صغيرة لاكن مع مرور الوقت و زيادة حجم قاعدة البيانات للبرنامج يصبح هناك نوع من البطئء و التشنج في البرنامج لان الاكسل عبارة عن جداولة الكترونية و ليس بقاعدة بيانات

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

لذى فكرة في دمج الاكسل و الاكسيس معا للستفادة من قوة الاكسل في الجداول و الحسابات و جمال الفورم مع الاكسيس المتميز في قوة قاعدة البيانات و عدم تاثره كثيرا بكبر حجمها كما هو معمول مع لغات البرمجة الكبيرة ك  c++ vb.net java python ......

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

بحيث سنتعامل مع الاكسيس بسلاسة كبيرة وذلك استخدام اوامر sql مع vbq بسهولة كبيرة وتنفذ جميع الاوامر من حذف  او اضافة او تعديل او التقارير المعروف بها الاكسيس من خلال الاكسل دون فتح ملف الاكسيس

(في الحقيقة يفتح ملف الاكسيس لاكن لن تلاحظ ابدا بانه مفتوح)

والعملية المتبعة في ذلك مقسمة الى ثلاث مراحل

فتح اتصال مع الاكسيس

تنفيذ اوامر sql (select insert update delete)

غلق الاتصال مع الاكسيس

لا اطيل عليكم و اترككم مع الملف و لاي استفسارات انا في الخدمة

Capture.PNG.955b127c35c10eb19a98cde1fc14d15d.PNG

تحياتي للجميع و ارجو ان تستفيدو من الموضوع

 

ConnectDatabaseAccess.rar

  • Like 11
  • Thanks 2
قام بنشر
في 31/07/2017 at 09:03, محمد سلامة said:

وعليكم السلام استاذ شوقي

بارك الله فيك وجاري التجربة

شكرا جزيلا اخي محمد سلامة على مرورك

ارجو اعلامي ياي مشكل يواجهك في الملف بعد تجربتك له

تحياتي لك

في 31/07/2017 at 09:03, ابن الملك said:

بارك الله فيك أستاذ / شوقى

جعله الله فى ميزان حسناتك

اشكرك اخي ابن الملك على مرورك و عباراتك

تحياتي لك

17 ساعات مضت, محمود أبوالدهب said:

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

 

اشكرك اخي محمود ابو ذهب لمرورك بالموضوع

بالنسبة لاكسيس انا ايضا ليس لي به خبرة كبيرة لاكن كل ماتحتاجه هو اساسيات صغيرة تتعلمها كانشاء جداول و انشاء علاقات فيما بينها و ايضا تعلم  قليل من الاستعلامات و بعض اوامر sql

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

تحياتي لك

  • Like 3
  • 2 weeks later...
قام بنشر

أستاذنا الجليل الأستاذ شوقى ربيع

عمل رائع و ممتاز بارك الله فيك

وإن كنا نطمع فى شرح كيفية عمل مثل هذا الفورم لإدخال البيانات بالاضافة والتعديل والحذف وشرح الأكواد سواء بالفيديو أو شرح عادى

تقبل تحياتى

 

  • 4 weeks later...
قام بنشر

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

استاذي / شوقي ربيع 

الحقيقه عمل رائع.. واسلوب تسطير الاكواد اكثر من رائع 

واسمح لي ان اسال حضرتك

علي حد علمي انه من السهل جدا استبدال الاكسيس ليكون sql من خلال تغيير ال provider 

وسؤالي لحضرتك هل يمكن ربط الاكسيل ب SQL او اكسيس وجعلها علي الانترنت .. بحيث يمكن الوصول الي قاعده البيانات من اي جهاز اخر 

تقبل مروري وتحياتي

  • 4 weeks later...
قام بنشر
في 14/09/2017 at 21:32, خالد الرشيدى said:

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

استاذي / شوقي ربيع 

الحقيقه عمل رائع.. واسلوب تسطير الاكواد اكثر من رائع 

واسمح لي ان اسال حضرتك

علي حد علمي انه من السهل جدا استبدال الاكسيس ليكون sql من خلال تغيير ال provider 

وسؤالي لحضرتك هل يمكن ربط الاكسيل ب SQL او اكسيس وجعلها علي الانترنت .. بحيث يمكن الوصول الي قاعده البيانات من اي جهاز اخر 

تقبل مروري وتحياتي

شكرا لسؤالك اخي خالد

اول يمكن ربط الاكسيس مع SQL كما هو الحال مع الاكسيس تمام وكنت اود طرح موضوع منصفصل بهذا الخصوص لاكن ام يسمح لي الوقت لذى اعطيك طرف الخيط من هنا

Public Function SQLConnectDatabase()
    Set Conn = CreateObject("ADODB.Connection")

    Dim Server_Name As String: Server_Name = "Enter your server name here"
    Dim Database_Name As String: Database_Name = "Enter your database name here"
    Dim User_ID As String: User_ID = "enter your user ID here"
    Dim Password As String: Password = "Enter your password here"
    Dim sConn     As String: sConn = "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _
                                     ";Uid=" & User_ID & ";Pwd=" & Password & ";"

    Conn.Open sConn
    Conn.cursorlocation = 3
    ConnectionState = True
    
    Call CloseDatabase

End Function

هذا هو الكود الذي يمكنك من الاتصال بقاعدة بيانات من نوع SQL Server اما بقيت الاكواد فهي نفسها ولا يوجد فيها اي اختلاف

فقط الاختلاف الوحيد يكون في كتابتاوامر sql الخاصة باتواريخ لانه اوامر sql  هي نفسها بالنسبة للاكسيس او sql

اما بانسبة لرفع قاعدة البيانات على النت و الاتصال بها فهي ممكنة جدا بالنسبة ل sql  فهي سهلة جدا

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

الموضوع على بساطته محتاج بعص الوقت لكي اعمل له شرح مفصل و سأعمله ان شاء الله عند توفر الوقت الازم

تحياتي

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

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

استاذي شوقي ربيع 

حقيقة منذ ان رأيت موضوع حضرتك على المنتدي والى اليوم وانا اعمل على تعلمه والالمام به بشكل كامل  - وصراحه اسلوب حضرتك فاق في الدقة والسهوله وال functions.    المستخدمه كل المنتديات والكتب والشروحات حتى الاجنبيه - فزادك الله علما وجزاك عنا خيراً - لدرجة اننى حفظت الملف واكواده لانه حقا بمثاله مرجع قوي جدا لهذا الموضوع

بحثت في فكره المشاركه على الانترنت وتوصلت لما ذكرته حضرتك ايضاً - --- وان شاء الله في انتظار موضوع حضرتك لانى متاكد تماما انه سيكون ايضا مرجع قوي جدا 

واسمح لى استاذي القدير -  واتمنى ان يسمح وقت حضرتك - فى الموضوع  لم يتم طرح ماذا لو كان الموظف مضاف مسبقا - اقصد التاكد من عدم وجود الموظف قبل اضافه جديد - 

فماذا لو اردت ان اقول - لو ان اسم الموظف وعنوانه موجود مسبقا -  ( كمثال - لان فكره الموضوع وايضا فكره العمل القائم انا عليه ليس شرط عدم تكرار الكود يعنى عدم تكرار الموظف لهذا اريد التاكد بدلاله اسمه وعنوانه كمثال - ) - هل ساحتاج الى  فتح Recordest للتاكد من ذلك قبل INSERT   INTO  ???

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

 

تم تعديل بواسطه خالد الرشيدى
  • 4 months later...
قام بنشر
في 10/10/2017 at 23:26, خالد الرشيدى said:

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

استاذي شوقي ربيع 

حقيقة منذ ان رأيت موضوع حضرتك على المنتدي والى اليوم وانا اعمل على تعلمه والالمام به بشكل كامل  - وصراحه اسلوب حضرتك فاق في الدقة والسهوله وال functions.    المستخدمه كل المنتديات والكتب والشروحات حتى الاجنبيه - فزادك الله علما وجزاك عنا خيراً - لدرجة اننى حفظت الملف واكواده لانه حقا بمثاله مرجع قوي جدا لهذا الموضوع

بحثت في فكره المشاركه على الانترنت وتوصلت لما ذكرته حضرتك ايضاً - --- وان شاء الله في انتظار موضوع حضرتك لانى متاكد تماما انه سيكون ايضا مرجع قوي جدا 

واسمح لى استاذي القدير -  واتمنى ان يسمح وقت حضرتك - فى الموضوع  لم يتم طرح ماذا لو كان الموظف مضاف مسبقا - اقصد التاكد من عدم وجود الموظف قبل اضافه جديد - 

فماذا لو اردت ان اقول - لو ان اسم الموظف وعنوانه موجود مسبقا -  ( كمثال - لان فكره الموضوع وايضا فكره العمل القائم انا عليه ليس شرط عدم تكرار الكود يعنى عدم تكرار الموظف لهذا اريد التاكد بدلاله اسمه وعنوانه كمثال - ) - هل ساحتاج الى  فتح Recordest للتاكد من ذلك قبل INSERT   INTO  ???

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

 

السلام عليكم اخي خالد

اسف جدا على الرد المتأخر لاني لم ارى سؤالك الا الان

بخصوص سؤالك حول عدم تكرار الاسم لا اعرف ان كان هناك دالة في لغة SQL تقوم باستكشاف المكرر اما ب VBA يمكن ذلك ببساطة بالمقارنة

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

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

ممكن وجود طرق اخرى فقط لا تجعل سقف لخيالك

تحياتي

قام بنشر

هل معني ذلك استاذنا

ان اقوم بتصميم الفورم لدي بالاكسيل كما اريد واصمم برنامجي علي الاكسيل بالشكل الذي اريده

ثم اقوم بوضع الاكواد الموجودة في ملفك لربط الاكسيل االذي قمت بتصميمه مع الاكسيس ( اي ان الاكسيس ما هو الا مكان للتخزين كقاعد بيانات كبيرة فقط )

وبهذا يكون قد انتهي الربط والبرنامج

ام ان كل برنامج مصمم علي الاكسيل له اكواده الخاصه ليتم ربطه مع الاكسيس

علما بان معلوماتي عن الاكسيس لا تتعدي النماذج والجداول والاستعلامات والتقارير التي يتم انشاؤها وليس لدي اي درايه بأكواد الاكسيس نهائياً عكس الاكسيل فلدي الكثير منها وافهم معظمها بسهوله

عذرا استاذي ولكن يجب ان نتعلم هذا الموضوع فهو ممتاز وسيفيد الجميع وليس امامنا سواك استاذنا

تقبل وافر تحياتي .. جزاك الله خيرا

  • 9 months later...
قام بنشر

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

كل الشكر للاستاذ شوقي

السادة الكرام

الملف يعمل بشكل ممتاز في حال لم يكن هناك دالة جمع او ماشابه في حقل من حقول استعلام الاكسس

اما في حال وجود دالة في حقل من حقول استعلام الاكسس  فإنه تظهر مشكلة عند جلب البيانات للاكسل

هل هناك من حل ؟

 

في الملف المرفق عملت استعلام PROD_DATA1 لا يحوي دالة وآخرPROD_DATA2 يحوي دالة

(وكلا الاستعلامين للجدول PROD  

و في استعلام PROD_DATA2 يوجد ودالة DSUM لجمع حقل QTY_IN  في جدول DATA_PROD)

و في ملف الاكسل فورم1 لجلب استعلام   PROD_DATA1 وفورم2  لجلب استعلامPROD_DATA2

ولكم كل الشكر

اكسل & اكسيس (اضافة تعديل حذف + تقارير).rar

  • Thanks 1
قام بنشر
في ٢٥‏/٢‏/٢٠١٨ at 14:31, حسام مصطفي said:

هل معني ذلك استاذنا

ان اقوم بتصميم الفورم لدي بالاكسيل كما اريد واصمم برنامجي علي الاكسيل بالشكل الذي اريده

ثم اقوم بوضع الاكواد الموجودة في ملفك لربط الاكسيل االذي قمت بتصميمه مع الاكسيس ( اي ان الاكسيس ما هو الا مكان للتخزين كقاعد بيانات كبيرة فقط )

وبهذا يكون قد انتهي الربط والبرنامج

نعم اخي هو كذالك بالضبط

في ٢٥‏/٢‏/٢٠١٨ at 14:31, حسام مصطفي said:

علما بان معلوماتي عن الاكسيس لا تتعدي النماذج والجداول والاستعلامات والتقارير التي يتم انشاؤها وليس لدي اي درايه بأكواد الاكسيس نهائياً عكس الاكسيل فلدي الكثير منها وافهم معظمها بسهوله

تلك المعلومات تكفي وبزبادة

في ٢٥‏/٢‏/٢٠١٨ at 19:59, محمود أبوالدهب said:

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

الملف الملرفق ليس به اي اخطاء

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

3 ساعات مضت, سمير نجار said:

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

كل الشكر للاستاذ شوقي

السادة الكرام

الملف يعمل بشكل ممتاز في حال لم يكن هناك دالة جمع او ماشابه في حقل من حقول استعلام الاكسس

اما في حال وجود دالة في حقل من حقول استعلام الاكسس  فإنه تظهر مشكلة عند جلب البيانات للاكسل

هل هناك من حل

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

بخصوص سؤالك عن جلب الاستعلام به دالة او لا يوجد به دالة لايوجد اي مشكل يمكن ذلك جدا

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

الحل بكل بساطة هو جلب البيانات من الاكسيس مباشرتا الى اليست بوكس هههه لان اليست بوكس تقبل nothing 

اليك هذه الخورازمية لتنفيذ دالك

Function Fill2(List As Variant, SelectCommand As String)
On Error GoTo Err1
List.Clear
Set rs = CreateObject("ADODB.Recordset")
    If ConnectionState = False Then Call connectDatabase
    rs.Open SelectCommand, Conn
    
    If rs.RecordCount <> 0 Then
            List.Column = rs.GetRows
    End If
    
    If ConnectionState = True Then Call CloseDatabase
    Exit Function

Err1:
Dim MonResultat
    MonResultat = MsgBox("Description : " & Err.Description, vbCritical + vbOKOnly, "Erreur d'execution")
    If ConnectionState = True Then Call CloseDatabase
End Function

الان بكل بساطة عندما تريد انتجلب جدول الى اليست بوكس كل ما عليك استدعاء هته الخوارزمية

ايضا انضر المرفق لتستوعب الفكرة اكثر

اكسل & اكسيس (اضافة تعديل حذف + تقارير).rar

تحياتي للجميع

  • Like 1
قام بنشر (معدل)
16 ساعات مضت, شوقي ربيع said:

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

بل كل الشكر لك استاذي الكريم ونفعنا الله بعلمك وجزاك الله كل خير

تم تعديل بواسطه سمير نجار
  • Like 1
  • 4 months later...
قام بنشر

شكر للاخ شوقي ربيع ..عمل رائع وفقك الله لكل خير ..

بخصوص موضوع التحقق من عدم ادخال اسماء مكررة واتأكد منها عن طريق اظهار رسالة توضح تكرار الاسم ..ممكن تعديل الملف لتحقيق ذلك

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

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

Important Information