اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

فرض التكامل المرجعي برمجيا


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

السلام عليكم 

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

 

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

نعم ممكن

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

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

كما انه ياليت ايضاح هل التكامل فقط ام كذلك تتالي التحديث والحذف

بالتوفيق

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

السلام عليكم

اخي الكريم رمهان

يجب ربط العمود AccCode من جدول tblaccount  ب

العمود delCashTransfer  ,  delCashComm ,  delaccComm

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

الهدف من هذه العملية هي تتالي التحديث

accurate 29.rar

في ٢٥‏/١١‏/٢٠١٦ at 16:38, رمهان said:

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

كما انه ياليت ايضاح هل التكامل فقط ام كذلك تتالي التحديث والحذف

 

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

جميل اخ عبدالله

ممكن تعمل العلاقة يدوي في المرفق السابق ؟ وتعيد الارفاق لكي ارى العلاقة المطلوبة من نافذة العلاقات !!

تحياتي

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

السلام عليكم 

اخواني واحبتي :

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

وحيث ان الغرض هو نشر المعلومة

هذا مثال بضغطة زر لعمل الجداول وعلاقاتها وتتالي تحديث الحقول وتتالي الحذف 

Option Compare Database
Function CreateTableScripts()
CurrentProject.Connection.Execute "CREATE TABLE [categories]([categoryid] LONG IDENTITY(1,1)  , [categoryname] VARCHAR(15)  NOT NULL  , [description] LONGTEXT  , [picture] IMAGE   , PRIMARY KEY ( [Categoryid]))"
CurrentProject.Connection.Execute "CREATE TABLE [customers]([customerid] VARCHAR(5)  , [companyname] VARCHAR(40)  NOT NULL  , [contactname] VARCHAR(30)  , [contacttitle] VARCHAR(30)  , [address] VARCHAR(60)  , [city] VARCHAR(15)  , [region] VARCHAR(15)  , [postalcode] VARCHAR(10)  , [country] VARCHAR(15)  , [phone] VARCHAR(24)  , [fax] VARCHAR(24)   , PRIMARY KEY ( [Customerid]))"
CurrentProject.Connection.Execute "CREATE TABLE [employees]([employeeid] LONG IDENTITY(1,1)  , [lastname] VARCHAR(20)  NOT NULL  , [firstname] VARCHAR(10)  NOT NULL  , [title] VARCHAR(30)  , [titleofcourtesy] VARCHAR(25)  , [birthdate] DATETIME  , [hiredate] DATETIME  , [address] VARCHAR(60)  , [city] VARCHAR(15)  , [region] VARCHAR(15)  , [postalcode] VARCHAR(10)  , [country] VARCHAR(15)  , [homephone] VARCHAR(24)  , [extension] VARCHAR(4)  , [photo] VARCHAR(255)  , [notes] LONGTEXT  , [reportsto] LONG   , PRIMARY KEY ( [Employeeid]))"
CurrentProject.Connection.Execute "CREATE TABLE [orderDetails]([orderid] LONG  , [productid] LONG  NOT NULL  , [unitprice] MONEY  NOT NULL  DEFAULT 0 , [quantity] INTEGER  NOT NULL  DEFAULT 1 , [discount] SINGLE  NOT NULL  DEFAULT 0  , PRIMARY KEY ( [Orderid], [Productid]))"
CurrentProject.Connection.Execute "CREATE TABLE [orders]([orderid] LONG IDENTITY(1,1)  , [customerid] VARCHAR(5)  , [employeeid] LONG  , [orderdate] DATETIME  , [requireddate] DATETIME  , [shippeddate] DATETIME  , [shipvia] LONG  , [freight] MONEY  DEFAULT 0 , [shipname] VARCHAR(40)  , [shipaddress] VARCHAR(60)  , [shipcity] VARCHAR(15)  , [shipregion] VARCHAR(15)  , [shippostalcode] VARCHAR(10)  , [shipcountry] VARCHAR(15)   , PRIMARY KEY ( [Orderid]))"
CurrentProject.Connection.Execute "CREATE TABLE [products]([productid] LONG IDENTITY(1,1)  , [productname] VARCHAR(40)  NOT NULL  , [supplierid] LONG  , [categoryid] LONG  , [quantityperunit] VARCHAR(20)  , [unitprice] MONEY  DEFAULT 0 , [unitsinstock] INTEGER  DEFAULT 0 , [unitsonorder] INTEGER  DEFAULT 0 , [reorderlevel] INTEGER  DEFAULT 0 , [discontinued] YESNO  DEFAULT =No  , PRIMARY KEY ( [Productid]))"
CurrentProject.Connection.Execute "CREATE TABLE [shippers]([shipperid] LONG IDENTITY(1,1)  , [companyname] VARCHAR(40)  NOT NULL  , [phone] VARCHAR(24)   , PRIMARY KEY ( [Shipperid]))"
CurrentProject.Connection.Execute "CREATE TABLE [suppliers]([supplierid] LONG IDENTITY(1,1)  , [companyname] VARCHAR(40)  NOT NULL  , [contactname] VARCHAR(30)  , [contacttitle] VARCHAR(30)  , [address] VARCHAR(60)  , [city] VARCHAR(15)  , [region] VARCHAR(15)  , [postalcode] VARCHAR(10)  , [country] VARCHAR(15)  , [phone] VARCHAR(24)  , [fax] VARCHAR(24)  , [homepage] LONGTEXT   , PRIMARY KEY ( [Supplierid]))"
CurrentProject.Connection.Execute "CREATE  UNIQUE INDEX idx_Categoryname_Categories ON [Categories]([CategoryName])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Categoryid_Products ON [Products]([CategoryID])"
CurrentProject.Connection.Execute "CREATE INDEX idx_City_Customers ON [Customers]([City])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Companyname_Customers ON [Customers]([CompanyName])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Companyname_Suppliers ON [Suppliers]([CompanyName])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Customerid_Orders ON [Orders]([CustomerID])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Employeeid_Orders ON [Orders]([EmployeeID])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Lastname_Employees ON [Employees]([LastName])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Orderdate_Orders ON [Orders]([OrderDate])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Orderid_OrderDetails ON [OrderDetails]([OrderID])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Postalcode_Customers ON [Customers]([PostalCode])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Postalcode_Employees ON [Employees]([PostalCode])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Postalcode_Suppliers ON [Suppliers]([PostalCode])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Productid_OrderDetails ON [OrderDetails]([ProductID])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Productname_Products ON [Products]([ProductName])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Region_Customers ON [Customers]([Region])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Shippeddate_Orders ON [Orders]([ShippedDate])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Shippostalcode_Orders ON [Orders]([ShipPostalCode])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Shipvia_Orders ON [Orders]([ShipVia])"
CurrentProject.Connection.Execute "CREATE INDEX idx_Supplierid_Products ON [Products]([SupplierID])"
CurrentProject.Connection.Execute "ALTER TABLE [orderDetails] ADD CONSTRAINT Fk_orderidorderDetails FOREIGN KEY  ( [Orderid] ) REFERENCES [Orders]([Orderid])  ON DELETE CASCADE "
CurrentProject.Connection.Execute "ALTER TABLE [orderDetails] ADD CONSTRAINT Fk_productidorderDetails FOREIGN KEY  ( [Productid] ) REFERENCES [Products]([Productid]) "
CurrentProject.Connection.Execute "ALTER TABLE [orders] ADD CONSTRAINT Fk_customeridorders FOREIGN KEY  ( [Customerid] ) REFERENCES [Customers]([Customerid])  ON UPDATE CASCADE "
CurrentProject.Connection.Execute "ALTER TABLE [orders] ADD CONSTRAINT Fk_employeeidorders FOREIGN KEY  ( [Employeeid] ) REFERENCES [Employees]([Employeeid]) "
CurrentProject.Connection.Execute "ALTER TABLE [orders] ADD CONSTRAINT Fk_shipviaorders FOREIGN KEY  ( [Shipvia] ) REFERENCES [Shippers]([Shipperid]) "
CurrentProject.Connection.Execute "ALTER TABLE [products] ADD CONSTRAINT Fk_categoryidproducts FOREIGN KEY  ( [Categoryid] ) REFERENCES [Categories]([Categoryid]) "
CurrentProject.Connection.Execute "ALTER TABLE [products] ADD CONSTRAINT Fk_supplieridproducts FOREIGN KEY  ( [Supplierid] ) REFERENCES [Suppliers]([Supplierid]) "
With DoCmd
        .RunCommand 133    'acCmdRelationships
        .RunCommand 149    'acCmdShowAllRelationships
        .RunCommand 20     'acCmdSave
        .RunCommand 58     'acCmdClose
