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

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أحمد مناع السبت يونيو 01, 2013 7:07 pm

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


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

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


التعاون بأقل معلومة هو الاحتراف بحد ذاته


متطلبات المشروع[1] برنامج Visual Studio .NET

[2] معرفة مسبقة بلغة الفيجول بيسك دوت نت والتعامل مع نماذجه وأداوته
[3] قاعدة بيانات (وهنا سنبدأ مع الأكسس ثم سنحولها إلى قاعدة سيرفر وسنرى الاختلاف)
[4] عليك بكتابة الشيفرات الموجودة في الدرس لكي تخطىء وتعرف أين أخطأت

ملاحظة : اتمنى من الاخوة الاعضاء عند أدراجكم لمشاركاتكم أن تقتصر على الأسئلة والأستفسارات بعكس المدح والشكر .. فكل مانريده هو الأفادة والأستفادة وعدم أكثار الصفحات بدون فائدة .. ومن يريد أبدء أعجابه أو أنتقاده للموضع أن يراسلني برسالة على الخاص .

نبذه عن ADO.NETهي مجموعة من الفئات مشمولة في مجال الأسماء System.Data غرضها الوصول إلى مصادر البياناتData Sources والتي تمثل بيانات محفوظة تحت أنظمة قواعد بيانات متعددة الأنواع مما يعني قدرتك على الوصول إلى أي قاعدة بيانات مهما كانت الشركة المنتجة لها

(أ. تركي العسيري)

الأختلافات الجوهربة بين ADO.NET and ADO

** ADO **
-1 مصمة للعمل في بيئة متصلة بأستمرار مع قاعدة البيانات
-2 يستخدم الكائن RecordSet للأحتفاظ بمجموعة بيانات واحدة
-3 تحتوي على أنواع من المؤشرات Cursors المستخدمة لأغراض مختلفة ولكل مؤشر أمكانياته الخاصة
-4 تخزن البيانات في هيئتها الثنائية مما يصعب أرسالها عبر جدران الحماية . كما أنها غير مفيدة للأنظمة التي لا تدعم ADO
-5 تستهلك قدراً من موارد النظام بسبب اتصالها الدائم بقاعدة البيانات أثناء المعالجة


ADO.NET

-1 مصممة من الأساس للعمل في بيئة غير متصلة (ويمكنها العمل باتصال دائم مع قاعدة البيانات)
2- يستخدم الكائن DataSet للأحتفاظ بعدة مجموعات من البيانات
3- لا تستخدم المؤشرات لأنها تعمل في بيئة غير متصلة .
4- تخزن البيانات في هيئة XML العالمية . وهذه الهيئة مصممة لكي ترسل عبر جدران الحماية وعبر الشبكات دون مشاكل كما يمكن لأي تطبيق قراءة البيانات بهيئة XML بسهولة .
5- تعمل كنظام بيانات منفصل عن قاعدة البيانات فهي لا تتصل بقاعدة البيانات إلا عند الضرورة وبالتالي لن تستهلك مورد النظام الإ عند الضرورة


والأختلافان الأخيران رقم 4 - 5 هما جوهرة الاختلاف وأهمها


معماريةADO.NET :والمقصود هنا الخصائص المزوده والمساعدة في عملية الاتصال لقراءة وتكييف البيانات وهي
[1]- مجموعة البيانات DataSet

وهو الكائن المكافىء للكائن RecordSet ولكن مع الكثير من المزايا والتحسينات حيث يستطيع تخزين أكثر من جدول أو نتيجة أستعلام في نفس الوقت حيث يمثل كل واحد من هذه الجداول كائناً منفصلاً عن الآخر

[2]- مجموعة البيانات DataAdapter يمثل الجسر الذي يربط بين DataSet وقاعدة البيانات ويدعم أوامر Select - Update - Delete - Insert وبالتالي بإمكانه القيام بعمليات مختلفة على البيانتا كما أنه المسؤول عن تحميل كائنDataSet بالبيانات


000]مجموعة البيانات DataReader يستخدم هذا الكائن لقراءة البيانات فقط ويمكنه قراءة كميات ضخمه منها تلك التي لا يمكن تخزينها في الذاكرة مؤقتاً


[4]- مجموعة البيانات DataRelation يستخدم هذا الكائن لتمثيل العلاقات بين الجداول في قاعدة البيانات JOIN


0000]مجموعة البيانات Connection يعمل هذا الكائن بصورة مشابهة للكائن Connection في ADO وهو يمكننا من إنشاء اتصال مع قاعدة البيانات

