السلام عليكم
انا عندى جدول لية 3 primary keys مثلا Field1,Field2,Field3 كل اللى انا عاوزه انى اخلى Field1,Field2 بس هما اللى primary keys متهيألى السؤال كدة واضح
او على اضعف الايمان مخليش ولا primary key
وطبعا انا عايز اعمل دة بجملة sql :)
السلام عليكم
انا عندى جدول لية 3 primary keys مثلا Field1,Field2,Field3 كل اللى انا عاوزه انى اخلى Field1,Field2 بس هما اللى primary keys متهيألى السؤال كدة واضح
او على اضعف الايمان مخليش ولا primary key
وطبعا انا عايز اعمل دة بجملة sql :)
من وصايا لقمان الحكيم لابنه
يابني: إذا جلست لذي سلطان، فليكن بينك وبينه مقعد رجل فلعله يأتيه من هو آثر عنده منك فينحّيك فيكون نقصاً عليك.
يابني: إن أردت أن تؤاخي رجلاً فأغضبه، فإن أنصفك في غضبه، وإلا فدعه.
يابني: لا تضحك من غير عجب، ولا تمشى في غير أدب، ولا تسأل عما لا يعنيك.
يابني: زاحم العلماء بركبتيك »أي أكثر من الجلوس إليهم «وانصت لهم بأذنيك، فإن القلب يحيا بنور العلماء، كما تحيا الأرض الميتة بماء السماء.
أخي الغالي
افتح قاعدة بيانات جديدة
افتح استعلام جديد وضع هذه الجملة في محرر SQL
create table mohamed (item_code int not null PRIMARY KEY )
وهذه الجملة تعني انشاء جدول جديد اسمة mohamed وبداخلة حقل اسمة item_code ومن ضمن خصائصة ان هذا الحقل يحتوي علي مفتاح أساسي
واذا اردت انشاء جدول بدون هذا المفتاح فعليك بهذه الجمله
create table mohamed (item_code int not null )


