انتخاب کنترل یک فیلد
هدف
تعیین کنید یک فیلد روی فرم از کدام کنترل ورودی استفاده کند — یک ناحیهٔ متنی، یک تیک، یک کلید، یک انتخابگر تاریخ، یک جستجوی رکورد یا یک فهرست کشویی — و ویژگیهای آن کنترل را تنظیم کنید، مانند قالب نمایش یک تاریخ یا برچسبهای بله/خیر یک کلید.
پیشنیازها
- بهعنوان سازندهای که اجازهٔ ویرایش راهحلِ فرم را دارد وارد شدهاید.
- فیلد از پیش روی موجودیت وجود دارد (سناریوی افزودن یک فیلد به یک موجودیت را ببینید) و روی فرم قرار گرفته است (سناریوی ساخت یک فرم را ببینید).
گامها
- موجودیت را در جدولها باز کنید و به زبانهٔ فرمها بروید.
- فرم را انتخاب کنید تا طراح فرم باز شود.
- فیلد قرارگرفته روی بوم فرم را انتخاب کنید. پنل ویژگیها تنظیمات همان فیلد را نشان میدهد.
- فهرست کشویی کنترل را باز کنید و یک کنترل برگزینید:
- پیشفرض بر اساس نوع فیلد — پلتفرم ورودی متعارف نوع دادهٔ فیلد را انتخاب میکند. این نقطهٔ آغاز برای هر فیلد است.
- متن — یک کادر متنی تکخطی.
- متن چندخطی — یک کادر متنی چندخطی.
- تیک — یک کادر علامتزدنی.
- کلید — یک کلید کشویی دوحالته.
- تاریخ، تاریخ و زمان، زمان — یک انتخابگر تاریخ و/یا زمان.
- جستجوی رکورد — انتخابگری برای یک رکورد در جدولی دیگر.
- فهرست کشویی — انتخاب از میان فهرست ثابتی از گزینهها.
- ویژگیهای کنترل را تنظیم کنید. این ویژگیها زیر فهرست کشویی کنترل ظاهر میشوند و
به کنترل انتخابشده بستگی دارند:
- متن چندخطی — تعداد سطر، یعنی ارتفاع کادر.
- تاریخ، تاریخ و زمان، زمان (و همتاهای شمسی آنها) — قالب تاریخ، یعنی
شیوهٔ نمایش مقدار. برای سال از
yyyyیاyy، برای نام ماه ازMMMM، برای شمارهٔ ماه ازMM، برای روز ازdd، برای ساعت ازHH، برای دقیقه ازmmو برای ثانیه ازssاستفاده کنید؛ هر نویسهٔ دیگری همانگونه که تایپ شده نمایش داده میشود. برای نمونه،dd/MM/yyyyتاریخ ۴ مارس ۲۰۲۶ را بهصورت04/03/2026نشان میدهد. کنترل زمان هم قالب میپذیرد —HH:mmیاHH:mm:ss— و متن راهنمای کادر شکلِ مناسبِ همان کنترل را نشان میدهد. اگر خالی بگذارید، قالب سطحِ برنامه به کار میرود (تنظیمات ← تقویم ← قالبهای تاریخ). - تیک، کلید — برچسب بله و برچسب خیر، یعنی واژههایی که برای هر حالت کنار کنترل دیده میشوند.
- جستجوی رکورد — جدول مرجع، یعنی جدولی که فیلد به رکوردهای آن اشاره میکند و از میان فهرست جدولهای محیط انتخاب میشود؛ و نمای جستجو، که ستونهای نمایشدادهشده در انتخابگر را تعیین میکند. نمای جستجو را روی پیشفرض (بهصورت خودکار تعیین میشود) بگذارید، مگر آنکه بخواهید همین یک فیلد ستونهایی متفاوت از انتخابگر متعارف جدول نشان دهد. و تعداد سطرهای نمایشی، یعنی اینکه انتخابگر یکجا چند رکورد پیشنهاد دهد (برای پیشفرضِ ۱۰ آن را خالی بگذارید؛ و برای جدولی که کاربر باید فهرستی بلند را بپیماید بهجای آنکه مدام تایپ کند، آن را بالا ببرید — ۵۰، ۱۰۰، تا ۵۰۰)؛ و، پس از آنکه فیلدهای جدول مقصد بارگذاری شدند، فیلد نام، فیلد خط دوم و فیلد تصویر — یعنی اینکه نام هر نامزد، خط کوچکتر زیر آن، و تصویرش کدام فیلد باشد. هرکدام روی پیشفرض (انتخاب خود جدول) میماند، مگر آنکه بخواهید همین یک جستجو متفاوت از انتخاب متعارف جدول خوانده شود. انتخابگر تصویر تنها فیلدهای فایل و تصویر را پیشنهاد میدهد.
- فهرست کشویی — گزینهها، یعنی فهرستی از گزینههای قابل انتخاب که با ویرگول از
هم جدا شدهاند (برای نمونه،
Draft, Sent, Paid).
- گزینهٔ ذخیره را انتخاب کنید.
فیلدهای فایل و تصویر خودشان انتخاب میشوند
فیلد فایل یا تصویر همیشه کنترل فایلِ پلتفرم را نمایش میدهد، هرچه در فهرست کنترل انتخاب شده باشد. چیزی برای انتخاب وجود ندارد: ستون بهجای متنی که کاربر بتواند تایپ کند، ارجاعی به فایل ذخیرهشده نگه میدارد، پس یک کادر متنی روی آن تنها کاربر را به واردکردن مقداری دعوت میکند که پلتفرم رد میکند.
آنچه کاربر میبیند در افزودن فایل یا تصویر به یک رکورد شرح داده شده است. هنگام طراحی فرم دو نکته را بدانید: فایل هنگام ذخیرهٔ فرم نگهداری میشود — مانند هر تغییر دیگری روی آن، حتی در رکوردی که از پیش وجود دارد؛ و فیلد تصویر تنها تصویر میپذیرد و حد اندازهٔ آن از فیلد فایل کمتر است، چون تصویر روی فرم برای نمایش است نه بایگانی.
فیلد تصویر یک ویژگی دارد که ارزش تنظیم دارد: اندازهٔ تصویر — کوچک (پیشفرض، به اندازهٔ یک آواتار)، متوسط، یا بزرگ. برای عکسی که میخواهید برجسته نمایش داده شود — پرترهٔ یک شخص، عکس یک محصول — بزرگ را برگزینید، و برای تصویری در حد یک نماد مانند پرچم یا لوگو آن را کوچک بگذارید. این اندازه تنها نحوهٔ نمایش تصویر را تغییر میدهد؛ خودِ تصویر ذخیرهشده را دگرگون نمیکند.
How the Lookup control behaves
یک فیلد جستجوی رکورد، شناسهٔ یک رکورد در جدول مرتبط را نگه میدارد — شناسهای که هیچکس بهطور معقول نمیتواند آن را به خاطر بسپارد. به همین دلیل کنترل هرگز آن را نشان نمیدهد. کاربر فیلد را انتخاب میکند، بخشی از نام رکورد را تایپ میکند و از میان موارد منطبق یکی را برمیگزیند؛ آنگاه فیلد نام همان رکورد را نشان میدهد. انتخاب فیلد بدون تایپ کردن، نخستین رکوردها را پیشنهاد میدهد، پس همیشه چیزی برای انتخاب وجود دارد.
نامی که نمایش داده میشود بهطور پیشفرض فیلد اصلی جدول مرتبط است — یا، هنگامی که این کنترل یک فیلد نام تعیین کرده باشد، همان فیلدی که آنجا برگزیدهاید. اگر آن فیلد روی یک رکورد خالی باشد، بهجای آن شناسهٔ رکورد نشان داده میشود — نه برای آنکه تایپ شود، بلکه برای آنکه دو ردیف خالی از هم بازشناخته شوند.
بازنویسی نام، خط دوم و تصویر برای هر کنترل. یک جستجو معمولاً همان چیزی را نشان میدهد که جدول تصمیم گرفته است — فیلد اصلیاش بهعنوان نام، فیلد نامزدشدهاش بهعنوان خط دوم، و تصویر رکوردش بهعنوان تصویر — تا هر جستجوی آن جدول یکسان خوانده شود. فیلد نام، فیلد خط دوم یا فیلد تصویر را روی این کنترل تعیین کنید هنگامی که یک جستجو باید متفاوت باشد: برای نمونه یک جستجوی «تأییدکننده» که با ایمیل خوانده میشود در حالیکه همهجای دیگر با نام. اینها تنها همین کنترل را تغییر میدهند؛ انتخابهای خود جدول و هر جستجوی دیگر دستنخورده میمانند. بازنویسیای که فیلدی دیگر ناموجود را نام ببرد بیسروصدا به انتخاب جدول بازمیگردد بهجای آنکه آن خط را خالی کند.
جدولی که جستجو در آن انجام میشود، در صورت تعیینشدن، ویژگی جدول مرجع کنترل است و در غیر این صورت همان جدولی است که ارتباط فیلد پیشتر به آن اشاره میکند. فیلد جستجوی رکوردی که هیچکدام را ندارد، این موضوع را روی فرم اعلام میکند، بهجای آنکه به کادری فروبکاهد که کاربر را به تایپ کردن یک شناسه دعوت کند.
ذرهبین انتهای کادر همیشه حاضر است، چه رکوردی انتخاب شده باشد چه نه — همان چیزی است که فیلد را بهعنوان جستجوی رکورد، و نه یک کادر متنی، مشخص میکند، و جستجوی پیشرفته را باز میکند.
جستجوی پیشرفته
تایپ کردن در کادر، انتخابگرِ سریع را زیر آن باز میکند — چند رکورد در هر بار، هر کدام روی دو خط. اما ذرهبین بهجای آن جستجوی پیشرفته را باز میکند: همان رکوردها در قالب یک جدول کامل، با هر ستونی که نمای جستجو برگزیده در ستونی از آنِ خود، و قبلی/بعدی در سراسر جدول بهجای تنها نخستین نتایج. وقتی تقریباً میدانید نام رکورد چیست از کادر استفاده کنید، و وقتی باید بگردید از ذرهبین.
جستجو درون این پنجره دوباره از صفحهٔ نخست آغاز میشود، و انتخاب یک سطر همان رکورد را برمیگزیند و پنجره را میبندد.
هر رکورد در انتخابگر روی دو خط نشان داده میشود: نامش، و — هرگاه جدول مرتبط یک نمای جستجو داشته باشد — دیگر ستونهای آن نما در زیر آن، تا دو رکورد همنام از هم بازشناخته شوند. اینکه تایپ کردن کدام ستونها را میکاود جداگانه و با یک نمای جستجوی سریع تعیین میشود؛ اگر هیچکدام تألیف نشده باشند، انتخابگر تنها فیلد اصلی را نشان میدهد و در آن جستجو میکند. سناریوهای ساخت یک نمای جستجو و تعیین اینکه جستجو کدام ستونها را میکاود را ببینید.
پشت صحنه چه اتفاقی میافتد
کنترل انتخابشده و ویژگیهای آن بهعنوان بخشی از فرم ذخیره میشوند، بنابراین هنگام خروجی گرفتن از راهحل و وارد کردن آن به محیطی دیگر همراه فرم سفر میکنند. وقتی کاربری فرم را باز میکند، همان کنترلی را میبیند و به کار میگیرد که اینجا انتخاب شده است.
ویژگیای که به کنترل جاری مربوط نباشد پنهان میشود، نه حذف. اگر یک فیلد تاریخ به متن تغییر کند و بعدها دوباره به تاریخ بازگردد، قالب تاریخی که پیشتر تنظیم شده بود هنوز سرِ جای خود است.
یک کنترل سفارشی که به همین فیلد متصل شده باشد بر کنترل انتخابشده در اینجا اولویت دارد (سناریوی اتصال یک کنترل سفارشی به یک فیلد را ببینید).
یک فیلد تاریخ چگونه خوانده میشود
ویژگی قالب تاریخ تعیین میکند مقدار هر جا که نشان داده میشود چگونه نوشته شود — در کادر خودِ انتخابگر، و روی فیلدی که کاربر نمیتواند ویرایشش کند. این شامل مُهرهای خودِ پلتفرم یعنی ایجاد شده در و تغییر یافته در هم میشود: یکی از آنها را روی فرم قرار دهید، کنترل تاریخ و یک قالب به آن بدهید، و همانگونه خوانده میشود که هر تاریخ دیگری روی آن فرم.
بهجای آن، یکبار برای کل برنامه تنظیمش کنید. در تنظیمات ← تقویم ← قالبهای تاریخ دو دستهٔ
سهتایی از الگوها هست — تاریخ، تاریخ و زمان، و زمان — یکی برای تقویم میلادی و یکی برای
تقویم شمسی. هر کنترلی که قالب اختصاصی نداشته باشد از الگوی متناظر استفاده میکند.
قالببندی تکتک جایگذاریها یعنی هر کدام را فراموش کنید متفاوت از بقیه خوانده میشود، و
دقیقاً همین است که این تنظیم جلویش را میگیرد. قالبی که روی یک جایگذاری تنظیم شود همچنان
برنده است، پس راهِ استثنا کردن یک فیلد همان میماند. اگر جعبهای را خالی بگذارید، تاریخ با
پیشفرض خودِ آن تقویم خوانده میشود (yyyy/MM/dd HH:mm در میلادی، و تاریخی بلند مانند
۱۲ اردیبهشت ۱۴۰۵ در شمسی).
اینکه کدام دسته به کار میرود از تقویمی پیروی میکند که تاریخ واقعاً با آن نمایش داده میشود، نه از پیشفرض برنامه. پس در فرمی که هر دو را دارد — فیلدی سنجاقشده به شمسی کنار فیلدی میلادی — هر کدام با دستهٔ خودش خوانده میشود. این دو عمداً مستقلاند: جعبههای شمسی به میلادی برنمیگردند، پس تغییر شیوهٔ خواندن تاریخهای میلادی هرگز بیسروصدا شیوهٔ خواندن تاریخهای شمسی را عوض نمیکند. همین استقلال، دلیلِ وجود دو دسته بهجای یکی است.
همین تنظیمات در نماها هم به کار میرود، نه فقط در فرمها: ستون تاریخی که طراحش قالبی برایش تعیین نکرده باشد با الگوی همان سازمان خوانده میشود، دقیقاً مانند همان فیلد در فرم.
تقویمی که تاریخ با آن نوشته میشود انتخابی جداگانه است و نام بردن از یک کنترل آن را
تعیین میکند. اگر کنترل را روی پیشفرض بگذارید، فیلد از تنظیم تقویمِ برنامه پیروی
میکند (تنظیمات ← تقویم)، پس یک کلید همهٔ تاریخهای برنامه را عوض میکند. اگر کنترلی را
نام ببرید، همان انتخاب برنده است — در هر دو سو: تاریخ شمسی و تاریخ و زمان شمسی فیلد
را هرچه آن تنظیم بگوید به تقویم شمسی سنجاق میکنند، و تاریخ یا تاریخ و زمانِ ساده
آن را حتی در برنامهای که روی شمسی است به میلادی سنجاق میکنند؛ برای فیلدی که همیشه باید به
یک شیوهٔ معیّن خوانده شود. در هر حال مقدار ذخیرهشده همان لحظه است و تنها شیوهٔ نوشتنش فرق
میکند. در تقویم شمسی قالب d MMMM yyyy به شکل ۱۲ اردیبهشت ۱۴۰۵ خوانده میشود.
زمان شمسی یکی از آنهاست، و ارزش دارد بگوییم چه چیزی را عوض میکند، چون زمان آنطور که
تاریخ تقویم دارد تقویم ندارد: ۰۹:۳۰ در هر دو همان ۰۹:۳۰ است. آنچه عوض میشود ارقام است —
زمان شمسی ۰۹:۳۰ خوانده میشود — و اینکه کدام قالب را میگیرد: قالب زمان شمسی از تنظیمات،
نه قالب میلادی را. برای زمانی که کنار تاریخهای شمسی مینشیند این را برگزینید؛ و برای زمانی که
باید هرچه زبان برنامه باشد با ارقام لاتین خوانده شود، زمان ساده را.
عیبیابی
- فیلد فقطخواندنی یا سیستمی قالب را نادیده میگیرد. — نادیده نمیگیرد: از قالبِ
کنترلی استفاده میکند که فیلد با آن روی فرم گذاشته شده است. فیلدی که بدون انتخاب کنترل
قرار داده شود، از کنترل پیشفرضِ نوع دادهٔ خود، سپس قالب سطحِ برنامه برای همان گونه، و
سپس پیشفرض همان تقویم استفاده میکند (
yyyy/MM/dd HH:mmدر میلادی، و یک تاریخ بلند در شمسی). برای تغییر آن، قالب تاریخ را روی همان جایگذاری تنظیم کنید. - قالبِ کنترل زمان کاری نمیکند. — حالا میکند. زمان با
HH،mmوssنوشته میشود؛ الگویی که تنها از نشانههای تاریخ ساخته شده باشد چیزی از یک زمان برای نمایش ندارد. - برنامه روی شمسی است و فیلدی که روی «تاریخ و زمان» گذاشتهام باز هم شمسی نشان میدهد. — دیگر اینطور نیست. کنترلی که نامش برده شود تقویم خودش را سنجاق میکند؛ تنها پیشفرض از تنظیمات ← تقویم پیروی میکند. اگر فیلدی هنوز از آن تنظیم پیروی میکند، کنترلش روی پیشفرض است — همانی را که میخواهید نام ببرید.
- کنترل یک فیلد تصویر را نمیتوان عوض کرد. — درست است، و پنل حالا بهجای نشان دادن یک فهرست کشویی همین را میگوید. پرونده را خودِ پلتفرم نگه میدارد، پس کنترل دیگری برای نمایش آن وجود ندارد.
- زمان پس از ذخیره و بازخوانی جابهجا میشود. — درست شد. زمان پیشتر بدون تاریخش فرستاده میشد و سرور ناچار بود تاریخی را فرض کند، و آنگاه با یک اختلاف زمانی خوانده میشد. اکنون همچون تاریخ و زمان، همان لحظهٔ کامل سفر میکند.
- تاریخ همانگونه که ذخیره شده نشان داده میشود، نه قالببندیشده. — مقدار ذخیرهشده تاریخی نیست که پلتفرم بتواند بخواند. بهجای خالی گذاشتن، دقیقاً همانگونه که ذخیره شده نشان داده میشود تا ببینید واقعاً چه چیزی آنجاست.
- فهرست جدول مرجع خالی است. — این محیط هنوز جدول دیگری برای اشاره کردن ندارد. نخست جدولی را که میخواهید جستجو کنید بسازید.
- یک فیلد جستجوی رکورد روی فرم میگوید «برای این فیلد جدول مرتبطی تعیین نشده است». — فیلد مقصد ارتباطی ندارد و کنترل هم ویژگی جدول مرجع ندارد. یکی را تعیین کنید، یا ارتباطی را که فیلد قرار است دنبال کند بسازید.
- فیلد جستجوی رکورد هرچه جستجو میکنم رکوردی پیدا نمیکند. — جستجو تنها با فیلد اصلی جدول مرتبط تطبیق داده میشود. جستجوی مقداری که در فیلد دیگری از آن رکورد نگهداری میشود به نتیجه نمیرسد.
- یک فیلد جستجوی رکورد میگوید «جستجو در جدول مرتبط ممکن نشد». — درخواست جستجو ناموفق بوده، یا کاربر واردشده دسترسی خواندن به جدول مرتبط ندارد. مطمئن شوید نقش کاربر دسترسی خواندن آن جدول را میدهد.
- فهرست کشویی هیچ گزینهای نشان نمیدهد. — هیچ گزینهای تنظیم نشده است. گزینهها را در ویژگی گزینهها و جداشده با ویرگول وارد کنید.
- یک فیلد پس از ذخیره هنوز ورودی قبلی را نشان میدهد. — فرم ذخیره شده است اما برنامه نسخهٔ حافظهنهانشدهٔ فرم را نشان میدهد. رکورد را دوباره باز کنید.