[6]- مجموعة البيانات Command
يسمح هذا الكائن لكائن DataAdapter بتطبيق الأوامر على قاعدة البيانات ويمكنه أن يتضمن اربعة من هذه الأوامر

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أحمد مناع السبت يونيو 01, 2013 9:56 pm

الدرس الثاني : عملية الاتصال بالقاعدة بأستخدام المعالج

_ لكى تتمكن من عملية الوصول إلى البيانات من خلال ADO.NET على نوع مصدر البيانات و الذى سنقوم بتحديدة من خلال المعالج عن طريق الخطوات التالية :

1_ نقوم بالنقر على Data Sources في الجزء السفلي من مستكشف الحلول في نسخة 2008 كما فى الصورة التالية :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbWizardED2

إذا كان لديك VB NET 2010 أو عام 2012 ثم علامة التبويب مصدر بيانات على اليسار، أسفل مربع الأدوات (إذا لم تتمكن من رؤية علامة التبويب، انقر فوق View > Other Windows > Data Sources)

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DataSource_A

2_ بعد النقر على Data Sources سوف تشاهد شاشة الترحيب بكم في معالج تكوين مصدر البيانات، فقط حدد Database ثم انقر فوق التالي، كما فى الشاشة أدناه:


الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep1

في الإصدار و 2010 و 2012 من VB NET، سترى هذه الشاشة تظهر كما يلى :


الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DataSource_wizard_A



3_بعد تحديد Database والنقر على التالى ستظهر لك الشاشة التالية :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep2

انقر فوق زر New Connection فى المربع الحوارى أعلاه ليظهر لك المربع التالى

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep3

4_ كما ترون فى المربع الحوارى السابق فان مصدر البيانات الافتراضى هو SQL Server database ....ولأننا نريد للاتصال إلى قاعدة بيانات Access سنقوم بتغير هذا المصدر و ذلك من خلال النقر على زر Change ليفتح لنا المربع التالى :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep4

من المربع أعلاه سنقوم بتحديد Microsoft Access Database File ثم النقر على زر أوكية ليظهر لنا المربع الحوارى التالى :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep5

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



الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Db_test_connection

5_ثم انقر فوق الزر موافق سوف تعاد لك معالج تكوين مصدر البيانات كما يلى :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep7

6_انقر فوق التالي للانتقال إلى الخطوة التالية من المعالج كما يلى :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep8

تأكد من أن هناك وضع علامة في المربع ل "Save the connection"، كما هو ظاهر أعلاه ثم انقر فوق التالي ليظهر لك المربع التالى:

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbStep9

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

7_عندما يتم إرجاعك إلى النموذج الخاص بك، يجب أن تلاحظ أنه تم إضافة مصدر البيانات كما فى الشكل التالى:



الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbDataSource2



ويمكنك النقر على السهم الصغير بجوار مصدر البيانات لتجد الجدوال و الحقول كما فى الشكل التالى :



الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbDataSource3

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


الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbDataSource4



الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbForm



في الصورة أعلاه، يتم سحب الحقل FNAME على النموذج......و سوف تجد ايضا بعض الكائنات فى اسفل و شريط التنقل بين الحقول و السجلات فى الاعلى ....و لو قمت بتشغيل برنامجك ستجد أنه قد تم الاتصال بقاعدة البيانات و يمكنك بالفعل التنقل بين السجلات باستخدام شريط التنقل كما فى الشكل التالى :

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET DbForm4

9_ مربع النص هو العنصر الافتراضى الذى يظهر عند سحبك لاحد الحقول على النافذة ليتم عرض بيانات هذا الحقل فى هذا المربع .....لكن يمكنك تغير مربع النص بأحد الادوات الاخرى مثل listbox وذلك من خلال تحديد الحقل ثم من خلال السهم الصغير أختر نوع العنصر الذى تريده أن يظهر بدلا منه كما فى الشكل التالى :

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أحمد مناع الأحد يونيو 02, 2013 8:00 am

الأتصال بقاعدة البيانات عن طريق الأكواد Connection


وهذه الطريقة هي ما أفضلها دائما .. وستجد المتعة في ذلك من خلال تتبعك
معنا لهذه الدروس وسوف يدور الكلام هنا حول الاتصال بقاعدة البيانات من
نوع اكسس Access وذلك لأن الاغلبية يتعامل معها فلنبدأ ...... .
قبل التعامل مع مصدر بيانات، عليك فتح اتصال معها وفي هذا القسم سنعرض الاساليب المتعددة للاتصال بمصادر البيانات.