بارك الله فيك اخي محمد فؤاد على المشاركه
أخي الفاضل omda_asem
السلام عليكم ورحمة الله وبركاته
دعني اشرح لك وبقية الأخوة الكرام طريقة حذف الفهارس بالتفصيل وعليك الإنتباه والتطبيق بعد ذلك فعلى بركة الله نبدأ :
تعليمات هامه :
1. لا يمكن حذف الفهارس من الجداول وهي في وضع الفتح او التصميم سواء بالإستعلام ( جملة استعلام او بالكود ) لهذا يجب عليك اغلاق اي جداول تريد حذف فهارسها وكذلك اغلاق اي نموذج مفتوح مصدره أحد الجدول . ( الى هنا الكلام اكثر من رائع ) .
2. لا تستطيع حذف الفهارس من الجداول وهناك علاقات بين الجداول فيجب اولا فك ارتباط العلاقات بين الجداول ( وهذه النقطة سوف اتطرق لها بمثال فيما بعد - حذف العلاقات برمجيا ) . ( برضه الى هنا الكلام ممتاز وماشين في السليم ) .
3. تستطيع في كل مره حذف عدة فهارس من جدول وحيد او عدة فهارس من جداول مختلفه حسب ما تضعه في جملة الإستعلام او الكود . وسوف اضع امثله لهذا ( اعتقد ان هذه النقطة مفهومه ولا تحتاج الى شرح ) .
والآن هل انت جاهز للشرح ..... اذا على بركة الله نبدأ
1. بالتأكيد انه يوجد لديك جدول او عدة جداول بها فهرس او عدة فهارس موضوعه كـ PrimaryKey ركز على هذه الكلمه واحفظها مثل اسمك . حيث ان فائدة هذه الفهارس هي عدم تكرار البيانات وايضا للإسراع في عمليات البحث .
2. نرى الآن كيفية اعداد فهرس PrimaryKey او عدة فهارس في جدول مثلا اسمه tblEMP اختصارا لجدول الموظفين بهذه الطريقة .
الآن دعنا نرى ماذا حدث لهذا الحقل بعد ان جعلناه فهرسا انظر الصوره التالية
الآن نريد ان نحذف هذا الفهرس بواسطة جملة استعلام SQL وايضا بواسطة كود VBA
كما اخبرتك سابقا لا تستطيع حذف اي فهرس او فهارس والجدول مفتوح او هناك نموذج مفتوح مبني على احد الجداول لهذا نقوم بإغلاق النماذج والجداول ونبدأ في فتح الإستعلامات
1. نفتح الإستعلامات بدون اضافة اي جداول لها ثم من اشرطة قوائم الإستعلام نختار استعلام ثم خاص بـ SQL ثم تعريف بيانات .
الآن سوف يفتح لنا محرر جملة الإستعلام الذي سوف نكتب فيه جملة الإستعلام المطلوبه لحذف الفهرس من الحقل ID من الجدول tblEMP
DROP INDEX PrimaryKey ON tblEmp
وسوف يصبح شكل الإستعلام مختلف عنا قليلا بهذا الشكل ونقوم بحفظه بإسم مثلا DropRrimaryKey
نقوم الآن بالتجربه وذلك بالضغط على الإستعلام لمحاولة فتحه ولكن سوف يشتغل وينفذ ما بداخله دون ان يفتح .
نذهب الآن الى الجدول ونعرضه في وضع التصميم وسنلاحظ ان الفهرس الموضوع على الحقل ID قد تم حذفه .
الآن دعنا نقوم بعمل عدة فهارس ولتكن ثلاثة فهارس دفعة واحده في الجدول
1. نفتح الجدول في وضع التصميم ثم نقوم بالضغط بالماوس على الحقل الأول ولا نرفع يدنا عن زر الماوس الأيمن بل نبقى ضاغطين عليه ثم نسحب للأسفل ليتم تحديد كل الحقول الثلاثة دفعة واحده وتبقى مضلله في هذه اللحظة نرفع اصبعنا عن زر الماوس الأيمن ثم ننتقل الى اشرطة قوائم الأكسيس ونختار منه مفتاح اساسي وسوف يتم وضع المفتاح الأساسي لجميع الحقول الثلاثة دفعة واحده .
نقوم الآن بالحفظ واغلاق الجدول المفهرس بثلاثة فهارس
ونعود الى الإستعلام السابق الخاص بنا DropRrimaryKey ونقوم بتشغيله وسنجد ان جميع الفهارس تم حذفها . الى هنا انتهينا من الإستعلامات وبمشاكلها وننتقل الى الأكواد البرمجية ( حبيبة القلب ) .
1. نقوم بإنشاء نموذج خالي من اي مصدر بيانات ثم نقوم بإنشاء زر أمر عليه وليكن مثلا بإسم CmdDropPrimaryKey ثم نضع في حدث عند النقر هذا الكود
Private Sub CmdDropPrimaryKey_Click()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Set db = CurrentDb
Set tdf = db.TableDefs("tblEmp")
tdf.Indexes.Delete "PrimaryKey"
End Subشايف البساطة والسهاله والمرونه بالكود كلها خطوه وحده بدلا من عذاب الإستعلامات
طيب خلينا نشرح الكود على السريع :
1. تم التصريح عن متغير لقاعدة البيانات
2. تم التصريح عن متغير للجدول
3. تم التصريح عن الحقل
4. تم التصريح عن الفهرس
تم اسناد متغير قاعدة البيانات لقاعدة البيانات الحالية
تم تعريف الجدول المطلوب وهو tblEmp
تم حذف الفهرس
وهذا البرنامج به الجدول والإستعلام والنموذج ( يمكن الإطلاع عليها )
بقيت لدينا نقطه هامه وهي كيفية إظهار نافذة العلاقات و حذف العلاقات بالكود لهذا اترككم مع هذا المثال البسيط
اتمنى من الله العلي القدير ان يكون هذا الشرح السهل الممتنع قد تم فهمه واستيعابه والى دروس قادمه إن شاء الله
وبالتوفيق لكم جميعا
بارك الله فيك وجزاك الله خير يااخت زهره
ونعفع الله بعلمك
الله يعطيك الصحة والعافيه على هالشرح الرائع والمفيد
وفقك الله
اتق الله حيث ماكنت
بجد ربنا يكرمك
انت متعرفيش ريحتينى اد ايه و بالمناسبة انا بشتغل ب vb6 as a front end لذلك سوف يكون استخامى لجملة ال sql عبارة عن سطر واحد :
conn.exexcute "Drop index .........."
بس بجد شكرا على الاجابة اللى فعلا هى السهل الممتنع
ويارب الاقى اجابة زيها فى قسم ال sql server لان نفس المشكلة هتواجهنى معاه ولا اعتقد ان هذه الجملة تتماشى معه
من وصايا لقمان الحكيم لابنه
يابني: إذا جلست لذي سلطان، فليكن بينك وبينه مقعد رجل فلعله يأتيه من هو آثر عنده منك فينحّيك فيكون نقصاً عليك.
يابني: إن أردت أن تؤاخي رجلاً فأغضبه، فإن أنصفك في غضبه، وإلا فدعه.
يابني: لا تضحك من غير عجب، ولا تمشى في غير أدب، ولا تسأل عما لا يعنيك.
يابني: زاحم العلماء بركبتيك »أي أكثر من الجلوس إليهم «وانصت لهم بأذنيك، فإن القلب يحيا بنور العلماء، كما تحيا الأرض الميتة بماء السماء.
اخي الكريم لا يوجد اي مشكله ولا تهتم بأي شيء فكل شيء بإذن الله له عدة حلول ولا يوجد شيء اسمه مستحيل وعندما تقف عاجزا عن حل معين فعليك بالقراءة والسؤال وإن لم تسأل فلن تتعلم وستبقى كما انت لن تتقدم خطوة واحده .
لحذف الفهارس في MS SQL Server نكتبها بهذ الطريقة
DROP INDEX table_name.index_name
لحذف الفهارس في قواعد البيانات IBM DB2 and Oracle نكتبها بهذه الطريقة
DROP INDEX index_name
لحذف الفهارس في MySQL نكتبها بهذه الطريقه
ALTER TABLE table_name DROP INDEX index_name
لجميع قواعد البيانات
لحذف جدول نكتبها بهذه الطريقة
DROP TABLE table_name
لحذف قاعدة بيانات نكتبها بهذه الطريقة
DROP DATABASE database_name
لإنشاء قاعدة بيانات نكتبها بهذه الطريقة
CREATE DATABASE database_name
لإنشاء جدول في قاعدة البيانات نكتبه بهذه الطريقة
CREATE TABLE table_name (column_name1 data_type, column_name2 data_type, ....... )
مثال
انشاء جدول اسمه Company وبه حقل C_ID مفهرس و يحتوي على البيانات التالية مع تحديد احجام الحقول :
الرقم C_ID
الاسم C_NAME
التيلفون C_PHONE
التاريخ C_DATE
ملاحظات NOTES
نكتبه بهذه الطريقة
CREATE TABLE Company ([C_ID] integer, [C_NAME] text (30), [C_DATE] date, [C_PHONE] text (20), [NOTES] memo, CONSTRAINT [Index1] PRIMARY KEY ([C_ID]));
إنشاء فهرس فريد بدون تكرار UNIQUE على حقل معين نكتبه بهذه الطريقة
CREATE UNIQUE INDEX index_name ON table_name (column_name)
انشاء فهرس INDEX مع السماح بالتكرار على حقل معين نكتبه بهذه الطريقه
CREATE INDEX index_name ON table_name (column_name)
مثال
انشاء فهرس على حقل C_NAME في الجدول Company نكتبه بهذه الطريقة
CREATE INDEX CompanyIndex ON Company (C_NAME)
إنشاء فهرس على حقل معين مع امكانية الفرز التنازلي Descending Order نكتبه بهذه الطريقة
CREATE INDEX CompanyIndex ON Company (C_NAME DESC)
لإنشاء فهارس على اكثر من حقل مثلا الحقل C_ID و الحقل C_NAME في الجدول Company نكتبه بهذه الطريقة
CREATE INDEX CompanyIndex ON Company (C_ID, C_NAME)
إستخدام عبارة ALTER TABLE لإنشاء حقول اضافة او حذف حقول من الجدول وتكون صيغتها بهذه الطريقة
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name DROP COLUMN column_name
ملاحظة : بعض قواعد البيانات لا تسمح بحذف الحقول بهذه الطريقة
مثال
لإضافة حقل المدينه City بحجم 30 حرف الى الجدول Company نكتبه بهذه الطريقة
ALTER TABLE Person ADD City varchar(30)
ولحذف الحقل المدينة City من الجدول Company نكتبه بهذه الطريقة
ALTER TABLE Company DROP COLUMN City
وبهذا نكون قد اتينا على معظم ما نحتاجه لقاعدة البيانات من خلال جمل وعبارات SQL وإلى دروس قادمه مفيده ( وأي استفسار او سؤال يخطر على بالك لا تتردد اخي الكريم )
نتمنى لكم التوفيق جميعا
بعد ان تطرقنا لشرح مبسط في الدروس السابقه وعرفنا كيف ننشيء الجداول والفهارس وكيف نستطيع ان نحذف الجدول والفهارس فيتبارد الى اذهاننا هذا السؤال
سؤال : هل من الممكن انشاء جداول جاهزه بكل الحقول المطلوبه ووضع الفهارس الخاصة بها ومن ثم عمل علاقات بين هذه الجداول بواسطة SQL ؟
جواب : نعم وبكل سهوله ونحن مغمضين اعيننا كمان فالموضوع اسهل من انك تشرب كوب شاي منعنش بنعناع المدينه فكل ما هناك اننا سنفتح الإستعلام فاضي ومن ثم نختار نوع الإستعلام الخاص بـ SQL ثم نختار تعريف بيانات ونبدأ في كتابة جملة الإستعلام بهذه الطريقة :
انشاء جدول الأصناف
CREATE TABLE [Categories] ( [CategoryID] AUTOINCREMENT, [CategoryName] TEXT(15) NOT NULL, [Description] MEMO , [Picture] IMAGE, CONSTRAINT [CategoryName] UNIQUE ([CategoryName]), CONSTRAINT [PrimaryKey] PRIMARY KEY ([CategoryID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Categories ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbEmployees نقوم الآن بإستعراض الجدول حتى نتأكد من الفهرس والحقول ثم نقوم بإغلاقه .
انشاء جدول الزبائن
CREATE TABLE [Customers] ( [CustomerID] TEXT(5) , [CompanyName] TEXT(40) NOT NULL, [ContactName] TEXT(30) , [ContactTitle] TEXT(30) , [Address] TEXT(60) , [City] TEXT(15) , [Region] TEXT(15) , [PostalCode] TEXT(10) , [Country] TEXT(15) , [Phone] TEXT(24) , [Fax] TEXT(24) , CONSTRAINT [PrimaryKey] PRIMARY KEY ([CustomerID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Customers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbCustomers .
إنشاء جدول الموظفين
CREATE TABLE [Employees] ( [EmployeeID] AUTOINCREMENT, [LastName] TEXT(20) NOT NULL, [FirstName] TEXT(10) NOT NULL, [Title] TEXT(30) , [TitleOfCourtesy] TEXT(25) , [BirthDate] DATETIME, [HireDate] DATETIME, [Address] TEXT(60) , [City] TEXT(15) , [Region] TEXT(15) , [PostalCode] TEXT(10) , [Country] TEXT(15) , [HomePhone] TEXT(24) , [Extension] TEXT(4) , [Photo] TEXT(255) , [Notes] MEMO , [ReportsTo] LONG, CONSTRAINT [PrimaryKey] PRIMARY KEY ([EmployeeID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Employees ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbEmployees .
انشاء جدول تفاصيل الطلبات
CREATE TABLE [OrderDetails] ( [OrderID] LONG, [ProductID] LONG NOT NULL, [UnitPrice] CURRENCY NOT NULL , [Quantity] SMALLINT NOT NULL , [Discount] SINGLE NOT NULL , CONSTRAINT [PrimaryKey] PRIMARY KEY ([OrderID], [ProductID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم OrderDetails ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbOrderDetails .
انشاء جدول الطلبات
CREATE TABLE [Orders] ( [OrderID] AUTOINCREMENT, [CustomerID] TEXT(5) , [EmployeeID] LONG, [OrderDate] DATETIME, [RequiredDate] DATETIME, [ShippedDate] DATETIME, [ShipVia] LONG, [Freight] CURRENCY DEFAULT 0, [ShipName] TEXT(40) , [ShipAddress] TEXT(60) , [ShipCity] TEXT(15) , [ShipRegion] TEXT(15) , [ShipPostalCode] TEXT(10) , [ShipCountry] TEXT(15) , CONSTRAINT [PrimaryKey] PRIMARY KEY ([OrderID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Orders ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbOrders .
انشاء جدول المنتجات
CREATE TABLE [Products] ( [ProductID] AUTOINCREMENT, [ProductName] TEXT(40) NOT NULL, [SupplierID] LONG, [CategoryID] LONG, [QuantityPerUnit] TEXT(20) , [UnitPrice] CURRENCY , [UnitsInStock] SMALLINT , [UnitsOnOrder] SMALLINT , [ReorderLevel] SMALLINT , [Discontinued] BIT NOT NULL , CONSTRAINT [PrimaryKey] PRIMARY KEY ([ProductID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Products ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbProducts .
انشاء جدول الشحن
CREATE TABLE [Shippers] ( [ShipperID] AUTOINCREMENT, [CompanyName] TEXT(40) NOT NULL, [Phone] TEXT(24) , CONSTRAINT [PrimaryKey] PRIMARY KEY ([ShipperID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Shippers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbShippers .
انشاء جدول الموردين
CREATE TABLE [Suppliers] ( [SupplierID] AUTOINCREMENT, [CompanyName] TEXT(40) NOT NULL, [ContactName] TEXT(30) , [ContactTitle] TEXT(30) , [Address] TEXT(60) , [City] TEXT(15) , [Region] TEXT(15) , [PostalCode] TEXT(10) , [Country] TEXT(15) , [Phone] TEXT(24) , [Fax] TEXT(24) , [HomePage] MEMO , CONSTRAINT [PrimaryKey] PRIMARY KEY ([SupplierID]));
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف ينشأ لدينا جدول بإسم Suppliers ثم نقوم بحفظ الإستعلام بإسم مثلا qryCrTbSuppliers .
الحمد الله انتهينا من انشاء الجداول جميعها ولو نلاحظ ان بعض الجداول قمنا بوضع لها فهرسين PrimaryKey مع الترقيم تلقائي وبعضها رقم فقط AUTOINCREMENT في نفس الجدول .
الآن جاء دور انشاء العلاقات بين الجدول وبنفس الطريقة السابقة نقوم بإستخدام عبارة ALTER TABLE مع عبارة ADD CONSTRAINT ثم نضع اسماء الجداول واسماء الحقول بهذه الطريقة :
انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الزبائن Customers حيث المفتاح الأساسي CustomerID موجود في جدول الزبائن والمفتاح الفرعي موجود في جدول الطلبات .
ALTER TABLE [Orders] ADD CONSTRAINT [CustomersID] FOREIGN KEY ([CustomerID]) REFERENCES [Customers] ([CustomerID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderAndCustomers .
انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الزبائن Employees حيث المفتاح الأساسي EmployeeID موجود في جدول الموظفين والمفتاح الفرعي موجود في جدول الطلبات .
ALTER TABLE [Orders] ADD CONSTRAINT [EmployeesID] FOREIGN KEY ([EmployeeID]) REFERENCES [Employees] ([EmployeeID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderSAndEmployees .
انشاء علاقة واحد الى متعدد بين جدول تفاصيل الطلبات Order Details وجدول الطلبات Orders حيث المفتاح الأساسي OrderID موجود في جدول الطلبات والمفتاح الفرعي موجود في جدول تفاصيل الطلبات .
ALTER TABLE [Order Details] ADD CONSTRAINT [OrderID] FOREIGN KEY ([OrderID]) REFERENCES [Orders] ([OrderID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrderDetailsAndOrders .
انشاء علاقة واحد الى متعدد بين جدول الطلبات Orders وجدول الشحن Shippers حيث المفتاح الأساسي ShipperID موجود في جدول الشحن والمفتاح الفرعي ShipVia موجود في جدول تفاصيل الطلبات .
ALTER TABLE [Orders] ADD CONSTRAINT [ShipVia] FOREIGN KEY ([ShipVia]) REFERENCES [Shippers] ([ShipperID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrdersAndShippers .
انشاء علاقة واحد الى متعدد بين جدول تفاصيل الطلبات OrdersDetails وجدول المنتجات Products حيث المفتاح الأساسي ProductID موجود في جدول المنتجات والمفتاح الفرعي ProductID موجود في جدول تفاصيل الطلبات .
ALTER TABLE [OrderDetails] ADD CONSTRAINT [ProductsOrder Details] FOREIGN KEY ([ProductID]) REFERENCES [Products] ([ProductID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipOrdersDetailsAndProducts .
انشاء علاقة واحد الى متعدد بين جدول المنتجات Products وجدول الأصناف Categories حيث المفتاح الأساسي CategoryID موجود في جدول الأصناف والمفتاح الفرعي موجود في جدول المنتجات .
ALTER TABLE [Products] ADD CONSTRAINT [CategoryID] FOREIGN KEY ([CategoryID]) REFERENCES [Categories] ([CategoryID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipProductsAndCategories .
انشاء علاقة واحد الى متعدد بين جدول المنتجات Products وجدول الموردين Suppliers حيث المفتاح الأساسي SupplierID موجود في جدول الموردين والمفتاح الفرعي موجود في جدول المنتجات .
ALTER TABLE [Products] ADD CONSTRAINT [SupplierID] FOREIGN KEY ([SupplierID]) REFERENCES [Suppliers] ([SupplierID]);
اخيرا نقوم بتشغيل الإستعلام للتأكد من عدم وجود اخطاء وسوف يقوم بإنشاء علاقة واحد الى متعدد بين الجدولين ثم نقوم بحفظ الإستعلام بإسم مثلا qryRelationshipProductsAndSuppliers .
بعد الإنتهاء من كل هذا نذهب الى مخطط العلاقات ونتأكد من عملنا هل هو سليم ام لا وسنجده بهذا الشكل
وبهذا نكون قد انتهينا من من انشاء الجداول وانشاء العلاقات
الآن سوف اقوم بحذف الجداول والعلاقات جميعا من قاعدة البيانات لغرض الفحص في قاعدة جديده حيث سأقوم بإستيراد الإستعلامات فقط الى القاعدة الجديده ومن ثم اقوم بإنشاء نموذج فارغ تماما واضع به زر أمر ليقوم مشكورا بتشغيل جميع الإستعلامات لكي يتم انشاء الجداول والعلاقات بينها بدون تدخل مني حتى اتأكد ان عملنا مضبوط 100% ولا يوجد به اي خطا ونستطيع ان ننافس به مايكروسوفت .
اذا كل ما علينا اننا سنضع تحت زر الأمر في النموذج الكود التالي :
Private Sub CreateTablesAndRelationshipsBYSQL_Click() DoCmd.OpenQuery "qryCrTbCategories" DoCmd.OpenQuery "qryCrTbCustomers" DoCmd.OpenQuery "qryCrTbEmployees" DoCmd.OpenQuery "qryCrTbOrderDetails" DoCmd.OpenQuery "qryCrTbOrders" DoCmd.OpenQuery "qryCrTbProducts" DoCmd.OpenQuery "qryCrTbShippers" DoCmd.OpenQuery "qryCrTbSuppliers" DoCmd.OpenQuery "qryRelationshipOrderAndCustomers" DoCmd.OpenQuery "qryRelationshipOrderDetailsAndOrders" DoCmd.OpenQuery "qryRelationshipOrdersAndEmployees" DoCmd.OpenQuery "qryRelationshipOrdersAndShippers" DoCmd.OpenQuery "qryRelationshipOrdersDetailsAndProducts" DoCmd.OpenQuery "qryRelationshipProductsAndCategories" DoCmd.OpenQuery "qryRelationshipProductsAndSuppliers" MsgBox "تم إنشاء الجداول والعلاقات بنجاح", vbInformation, "مبروك" End Sub
وفي أقل من ثانية واحده سيقوم بإنشاء الجداول والعلاقات وتصبح جاهزة للإستخدام .
وهذا هو البرنامج كاملا يوجد به كافة الإستعلامات لإنشاء الجداول وفهارسها وكذلك الإستعلامات الخاصة بإنشاء العلاقات بين الجداول وكذلك النموذج المطلوب .
ملاحطة : قبل الضغط على زر الأمر تأكد انه لا يوجد في البرنامج اي جداول او علاقات وبإمكانك التاكد من ذلك .
zaCreateTablesAndRelationshipsBySQL.rar
ختاما لكم مني خالص الشكر والتقدير على المتابعة ولو ان الموضوع طويل قليلا ولكن نتمنى ان يكون فيه الفائدة لكل اعضاء المنتدى .
السلام عليكم ورحمة الله وبركاته
مشاء الله تبارك الله
الله يوفقك اختى الكريمه وحفظك الله ورعاك
والسلام عليكم ورحمة الله وبركاته
وفقك الله ورعاك
ورزقك الجنة .. وبارك الله فيك على هذا الجهد المميز
أعجبتني طرق إنشاء الجداول بالكود .. وومكن الاستغناء عن الاستعلامات وتحويلها
لكود فيصيح العمل برمته ( أكواد برمجية ) ... دعواتي لك بالتوفيق
أخوك / EKSEER
بارك الله فيكم جميعا اخواني الكرام على المرور
يمكن ذلك اخي اكسير عن طريق الكود ولإستغناء عن ذلك
لدرجة انك تستطيع ان تنشيء بالكود البرمجي قاعدة بيانات متكامله من الألف الى الياء كما يفعله الويزرد الموجود مع الأكسيس .
ولكني احببت ان اتطرق الى هذا الموضوع حتى لا يقال ان الأكسيس ضعيف في هذه الناحيه او ان به قصور عن باقي قواعد البيانات الأخرى ولكن برنامج الأكسيس احيانا يحتاج من يستخرج كنوزه المخفيه وحتى هذه اللحظة لم نصل الى 5% من خبايا واسرار الأكسيس فكل ما تتعمق فيه تظهر لك اشياء وأمور لم تخطر لا على البال و لا على الخاطر واتمنى ان ارى الجميع يوما من الأيام عباقرة في فنون البرمجه وخاصة بالأكسيس .
بجد مش عارف اقول ايه على هذا الفيض من المعلومات التى لم اكن انتظرها بهذه السهوله واليسر :)
من وصايا لقمان الحكيم لابنه
يابني: إذا جلست لذي سلطان، فليكن بينك وبينه مقعد رجل فلعله يأتيه من هو آثر عنده منك فينحّيك فيكون نقصاً عليك.
يابني: إن أردت أن تؤاخي رجلاً فأغضبه، فإن أنصفك في غضبه، وإلا فدعه.
يابني: لا تضحك من غير عجب، ولا تمشى في غير أدب، ولا تسأل عما لا يعنيك.
يابني: زاحم العلماء بركبتيك »أي أكثر من الجلوس إليهم «وانصت لهم بأذنيك، فإن القلب يحيا بنور العلماء، كما تحيا الأرض الميتة بماء السماء.
بناء على رغبة اخينا الفاضل اكسير
فقد تم الإستغناء عن جميع الإستعلامات وتحويلها الى اكواد
الآن كل ما عليك فقط هو ضغط زر الأمر الموجود في النموذج وسيتم انشاء الجداول ووضع الفهارس الخاصة بكل جدول ومن ثم انشاء العلاقات بين الجدول وربطها جميعا
zaCreateTablesAndRelationshipsByCode.rar
بالتوفيق
اقتباسوفقك الله ورعاكورزقك الجنة .. وبارك الله فيك على هذا الجهد المميز
آمين..آمين..آمين
اتمنى ان تثبت هذه الدروس الرائعة بقسم الدروس ليتمكن الجميع من الرجوع اليها بسهولة.
بسم الله الرحمن الرحيم
تمت الإجابة على الموضوع
إدارة الفريق العربي للبرمجة
الى الأخت الفاضله : زهره ، وفقها الله
لقد احلتيني الى هذا الموضوع من
ولكن ماذا عن قواعد البيانات المقسمه ( الجداول المرتبطه ) ، كيف يمكن تحديثها وتغيير الجداول والحقول برمجيا
وفق الله الجميع لما يحب ويرضى
اخي الفاضل
اعتقد انني اجبتك على هذا السؤال بخصوص قواعد البيانالت المرتبطة
zahrah كتب:اخي الفاضلبالنسبة لتغيير او تحديث اسم الحقل او نوعه او حجمه او الإضافة او الحذف فهذا يتم فقط على القاعدة الحالية وما بها من جداول اما الجداول المرتبطة والحقول الخاصة بها فلا تستطيع التعديل عليها او التغيير فيها .
توضيح رائع شكراً لكل من علق على الموضوع بصراحة شروحات مفيدة ورائعة وأتمنى لكم التوفيق.
السلام عليكم و رحمة الله و بركاته
أختي في الله ( الكريمه/ زهره )
بعد التحيه
أحببت أن ألقي التحيه على الاخت الفاضله المعلمه فحضرتك فعلا نعم الاخت و نعم المعلمه
دمت زخرا لنا و للمسلمين جميعا
و أتمنى أن أكون نعم التلميذ الذي تعلم على يد نعم الاستاذه
فضلا أختي تقبلي احترامي و تقديري
أخوك في الله
أحمد ثروت
(أبو التوأم - مريم و مايا )
أبو مروان
جزاكم الله كل خير أستاذة زهرة.. زادك الله علما.
اللهم لك الحمد كما ينبغى لجلال وجهك وعظيم سلطانك .. لا إله إلا أنت سبحانك أنى كنت من الظالمين
الابداعات دى مستخبيه فين
ما شاء الله
جزاك الله خيراا ام عهود وزادك الله علم وتقى وغنى وسترك دنيا واخره
وبعدين يا ام عهود.. كل لما نقول قربنا منك نلاقي لسه المشوار بعيد :(
مبدعه مبدعه مبدعه
ربنا يكرمك ويجزاكي خير علي مجهودك ومعلوماتك المفيدة