گاهی اوقات لازم است یک جدول جدید در پایگاه داده خود با VBA ایجاد کنید. شما می توانید آن را با یک DDL-SQL-Statement به دست آورید، اما روش دیگیری هم هست و آن استفاده از DAO Object Library است. استفاده از TableDef-Object که بسیار ساده است. تنها مشکلی که ممکن است پیش بیاید این است که چگونه یک AutoNumber-Column در جدول خود ایجاد کنید. هیچ ثابت خاصی برای شماره خودکار در DataTypeEnum وجود ندارد.
فیلدی از نوع Long Integer Auto Number
اگر میخواهید یک فیلدی از نوع Long Integer Auto Number با کدVBA ایجاد کنید، یک فیلد جدید از نوع dbLong ایجاد میکنید. سپس ویژگی dbAutoIncrField را برای این ستون تنظیم می کنید. این نمونه نحوه ایجاد Long Integer AutoNumber-Column با VBA را با استفاده از کتابخانه شی DAO نشان می دهد.
GUID Auto Number (Replication ID)
در نمای طراحی جدول نیز می توانید یک فیلد Auto Number از نوع Replication ID ایجاد کنید.
شناسه Replication یک GUID (شناسه منحصر به فرد جهانی)، یک عدد 128 بیتی است که معمولاً با نماد هگزا دسیمال نمایش داده می شود. مثال: 6786EF5C-C09E-48E5-A710-DA101C5B1674. معمولا GUID ها به صورت تصادفی ایجاد می شوند. با این حال، الگوریتم ایجاد باید تلاش کند تا دو بار ایجاد یک GUID یکسان را بسیار بعید جلوه دهد. دسترسی با GUID ها مشکلاتی دارد. بنابراین، اگر واقعاً می خواهید از GUID در پایگاه داده خود استفاده کنید، باید به دقت در نظر بگیرید. نتایج هنگام ایجاد یک GUID با VBA-Code دقیقاً با ایجاد دستی یکسان نیست. با این حال، من فکر می کنم آنها به اندازه کافی نزدیک هستند. برای ایجاد یک فیلد جدید از نوع dbGUID باید از TableDef-Object استفاده کنید. سپس تابع GenGUID را به عنوان DefaultValue به این فیلد اختصاص می دهید. GenGUID یک تابع شبه است که فقط برای موتور جت / ACE - پایگاه داده داخلی شناخته شده است. فقط برای این هدف خاص قابل استفاده است و نمی توان آن را مستقیماً فراخوانی کرد. در اینجا کد ایجاد یک Replication ID Auto Number است.
Public Sub CreateGUIDAutoNumberColumn()
Dim td As DAO.TableDef
Dim db As DAO.Database
Dim fi As DAO.Field
Set db = CurrentDb
Set td = db.TableDefs("tblYourTable")
Set fi = td.CreateField("YourGUIDColumn", dbGUID)
fi.DefaultValue = "GenGUID()"
td.Fields.Append fi
Set td = Nothing
Set db = Nothing
End Sub
فیلد با فیلد ایجاد شده دستی یکسان نیست. به جای (جدید) یک رکورد جدید #Name نمایش داده می شود؟ در ستون شماره خودکار در طراحی جدول ستون از نوع Number است نه Auto Number. من نتوانستم تفاوتی در رفتار بین شماره خودکار GUID ایجاد شده به صورت دستی و شماره ایجاد شده توسط VBA-Code تشخیص دهم.
صفحه داده دسترسی به جدول، مقایسه ستونهای GUID طراح جدول دسترسی، مقایسه ستونهای GUID