تعريف كائن الاتصال
الكود:
Dim Con As New OleDbConnection()
حيث : OleDbConnection مخصصة للأتصال بقواعد البيانات من نوع OLE DB .NET Data Provider أما أذا كانت قواعد البيانات من نوع SQL Server .NET Data Provider فسيكون تعريف الاتصال من نوع SqlConnection و بهذا الشكل :
الكود:
Dim Con As New SqlConnection()

نص الاتصال بالقاعدة
سوف نقوم بتعريف متغير من نوع نص ووضع مسار الاتصال بقاعدة البيانات بداخله بهذه الطريقة
الكود:
 Dim ConnString As String  = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =c:\HnHnDB.mdb""
وهذ الكود يجب أسناده إلى مزود البيانات الذي يميل له كما سبق ذكره وهنا سيتم اسناده إلىOleDbConnection وستكون الشفرة بهذه الطريقة

الكود:

  Dim con As OleDbConnection
                con = New OleDbConnection(ConnString)

أو يمكنك كتابة التعريف بهذا الشكل ايضا
الكود:
Dim con As New OleDbConnection(ConnString)

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

الكود:

Dim con As New OleDbConnection "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =c:\HnHnDB.mdb"


ولجعل المسار لمجلد القاعدة معروف تلقائيا كما في VB6 مثلاً والقصد هنا استخدام App.Path فقد تغييرت كلمة المسار التلقائي في VB.NET Application.StartupPath إلى وهناك أشكال عدة في استخراج المسارات في الفيجول نت سنذكرها لاحقاً أنشالله . وبهذه الكلمة ستكون شفرة الاتصال بهذه الطريقة:

الكود:

        Dim  ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Application.StartupPath & "\HnHnDB.mdb"
 
ملاحظة : يجب أن تكون قاعدة البيانات HnHnDB.mdb في مجلد المشروع Bin يمكنك وضع القاعدة في اي مكان تريد ولكن الآن نحن نتكلم حول خاصية Application.StartupPath والتي تعرف مسار هذا المجلد من ضمن المشروع

أما بالنسبة لشفرة الاتصال بقاعدة بيانات من نوع سيرفر SQL Server وستكون بهذا الشكل وهي لا تختلف عن الاكسس سوى في عملية الاتصال حيث أنك ستتعامل مع ال Access كملف لقاعدة بيانات اما SQL Server فأنك تتعامل مع محرك قواعد بيانات

الكود:

                Dim SQLCon As New SqlConnection()                SQLCon.ConnectionString = "Data Source=DEV4ARABS_SERVER;" _
                & "User ID= HnHn; Password= _ ";admin
                & "Initial Catalog= "القـــاعدة


الآن سنأتي على فتح وإغلاق الاتصال بالقاعدة : بعد أن اسندنا نص الاتصال بالقاعدة للمتغير ConnString يمكننا الآن البدء بفتح الاتصال واغلاقه عن طريق هذه الجمل ...


الكود:
 
con.Open ()  لفتح الاتصال
con.Close () لأغلاق الاتصال


ولمعرفة حالة الاتصال ان كنا متصلين بالقاعدة أم لا سنستخدم الحالة State التابعة لكائن الاتصال والتي سينتج عنها عند الاستفسار ما يلي أن كان الاتصال في الاوضاع التالية :

[1] Open الاتصال مفتوح
[2]Closed الاتصال مغلق
[3]Connecting جاري فتح الاتصال
[4]Executing يتم تنفيذ امر استعلام على الاتصال
[5] Fetching جاري الحصول على بيانات من سجلات مصدر البيانات

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

الكود:

            If (Con.State And ConnectionState.Open) <> 0 Then
'HnHn التعرف إلى حالة الاتصال
                        MsgBox("تم فتح الاتصال بنجاح")
                Else
                        MsgBox("تم اغلاق الاتصال ")
                End If


ويمكنك تغيير الوضع Open إلى إي من الأوضاع السابقة

سنأتي الأن على ذكر كائن الأوامر Command ولتذكير فقط بما سبق ذكره عن الكائن




[6]- مجموعة البيانات Commandيسمح هذا الكائن لكائن DataAdapter بتطبيق الأوامر على قاعدة البيانات


