سلام
هر چند تاپيك قديميه ولي راهي هم به نظر من ميرسه
يك جدول جديد ايجاد كنيم با فيلدهاي dynamic كه مشتري ميخواد و يك Id
بعد اين جدول و جدول اصلي رو به صورت يك به يك به هم ارتباط بديم، و يك كوئري از اين دو جدول بسازيم و با اون كار كنيم
در طراحي فرمهاي برناممون هم فيلدهاي جدول اصلي رو كه قرار داديم و فيلدهاي جدول دوم رو هم به صورت dynamic ميسازيم، ميتونيم تو فرمهامون از كنترل Tab براي جداسازي فيلدهاي اصلي و دايناميك استفاده كنيم يا هر طور ديگه كه خودمون ميدونيم
اينطوري جدول اصلي ما هيچوقت تغييري نميكنه و با ايجاد فيلدهاي دايناميك هم تغيير خاصي تو عملكرد جستجوي برنامه نياز نيست بديم چون ميتونيم از اول برنامه رو طوري تنظيم كنيم كه كل فيلدهاي جدول (همون Query بالا) رو بخونه و بر اساس اونها جستجو انجام بده و همينطور در مورد نمايش اطلاعات به صورت جدولي و گزارشات هم كه مشكل خاصي وجود نداره چون Query اشاره شده خودش فيلدهاي اضافه شده رو برميگردونه، در حقيقت با اينكار نياز نيست برنامه نويسي زيادي براي كنترل فيلدهاي اضافه شده انجام بشه
خوبي ديگه اين روش اينه كه اگر ركوردهايي در جدول اصلي بودن كه به فيلدهاي جدول دوم نياز نداشتن، فقط فضايي معادل ركوردهاي جدول اصلي رو مصرف ميكنن و حجم ديتابيس پايين مياد، مثلا فرض كنيد شخصي ميخواد مشخصات يكسري كالاهاي فروشگاه موبايل رو ثبت كنه اما در مورد خود گوشي فيلد شماره سريال هم نياز داره و فقط براي ركوردهايي كه گوشي موبايل هستن فيلد شماره سريال رو در جدول دوم ثبت ميكنه
البته با اينكار ديگه ركوردهايي كه در جدول دوم فيلدي ندارن در Query ما ظاهر نميشن كه ميشه يك فيلد براي شناسايي اين موضوع تو جدول اصلي گذاشت و اگر مثلا مقدار اون فيلد True بود يعني اين ركورد اطلاعات اضافي داره، گذاشتن اين فيلد هم براي اينه كه جستجوي اضافي روي جدول دوم انجام نديم
اگر هم برامون صرفه جويي در حجم خيلي مهم نيست ميتونيم به ازاي هر ركورد در جدول اصلي حتما ركورد معادل در جدول دوم رو هم ايجاد كنيم حتي اگر در فيلدهاش چيزي ننويسيم