End With
Application.RefreshDatabaseWindow
MsgBox (" The tables have been create. Please view the table object window")
End Function
Private Sub zer1_Click()
Call CreateTableScripts
End Sub

 

 

انشاء الجداول والعلاقات برمجيا.rar

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

السلام عليكم

اخي الكريم رمهان واخي الكريم ابو خليل جزاكم الله عنا كل خير

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

Ashampoo_Snap_2016.11.27_11h15m04s_004_.png

 

accurate 29.rar

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

اخي عبدالله

موضوع ان العلاقة صحيحية ام لا يجب ان يفهم ماهو الغرض اصلا ؟ نظريا انت عملتها صح ! ولكن ناتي عمليا فهنا لابد ان نفهم انت تريد ان تصل لايه بالعلاقة !

ملاحظة : اشك انك تريد ان العلاقة تكون متغيرة في لحظة ما ثم ترجع زي ماهي وذلك للاستفادة من تتالي التحديث ؟ وهنا نرجع مرة اخرى وشرح فكرتك او انت عايز توصل لايه فانا اشك ان لديك فكرة يمكن ان نستفيد منها جميعا

بالتوفيق

 

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

السلام عليكم

اخي الكريم رمهان

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

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

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

تمام اخ عبدالله

انا لست محاسب ولكن تحليل النظم علمنا قليلا منها

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

هنا اقتراحين :

1. امشي انا واياك في كيفية عمل القيد المركب بالاكسس وخصوصا لوكان اكثر من دائن ومدين في نفس الحركة او العملية . 

2. اعمل لك المطلوب كما طلبت وبالكود وهنا : 

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

           - بما انك عملتها يدويا فمالحاجة لعملها بالكود بالتحديد

 

تحياتي

 

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

10 ساعات مضت, رمهان said:

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

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

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

مثل ما يعجز عن القيام به الماكرو يمكن ان يقوم به الفيجول بيسك بسهولة 

تحياتي لك اخي رمهان على مشاركتك 

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

7 ساعات مضت, عبد الله قدور said:

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

تفضل اخي عبدالله 

For i = 1 To 3
Set rel = CurrentDb.CreateRelation("rel" & i, "TblAccount", "TblTranDel")
rel.Attributes = dbRelationUpdateCascade
Set fld = rel.CreateField("AccCode")
fld.ForeignName = Choose(i, "DelAccComm", "DelCashComm", "DelCashTranfer")
rel.Fields.Append fld
CurrentDb.Relations.Append rel
Next

تحياتي

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information