بعد تكوين الاتصال مع قاعد ة البيانات، ستأتي هذه الخطوة وهي ارسال جمل
الاستعلام وهنا بأمكانك حصر البيانات التي تريد استعراضها كما تشاء أن كانت
لديك فكرة في جمل الاستعلام SQL وستكون هذه الشفرة مع شفرة الاتصال وسيكون تعريفا بهذه الطريقة
:

الكود:

Dim cmd As New OleDbCommand()

أما أذا كانت قواعد البيانات من نوع SQL Server .NET Data Provider فسيكون تعريف الاتصال من نوعSqlConnection و بهذا الشكل :

الكود:

Dim cmd As As New SqlCommand()

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

الكود:

'HnHn  شفرة الاتصال بالقاعدة بشكل تام
Dim Con As New OleDbConnection(ConnString)
Dim cmd As New OleDbCommand()
Con.Open()
cmd.Connection = Con

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أحمد مناع الأحد يونيو 02, 2013 8:26 am

تابع لعملية الاتصال (فتح الجداول والتعامل معها )

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET IMG1-1201218391


سنحتاج هنا إلى عنصرين رئيسيين لتكملة عملية التعامل مع البيانات وهما ...


[1] - OleDbConnection
[2] - DataSet

وهذا هو تعريفهما مع التعاريف السابقة الموضوعه في حدث Public Class Form1
وستأتي بشكل هذا :

الكود:

        Dim Con As New OleDb.OleDbConnection()  REM HnHn : "تعريف كائن الاتصال "
        Dim cmd As New OleDbCommand()              REM HnHn : " تعريف كائن أمر لتمرير الاستعلام ثم الاتصال  "
        Dim Dp As OleDb.OleDbDataAdapter                REM HnHn : " تعريف كائن تدفق البيانات بمعنى المصدر أو المزود "
        Dim rs As New DataSet()                          REM HnHn : "تعريف كائن التعامل مع البيانات  في الذاكرة  "
        'Dim ConnString As String                          REM HnHn : "تعريف متغير لتخزين مسار القاعدة "

وهكذا نكون كونا المجموعة الأساسية للتعامل مع البيانات بشكل تام وسنبدأ الآن بالاتصال بأحدى جداول القاعدة

[ملاحظة:]
ان كائن الاوامر OleDbCommand لا يصل إلى
مصدر البيانات بشكل مباشر وانما يعتمد على كائن الاتصال والذي بدوره يصل
إلى مصدر بيانات كما في هذه الشفرة والمذكورة لديك في المثال المرفق سابقا .


الكود:

con.Open()
cmd.Connection = con
con.Close()

وللأستفادة من كائن الأمر علينا بناء جمل ة أستعلام مع مراعاة نوعها أن كانت جملة استعلامية تقليدية أو جملة تنفيذية؟ وللمعلومية .... أن الجمل الاستعلامية هي التي لا تؤثر على سجلات قاعدة البيانات وانما تقوم بقراءة محتوياتها ونستخدم لها أمر SELECT

أما الجمل الاستعلامية هي تلك الجمل التي تحدث تغييرا في سجلات جداول القاعدة بشكل التالي
.DELETE أو ،INSERT INTO ،UPDATE

وغالبا ما يستخدم مع الجمل التنفيذية أمر ()ExecuteNonQuery وذلك كنوع من الحصر لعدد السجلات التي تأثرت بالعملية ومثال ذلك العملية التالية ..

الكود:

Dim SQL As String = "UPDATE Emp SET Slary = 5000 WHERE NoEmp = 10001  "
Dim cmd As New OleDbCommand(SQL, con)
                cmd.ExecuteNonQuery()

الأن سنأتي على عملية الاتصال بجدول البيانات وسحبها منه بشكل التالي

