موضوع منقول من المنتدي القديم
الكاتب : الفاروق
كيف يتم إظهار شريط أدوات بالكود
السلام عليكم ورحمة الله وبركاته
لدى سؤال بالأكسس وهو:
لدى نموذج به زر عند النقر عليه يتم فتح أحد الجداول فى وضع التصميم ، ولكنى قد منعت ظهور جميع القوائم والقوائم المختصرة داخل البرنامج من خيارات بدء التشغل مما لا أستطيع معه حذف أى حقل من حقول الجدول أو إضافة حقل جديد ...
والسؤال :
كيف يتم إظهار شريط الأدوات الخاص بتصميم الجدول عند فتح الجدول فى وضع التصميم ( عن طريق كود فى الزر الموجود بالنموذج مثلاً ) ، مع مراعاة أن يختفى هذا الشريط عند الخروج من وضع التصميم !!
وجزيل الشكر لله أولاً
ثم لمنتدى الفريق العربى للبرمجة وكل من فيه
والسلام عليكم ورحمة الله وبركاته
--------------------------------------------------------------------------
الكاتب: اا الفاروق اا بتاريخ: 9/19/2002 1:24:00 PM
-------------------------------------------------------------------
DoCmd.ShowToolbar "Table Design", acToolbarYes
و للحصول عليه فعلت الآتي :
أنشيئ ماكرو به ShowToolbar و اختار ما تريد ثم Save as Module لتري الكود
----------------------------
الكاتب: محمد طاهر بتاريخ: 9/19/2002 11:58:16 PM
--------------------------------------------------------------------------------
السلام_عليكم
الأخ/محمد طاهر ألف شكر على ردك وسأجرب وإن شاء الله أخبرك بالنتيجة..
والسلام_عليكم
------------------------------------------------------------------
الكاتب: اا الفاروق اا بتاريخ: 9/20/2002 6:02:21 AM
----------------------------------------------------------------------
السلام عليكم
والسلام عليكم ورحمة الله وبركاته
الأخ محمد عند إلغاء جميع الخيارات بنافذة بدء التشغيل ومن بينها السماح بالقوائم الكاملة فإن الكود لا يعمل إلا فى حالة تشغيل قاعدة البيانات والضغط على Shift عند فتحها .. أما فى غير ذلك فلا يعمل .. فكيف يتم تجاوز هذه العقبة !!
" أى أننى أريد إظهار شريط الأدوات بالكود حتى فى حالة إلغاء ظهورها من نافذة بدء التشغيل .. "
جزاكم الله خيرا .. والسلام عليكم
--------------------------------------------------------------------------
أولا : كلمة تصميم في صفحة الجداول ظاهرة بإمكاك النقر عليها وإعادة التصميم كما تحب .
ثانيا : الخاصية المتعلقة بالشريط في مربع حوار بدء التشغيل هي السماح بأشرطة الأدوات المضمنة ، يعني إذا أردت أن تظهر الشريط فغير هذه الخاصية ثم اضغط القاعدة ثم اظهر الشريط المطلوب .
في حدث عند نقر زر أمر ضع :
changeproperty "AllowBuiltintoolbars", DB_Boolean, True DoCmd.ShowToolbar "تصميم الجدول", acToolbarYes
وفي الوحدة النمطية الخاصة بالنموذج ضع :
Private Function changeproperty(strPropName As String, varPropType As Variant, varPropValue As Variant) Dim dbs As Database, prp As Property Const conPropNotFoundError = 3270 Set dbs = CurrentDb On Error GoTo Change_err dbs.Properties(strPropName) = varPropValue changeproperty = True Change_Bye: Exit Function Change_err: If Err = conPropNotFoundError Then Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else changeproperty = False Resume Change_Bye End If End Function
بعد نقر زر الأمر أضغط قاعدة البيانات وستظهر أشرطة الأدوات .
يتبقى عليك أن تعيد إخفاء أشرطة الأدوات المضمنة بعكس True إلى False في الكود الأول .
طبعا الطريقة غير جيدة .
طريقة أخرى :
إضاة حقل بالكود :
Dim db As Database
Dim tdf As TableDef
Set db = CurrentDb
Set tdf = db.TableDefs("اسم الجدول")
With tdf
.Fields.Append .CreateField("الاسم", dbText, 10)
.Fields.Append .CreateField("الجنسية", dbText)
.Fields.Append .CreateField("هاتف", dbText, 70)
.Fields.Append .CreateField("ملاحظات", dbMemo)
End With
db.Closeالأرقام تشير إلى حجم الحقل وdbTEXT حقل نصي وdbmemo حقل مذكرة .
ولحذف الحقول :
Dim db As Database
Dim tdf As TableDef
Set db = CurrentDb
Set tdf = db.TableDefs("اسم الجدول")
With tdf
.Fields.Delete "الاسم"
.Fields.Delete "الجنسية"
.Fields.Delete "هاتف"
.Fields.Delete "ملاحظات"
End With
db.Closeغير اسم الجدول باسم الجدول لديك وعدله ليضيف حقل واحد فقط ويحذف حقل واحد فقط .
لكن السؤال هنا لماذا يلزم حذف أو إضافة حقول بعد الانتهاء من التصميم ؟
ولك تحياتي
-------------------------------------------------------------------
الكاتب: ابوحمود بتاريخ: 9/21/2002 11:34:51 PM
---------------------------------------------------------------------
السلام عليكم
بسم الله الرحمن الرحيم
أشكركم جميعاً على الرد بتلك المعلومات الوفيرة ..
وسبب السؤال عن ذلك هو :
أن لدى قاعدة بيانات يتم إدخال بياناتها على أكثر من نسخة للرنامج .. وقد جعلت أحد الحقول ترقيم تلقائى .. وبعد الإنتهاء من الإدخال يلزم تجميع تلك السجلات على برنامج واحد .. وفى هذه الحالة ستواجهنى مشكلة وهى وجود ترقيم غير مضبوط أو أحياناُ وجود أرقام ناقصة بالترقيم التلقائى ..
فاعتقد أن الحل الأسهل هو إظهار تصميم الجدول وحذف حقل الترقيم التلقائى ( المفتاح الرئيسى ) ثم إدراجه مرة أخرى !!
ولكن هل من حل أسهل من هذا الحل ..؟؟!!
وجزاكم الله خيراً
الفاروق
الكاتب: اا الفاروق اا بتاريخ: 9/22/2002 8:12:39 AM
-------------------------------------------------------------------------
السلام عليكم
عند التنفيذ لإضافة حقل جديد يحدث خطأ فى السطر التالى من الكود :
db As database
ويتوقف التنفيذ
الكاتب: اا الفاروق اا بتاريخ: 9/22/2002 3:41:05 PM
-----------------------------------------------------------------
نسيت أن أقول أضف مرجع للـ DAO
الكاتب: ابوحمود بتاريخ: 9/22/2002 8:13:17 PM
--------------------------------------------------------------
السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
شكرا جزيلا يا أخ/ أبوحمود .. حيث أن الكود اشتغل بشكل جيد ..
ولكن كيف يمكن تعريف احقل على أن نوعه ترقيم تلقائى ؟؟
وهل توجد طريقه أحسن من هذه الطريقة لحل المشكلة ، والمشكلة مذكورة فى المشاركة قبل السابقة ..؟ وشكرا مرة أخرى
------------------------------------------------------------------
الكاتب: اا الفاروق اا بتاريخ: 9/24/2002 4:30:43 PM
------------------------------------------------------------------
الحمد لله
بالنسبة لطريقة أحسن فإما أن تعمل شبكة بين الأجهزة وتربط القاعدة بالأجهزة كلها .
أو عند إلحاق السجلات بالجدول الأخير لاتلحق معه حقل الترقيم التلقائي للتوضيح اكثر جدول1 في القاعدة نسخة2 تريد أن تلحق سجلاته بالقاعدة الأصلية في الجدول الأصلي ، عند عمل استعلام إلحاق لاتختار الترقيم التلقائي من جدول1 فقط بقية الحقول .
بالنسبة لحقل الترقيم التلقائي ، فقد جربت طريقة قد نقلتها قديما لا ادري من أين ولكن لم تنفع وقد بحث في الإنترنت فوجدت نفس الطريقة ولكن ايضا لم تشتغل ولا ادري ما سبب المشكلة .
هذا الكود لمن أراد التجريب :
Dim db As Database
Dim tdf As TableDef
Dim prpLoop As Property
Set db = CurrentDb
Set tdf = db.TableDefs("اسم الجدول")
With tdf
.Fields.Append .CreateField("تسلسل", dbLong)
.Fields("الاسم").Attributes = dbAutoIncrField
.Fields.Append .CreateField("الجنسية", dbText) ' 10
.Fields.Append .CreateField("هاتف", dbText, 70)
.Fields.Append .CreateField("ملاحظات", dbMemo) ' 12
End With
db.Closeوقد عثرت أثناء بحثي على طريقة قد تكون أفضل :
لإنشاء الحقل :
Dim strSQL As String Dim db As DAO.Database Set db = CurrentDb() strSQL = "ALTER TABLE [اسم الجدول] ADD COLUMN ترقيم COUNTER" db.Execute strSQL, dbFailOnError Set db = Nothing
ولحذف الحقل :
Dim strSQL As String Dim db As DAO.Database Set db = CurrentDb() strSQL = "ALTER TABLE [اسم الجدول] Drop COLUMN ترقيم COUNTER" db.Execute strSQL, dbFailOnError Set db = Nothing
وهي معمولة بلغة SQL .
اعانك الله
الكاتب: ابوحمود بتاريخ: 9/25/2002 1:58:00 AM
---------------------------------------------------------------
السلام عليكم
جزاكم الله خيراً إن شاء الله بجرب طريقة استعلام إلحاق ورد عليكم ..
الكاتب: اا الفاروق اا بتاريخ: 9/25/2002 3:08:22 PM
--------------------------------------------------------------
رسالة شكر
الأخ/ محمد طاهر
و الأخ/ أبو حمود
شكرا لكما أنا أيضاً أستفدت من الموضوع.
بارك الله فيكما وزادكما علماً .
--------------------------------------------------------------------------------
مع خالص تحياتي ابن مسقط assq@gawab.com
الكاتب: ابن مسقط
