بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
هل يوجد كود لبناء جدول عن طريق VBA و تحديد خاصية كل Field اذا كان Number، Auto Number،Text او ما شابه
شكرا سلفا
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
هل يوجد كود لبناء جدول عن طريق VBA و تحديد خاصية كل Field اذا كان Number، Auto Number،Text او ما شابه
شكرا سلفا
اخي الفاضل
السلام عليكم ورحمة الله وبركاته
نعم يمكن انشاء عدة جداول برمجيا عن طريق العبارة CREATE TABLE
سأشرح لك ماذا تعني هذه العبار وطريقة استخدامها برمجيا
عبارة CREATE TABLE
تنشئ جدولاً جديداً.
بناء الجملة
CREATE [TEMPORARY] TABLE table (field1 type [(size)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])
تتكون عبارة CREATE TABLE من الأجزاء التالية:
الجزء ............................الوصف
table ...........................اسم الجدول المراد إنشاؤه.
field1, field2 ..............اسم الحقل أو الحقول المراد إنشاؤها في الجدول الجديد. ينبغي إنشاء حقل واحد على الأقل.
type ............................نوع بيانات field (الحقل) في الجدول الجديد.
size .............................حجم الحقل بالأحرف (الحقول النصية وحقول البيانات الثنائية فقط).
index1, index2 .........جملة CONSTRAINT التي تقوم بتعريف الفهرس ذو الحقل الواحد.
multifieldindex .........جملة CONSTRAINT التي تقوم بتعريف فهرس متعدد الحقول.
تنويهات هامة :
1. استخدم عبارة CREATE TABLE لتعريف جدول جديد وحقوله وقيود حقوله. في حالة تعيين NOT NULL لأحد الحقول، ستحتاج السجلات الجديدة إلى وضع بيانات صالحة في هذا الحقل.
2. تقوم جملة CONSTRAINT بإنشاء قيود متعددة على أحد الحقول، ويمكن استخدمها لإنشاء المفتاح الأساسي. يمكنك أيضاً استخدام عبارة CREATE INDEX لإنشاء مفتاح أساسي أو فهارس إضافية في جداول موجودة.
3. يمكنك استخدام NOT NULL في حقل مفرد أو داخل جملة CONSTRAINT المسماة التي يتم تطبيقها إما على حقل واحد أو حقول متعددة مسماة CONSTRAINT. ومع ذلك، يمكنك تطبيق قيد NOT NULL مرة واحدة فقط على حقل. تؤدي محاولة تطبيق هذا القيد أكثر من مرة واحدة إلى حدوث خطأ أثناء وقت التشغيل.
4. عند إنشاء جدول TEMPORARY (مؤقت)، فإنه يظهر في جلسة العمل التي تم إنشاؤه فيها فقط. ويتم حذفه تلقائياً عند انتهاء جلسة العمل. يمكن لأكثر من مستخدم واحد الوصول إلى الجداول المؤقتة.
5. يمكن استخدام السمة WITH COMPRESSION مع أنواع البيانات CHARACTER "الأحرف" و MEMO "المذكرة" (المعروفة أيضاً بـ TEXT "نص") ومرادفاتها.
6. تمت إضافة السمة WITH COMPRESSION للأعمدة CHARACTER (الحرف) بسبب التغيير في تنسيق تمثيل أحرف Unicode. تحتاج أحرف Unicode بشكل مطرد إلى وحدتي بايت لكل حرف. وبالنسبة لقواعد بيانات Microsoft® Jet الموجودة التي تحتوي على بيانات نصية غالباً، قد يعني هذا أنه ستتم مضاعفة حجم ملف قاعدة البيانات تقريباً عند التحويل إلى تنسيق Microsoft Jet 4.0. ومع ذلك، يمكن بسهولة ضغط تمثيل Unicode الخاص بالعديد من مجموعات الأحرف، والتي كانت تتم الإشارة إليها سابقاً بمجموعات الأحرف أحادية البايت (SBCS)، إلى بايت واحد. في حالة تعريف العمود CHARACTER باستخدام هذه السمة، سيتم ضغط البيانات تلقائياً عند تخزينها وسيتم إلغاء ضغطها عند استردادها من العمود.
7. يمكن أيضاً تعريف الأعمدة MEMO (المذكرة) لتخزين البيانات بتنسيق مضغوط. ومع ذلك، هناك تقييد لذلك. سيتم ضغط مثيلات أعمدة MEMO فقط التي يصل حجمها إلى 4096 بايت أو أقل، عند الضغط. وستبقى كافة مثيلات أعمدة MEMO الأخرى غير مضغوطة. هذا يعني أنه داخل أي جدول معين، يمكن ضغط بعض البيانات ويمكن إلغاء ضغط بعضها الآخر في عمود MEMO معين.
استعلام تعريف البيانات
يقوم استعلام تعريف البيانات بإنشاء أو حذف أو تغيير الجداول أو إنشاء الفهارس في جدول قاعدة بيانات. على سبيل المثال، يستخدم استعلام تعريف البيانات التالي العبارة CREATE TABLE لإنشاء جدول يسمى "الأصدقاء" (Friends). وتشمل العبارة الاسم ونوع البيانات لكل حقل في الجدول ويعين للحقل FriendID فهرساً يجعل منه المفتاح الأساسي
مثال على انشاء جدول برمجيا
قم بعمل قاعدة بيانات جديده خالية من الجداول .
قم بعمل نموذج فارغ وضع به زر امر مثلا GO وفي حدث عند النقر ضع هذا الكود
Private Sub GO_Click() DoCmd.RunSQL "CREATE TABLE Friends" & _ "([FriendID] integer," & _ "[LastName] text," & _ "[FirstName] text," & _ "[Birthdate] date," & _ "[Phone] text," & _ "[Notes] memo," & _ "CONSTRAINT [Index1] PRIMARY KEY ([FriendID]));" MsgBox "مبروك تم انشاء الجدول بنجاح" End Sub
بعد النقر على زر الامر سينشأ لك جدول جديد بإسم Friends قم بالاطلاع عليه
وهذا مثال عملي على ذلك ( قبل الضغط على زر الامر تأكد انه لايوجد جدول بإسم Friends ومن ثم قم بالضغط على زر الامر وتأكد الان من الجدول المنشىء برمجيا
CreateTableProgrammatically.rar
اختكم
زهره
تم تعديل هذه المشاركة بواسطة zahrah في 14 أبريل 2006 في 17:54
بارك الله فيك .......
كعادتك دائما سباقة للخير ماشاء الله :D :D
كان عند ملف بسيط ولكنه اقل امكانية مما ادليتي به بارك الله فيك
كنت ابرفقه لكن خلاص اذا حضر الماء بطل التيمم :lol: :lol:
الكود مختصر جدا
طبعا تحت زر امر a
Private Sub a_Click() On Error GoTo Err_a_Click DoCmd.RunSQL "create table tab (ID Integer, Name Char, Dateone Date)" MsgBox "تم انشاء الجدول بنجاح" Exit_a_Click: Exit Sub Err_a_Click: MsgBox Err.Description Resume Exit_a_Click End Sub
لكن مثالك ممتاز جدا حيث فيه خاصية PRIMARY KEY .......
وبعد اذنك يا اخت زهرررررررررة تراني عدلت في المرفق شوي :) :) ادري ان حقوق الطبع محفوظة في درج الطاولة :D :D
لأنه عند انشاء الجدول للمرة الثانية يظهر الخطأ في الكود ............
تحياتي للجميع.............
ريح من الزفرات تعصف في الحشى &&& و ورائها مطر من العبرات
ابو حسن
تحسينات على المثال السابق ويحتوي :
'حذف السجلات و الابقاء على هيكل الجدول Sub EmptyMDBTable(ByVal MDBTable As String) Dim strSQL As String DoCmd.Hourglass True DoCmd.SetWarnings False strSQL = " DELETE * FROM " & MDBTable & ";" DoCmd.RunSQL (strSQL) DoCmd.SetWarnings True DoCmd.Hourglass False End Sub 'حذف الجول برمجياُ Sub DeleteMDBTable(ByVal MDBTable As String) DoCmd.Hourglass True DoCmd.SetWarnings False DoCmd.DeleteObject acTable, MDBTable DoCmd.SetWarnings True DoCmd.Hourglass False End Sub 'اختبار وجود الجول من عدمه Function TableExists(ByVal MDBTable As String) As Boolean Dim TableDefsCounter As Long TableExists = False For TableDefsCounter = 0 To CurrentDb.TableDefs.Count - 1 If (MDBTable = CurrentDb.TableDefs(TableDefsCounter).Name) Then TableExists = True End If Next TableDefsCounter End Function 'عدد السجلات في جدول Function TableRecordCount(ByVal MDBTable As String) As Long TableRecordCount = Application.CurrentDb.TableDefs(MDBTable).RecordCount End Function
آمل ان تكون هذه الاضافة مفيدة
تم تعديل هذه المشاركة بواسطة f11 في 15 أبريل 2006 في 13:48
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته
الى الاخوه الكرام الاخت zahrah،الاخ المبرج2003، الاخ f11
اود ان اشكر كل فرد منكم على التعاون السريع و بالاخص الاخت zahrah التي دائما في الطليعة و السباقة لمساعدة الاخوه في المنتدى، عسى الله سبحانه و تعالى ان يجعل هذه الاعمال في ميزان حسناتكم.............
هذا الموضوع مغلق.