[1] - سنقوم بتعريف متغيير لوضع جملة الاستعلام بداخله كما يلي
الكود:
Dim SQL As String = "SELECT * FROM HnHnEmp"
[2] - سنقوم بوضع الاستعلام مع الاتصال في محول البيانات OleDbDataAdapter
الكود:
Dp = New OleDb.OleDbDataAdapter(SQL, Con
[3] - سنقوم بنقل البيانات لتعامل معها من دون اتصال بوضعها في DataSet
الكود:
Dp.Fill(rs, "HnHnEmp")
[4] - أخيرا سنغلق القاعدة لتعامل معها من دون اتصال وستصبح الشفرة بشكل نهائيا بشكل التالي .....

الكود:

                Con.ConnectionString = ConnString        REM HnHn : "الاتصال بمسار القاعدة"
                Con.Open()                                                      REM HnHn : فتح الاتصال
                SQL = "SELECT * FROM HnHnEmp"            REM HnHn : "وضع
                Dp = New OleDb.OleDbDataAdapter(SQL, Con)        REM HnHn : "تدفق البيانات مع الاتصال في المتحول"
                Dp.Fill(rs, "HnHnEmp")                                          REM HnHn : "التعامل مع سجلات الجدول في الدات سيت"
                Con.Close()

لم يتبق الآن سوى أظهار البيانات في الحقول المخصصة لها وستأتي الطريقة بشكل التالي :

الكود:
TextBox1.Text = rs.Tables("HnHnEmp").Rows(0).Item(0)
وتفصيلها كما يلي .....

TextBox1.Text : الحقل الذي سيرتبط مع الحقل في الجدول
rs.Tables("HnHnEmp"). : اسم الجدول المدرج منه اسم الحقل المرتبط بالتيكس بوكس
Rows(0). : تمثل الصف الخاص بالحقل المرتبط وعند تغيير الرقم الذي بداخله يتم الانتقال لسجل التالي والعكس
Item(0). : تمثل عنصر الوصول إلى الفئات المحضونة من الكائن الرئيسي DataSet
وھي خاصية افتراضية للكائن DataRow لذا يمكنك تجاھلھا ان اردت .

وهكذا مع بقية الحقول بالشكل التالي وفق المثال المرفق ....

الكود:

                REM HnHn :  اظهار بيانات الجدولفي الحقول المخصصة
                TextBox1.Text = rs.Tables("HnHnEmp").Rows(0).Item(0)
                TextBox2.Text = rs.Tables("HnHnEmp").Rows(0).Item(1)
                TextBox3.Text = rs.Tables("HnHnEmp").Rows(0).Item(2)
                TextBox4.Text = rs.Tables("HnHnEmp").Rows(0).Item(3)
                TextBox5.Text = rs.Tables("HnHnEmp").Rows(0).Item(4)
                TextBox6.Text = rs.Tables("HnHnEmp").Rows(0).Item(5)
                TextBox7.Text = rs.Tables("HnHnEmp").Rows(0).Item(6)

عملية التنقل بين السجلات :

في بيئة النت اختلف الأمر واصبحت عملية التنقل بهذا الشكل للسجل التالي
الكود:
Me.BindingContext(rs.Tables("HnHnEmp")).Position += 1
وللسجل السابق
الكود:
Me.BindingContext(rs.Tables("HnHnEmp")).Position - = 1
والسجل الأول سيكون بهذا الشكل
الكود:
Me.BindingContext(rs.Tables("HnHnEmp")).Position  = 0
والسجل الأخير سيكون بهذا الشكل
الكود:
Me.BindingContext(rs.Tables("HnHnEmp")).Position = Me.BindingContext(rs.Tables("HnHnEmp")).Count - 1

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

[1] - سنقوم بوضع متغيير على مستوى الفوم وسيكون من نوع رقم لتخزين قيمة او رقم السجل بداخله كما يلي
الكود:
 Dim Rec As Integer
[2] - سنقوم بعمل أجراء بأسم ViewRecord وسيحوي السجلات المرتبطة بالحقول وستكون قيمة Rows(0) هي المتغيير Rec الذي قمنا بتعريفه للسجلات بشكل هذا
الكود:
Rows(Rec)

وسيكون الأجراء بشكل هذا :
الكود:

        Private Sub ViewRecord()
                REM HnHn :  اظهار بيانات الجدولفي الحقول المخصصة
                TextBox1.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(0)
                TextBox2.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(1)
                TextBox3.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(2)
                TextBox4.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(3)
                TextBox5.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(4)
                TextBox6.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(5)
                TextBox7.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(6)
'HnHn  : Total Record
                Label9.Text = Rec & Space(2) & "OF" & Space(2) & rs.Tables("HnHnEmp").Rows.Count
        End Sub

[3] - سنقوم الآن بتكوين عملية التنقل للسجلات بشكل التالي


السجل التالي

الكود:

        Private Sub ButtonNavNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavNext.Click

                REM HnHn : Next
                Rec = Rec + 1
                Call ViewRecord()
        End Sub

السجل السابق
الكود:

        Private Sub ButtonNavPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavPrevious.Click

                REM HnHn : Previous
                Rec = Rec - 1
                Call ViewRecord()
        End Sub


السجل الأول


الكود:

        Private Sub ButtonNavFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavFirst.Click

                REM HnHn : First
                Rec = 0
                Call ViewRecord()
        End Sub


السجل الأخير :

الكود:

        Private Sub ButtonNavLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavLast.Click

                REM HnHn : Last
                Rec = rs.Tables("HnHnEmp").Rows.Count - 1
                Call ViewRecord()

        End Sub


ولتنقل بأكثر أمان سنضع بعض الشروط لتحقق من السجل أن كان في الأول أو في الأخير كما يلي :

الانتقال لسجل التالي

الكود:

        Private Sub ButtonNavNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavNext.Click

                REM HnHn : Next
                Rec = Rec + 1
                'HnHn : التحقق من المتغيير اذا كان اكبر من مجموع عدد السجلات الكلي واعادة تخزين اخر قيمة
                If Rec > rs.Tables("HnHnEmp").Rows.Count - 1 Then
                        MsgBox("لا توجد سجلات للأنتقال إليها")
                        Rec = rs.Tables("HnHnEmp").Rows.Count - 1
                        Exit Sub
                Else
                        Call ViewRecord()
                End If

        End Sub


الانتقال لسجل السابق
الكود:

        Private Sub ButtonNavPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonNavPrevious.Click

                REM HnHn : Previous
                Rec = Rec - 1
                'HnHn : التحقق من المتغيير اذا كان اقل من الصفر واعادة تخزين اخر قيمة 
                If Rec < 0 Then
                        MsgBox("لا توجد سجلات للأنتقال إليها")
                        Rec = 0
                        Exit Sub
                Else
                        Call ViewRecord()
                End If
End Sub


الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET IMG1-1201218391



وفي الختام هناك مثال مرفق لتوضيح كل ما تم ذكره في عملية الاتصال

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أحمد مناع الأحد يونيو 02, 2013 12:31 pm

عملية الأضافة والتحديث

الأضافة

سأتحدث هنا بطريقتين لأتمام عملية الاضافة وهما


[1] استعمال خاصية DataRow
[2] استعمال جملة استعلام INSERT INTO
---
DataRow حيث انها تمثل سجل كامل من سجلات الجدول ولن نستطيع التعامل معها بإنشاء كائن باستخدامNew من الفئة DataRow بمعنى ان تعريف المتغير بهذه الطريقة الخاطئة لن يفيد في عملية التعامل مع الفئة
الكود:
Dim dRow As New DataRow

وأنما يتم ذلك بطريقتين :

[1] - بتعريف سطر جديد NewRaw()
[2] - تعريف مصفوفة من النوع Object

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

الطريقة الأولى باستخدام NewRaw() التابعة للفئة DataRow
الكود:
Dim dRow As DataRow = NameTabel.NewRow()
ملاحظة : NameTabel هو الجدول (مصدر البيانات) وهذه هي شفرة عملية أضافة سجل بـالفئة DataRow والخاصية NewRaw()
الكود:

                REM : HnHn كائن للإضافة سطر جديد لمجموعة البيانات
                Dim dRow As DataRow

                REM : HnHn اضافة سطر جديد في الجدول لتخزين البيانات فيه
                dRow = rs.Tables("HnHnEmp").NewRow()

                REM : HnHn : عملية نقل البيانات من الحقول إلى حقول الجدول 
                'أما عن طريق تحديد اسماء الحقول التي في الجدول إو عن طريق الفهرسة

                REM : HnHn : dRow.Item("LastName") = TextBox2.Text
                REM : HnHn : OR Index
                dRow.Item(1) = TextBox2.Text
                dRow.Item(2) = TextBox3.Text
                dRow.Item(3) = TextBox4.Text
                dRow.Item(4) = TextBox5.Text
                dRow.Item(5) = TextBox6.Text
                dRow.Item(6) = TextBox7.Text


الطريقةالثانية باستخدام INSERT INTO

جمل ال SQL هي احدى طرق عملية الاضافة وستكون شفرة الاضافة مسنودة إلى متغير من نوع كوماند OleDbCommand
وقد قلنا سابقا أن هذه الفئة تؤدي مهمة تطبيق الاوامر على القاعدة وها نحن
نستخدمها الآن في تطبيق جملة SQL من آجل عملية الأضافة حيث سنحتاج منها
العنصر CommandText وستكون الشفرة على سبيل المثال كما يلي ..
الكود:

                'Rem HnHn : تعريف متغير واسناده إلى كوماند ليقوم بعملية الحفظ لجملة الاضافة
                Dim SavInto As New OleDb.OleDbCommand

                REM HnHn : INSERTجملة الاضافة بـ
                SavInto.CommandText = "INSERT INTO HnHnEmp (NameField) values ('" & TextBox1 & "') "

حيث NameField = سنكتب بدلا عنه اسماء الحقول الموجودة في الجدول وتفصل بينهما الفاصلة (,)وسنكتب نظيرها من الحقول اللي على الفورم بنفس التسلسل TextBox2 , TextBox1 وهكذا ...مع مراعاة علامات التنصيص ' أذا كان الحقل في الجدول من نوع نص وبدون علامات تنصيص أذا كان نوع الحقل رقم وعلامة # اذا كان نوع الحقل تاريخ وبناء على المثال المرفق لديكم سنكتب الشفرة كما يلي ...
الكود:

                'Rem HnHn : تعريف متغير واسناده إلى كوماند ليقوم بعملية الحفظ لجملة الاضافة
                Dim SavInto As New OleDb.OleDbCommand

                REM HnHn : INSERTجملة الاضافة بـ
 
SavInto.CommandText = "INSERT INTO HnHnEmp (LastName,FirstName,BirthDate,Address,Mobail,Notes) values ('" & TextBox2.Text & "','" & TextBox3.Text & "',#" & TextBox4.Text & "#,'" & TextBox5.Text & "'," & TextBox6.Text & ",'" & TextBox7.Text & "') "



تحديث البيانات

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

تحديث بيانات الطريقة الأولى : NewRaw() الخاصة بالفئة DataRow

وستأتي عملية تحديث البيانات هنا بتعريف متغير من نوع الفئة DbCommandBuilder الخاص بالعمليات التي تحدث على السجلات من جمل الاستعلام SQL ثم يتم اسناد الكائن للمحول DataAdapter
ومن ثم فتح الجدول وأضافة سجل فيه مدرج في حقوله البيانات المسنده له ومن
ثم اسناد السجل بحقوله للمحول في عملية تحديث للبيانات وتأتي الشفرة
النهائية في هذه المرحلة من عملية الاضافة بهذه الطريقة كما يلي ...


الكود:

            Dim CmdB As New OleDb.OleDbCommandBuilder(Dp)
                '------------------------
                REM : HnHn كائن للإضافة سطر جديد لمجموعة البيانات
                Dim dRow As DataRow

                REM : HnHn اضافة سطر جديد في الجدول لتخزين البيانات فيه
                dRow = rs.Tables("HnHnEmp").NewRow()

                REM : HnHn : عملية نقل البيانات من الحقول إلى حقول الجدول 
                'أما عن طريق تحديد اسماء الحقول التي في الجدول إو عن طريق الفهرسة

                REM : HnHn : dRow.Item("LastName") = TextBox2.Text
                REM : HnHn : OR Index

                dRow.Item(1) = TextBox2.Text
                dRow.Item(2) = TextBox3.Text
                dRow.Item(3) = TextBox4.Text
                dRow.Item(4) = TextBox5.Text
                dRow.Item(5) = TextBox6.Text
                dRow.Item(6) = TextBox7.Text

REM HnHn : اضافة السجل للجدول
                rs.Tables("HnHnEmp").Rows.Add(dRow)

REM HnHn : عملية التحديث في قاعدة البيانات
                Dp.Update(rs, "HnHnEmp")
                MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")

تحديث بيانات الطريقة الثانية : INSERT INTO ...وفي هذه المرحلة تتم عملية تحديث البيانات بالخطوات التالية


[1] - تعريف المتغير من نوع أمر [OleDbCommand]
[2] - تحديد مسار الاتصال واسناده للمتغير
[3] - تحديد نوع الامر وسيكون من نوع نص .. لأننا نحن من سيقوم بكتابة الاستعلام يدويا
[4] - كتابة جملة الاستعلام لأضافة الحقول للجدول
[5] - فتح الاتصال لأتمام العملية النهائية
[6] - حصر السجلات التي ستتأثر بعملية الأضافة
[7] - اغلاق الاتصال

والشفرة ستكون كالتالي ....


الكود:

                REM HnHn : تعريف متغير واسناده إلى كوماند ليقوم بعملية الحفظ لجملة الاضافة
                Dim SavInto As New OleDb.OleDbCommand

                REM HnHn : تحديد مسار الاتصال للمتغير
                SavInto.Connection = Con

                REM HnHn : تحديد نوع الأمر وسيكون من نوع نص لأننا سنقوم بكتابة الاستعلام يدوي
                SavInto.CommandType = CommandType.Text

                REM HnHn : INSERTجملة الاضافة بـ
                SavInto.CommandText = "INSERT INTO HnHnEmp(LastName,FirstName,BirthDate,Address,Mobail,Notes) values ('" & TextBox2.Text & "','" & TextBox3.Text & "',#" & TextBox4.Text & "#,'" & TextBox5.Text & "'," & TextBox6.Text & ",'" & TextBox7.Text & "') "

                REM HnHn  : فتح الاتصال لعملية الاضافة
                Con.Open()

                REM HnHn :  لحصر عدد السجلات التي تأثرت بعملية الاضافة
                SavInto.ExecuteNonQuery()

                REM HnHn : اغلاق الاتصال
                Con.Close()

                MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح")

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف VB.NET الثلاثاء أغسطس 20, 2013 6:19 am

جزالك الله خيرا اخى احمد
VB.NET
VB.NET
المراقبين
المراقبين

تاريخ التسجيل : 18/02/2011
المساهمات : 121
النقاط : 189
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف أيمن الإبراهيم الثلاثاء أغسطس 20, 2013 10:48 am

جزاك الله خير درس رائ ومفيد
أيمن الإبراهيم
أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 398
التقيم : 1
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف LAHROUCHI MOHA الأحد أبريل 02, 2017 7:52 am

جزاك الله خيرا
LAHROUCHI MOHA
LAHROUCHI MOHA
.
.

تاريخ التسجيل : 21/03/2017
المساهمات : 1
النقاط : 1
التقيم : 0
الدولة : المغرب
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف kemas الجمعة يونيو 22, 2018 8:31 pm

السلام عليكم
أود من حضراتكم إرشادى إلى مكان بقية هذه المقالة الرائعة
أفضل ما وجدت من شروح لأوامر  ado
kemas
kemas
.
.

تاريخ التسجيل : 07/04/2018
المساهمات : 1
النقاط : 1
التقيم : 0
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف بنت البلد الخميس أكتوبر 18, 2018 9:49 am

جزاكم الله خير استاذنا 
بنت البلد
بنت البلد
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 85
النقاط : 160
التقيم : 11
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف عرفات007 الجمعة أكتوبر 22, 2021 5:40 am

لك الشكر والتحــية
بعد تطبيقي للخطوات أعــلاهـ تظهر رسالة خطأ (التحويل من النوع 'DBNull' إلى النوع 'String' غير صالح.) عند عملية التنقل بين السجلات علماً بانها (9) سجل بالقاعدة.
عرفات007
عرفات007
.
.

تاريخ التسجيل : 21/10/2021
المساهمات : 5
النقاط : 7
التقيم : 0
الدولة : السودان
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف إعمار الرياض السبت مارس 12, 2022 11:28 am

جزاكم الله خير استاذنا

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
شركة تسليك مجاري بالرياض

شركة عزل اسطح بالرياض

شركة عزل فوم بالرياض

شركة رش مبيدات بالرياض

شركة نقل اثاث بالرياض
إعمار الرياض
إعمار الرياض
..
..

تاريخ التسجيل : 04/11/2021
المساهمات : 11
النقاط : 19
التقيم : 0
الدولة : السعودية
الجنس : انثى
الموقع : الرياض

https://emaralryad.com/

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف احمد عماد الثلاثاء يوليو 11, 2023 4:12 pm

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

تأسيس شركة في دبي
احمد عماد
احمد عماد
..
..

تاريخ التسجيل : 02/07/2022
المساهمات : 16
النقاط : 20
التقيم : 0
الدولة : مصر
الجنس : ذكر

https://dubaisetupbusiness.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET Empty رد: الاتصال و التعامل مع قاعدة بيانات أكسس فى بيئة vb.net بواسطة تقنية ADO.NET

مُساهمة من طرف ناجي علي السبت يوليو 15, 2023 5:19 pm

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

تاريخ التسجيل : 30/06/2022
المساهمات : 14
النقاط : 18
التقيم : 0
الدولة : مصر
الجنس : ذكر

https://emiratescompanysetup.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

كاتب هذه المساهمة مطرود حالياً من المنتدى - معاينة المساهمة

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى