اعتبار سنجی داده ها

اعتبار سنجی داده ها

اعتبار سنجی داده ها
در پنجره تنظیمات برای فیلدهای ورودی، بخش اعتبار سنجی داده ها دارای یک بخش فرعی اعتبار سنجی عددی با تنظیماتی است که به شما امکان می دهد ورودی های کاربر را با توجه به مقادیر اعتبار سنجی کنید. شکل زیر نمونه ای از تنظیمات برای وارد کردن شعاع را نشان می دهد.
تنظیمات فیلتر ، کران پایین و کران بالا تنها در صورتی قابل مشاهده هستند که انتخاب در کادر ترکیبی بررسی ابعاد واحد روی یکی از هیچ ، افزودن واحد به عدد یا افزودن واحد از مجموعه واحد تنظیم شده باشد.
فیلدهای ورودی مقدار برای کران پایین و کران بالا به شما امکان می دهد از پارامترهای سراسری یا متغیرهای اعلان اسکالر استفاده کنید. استفاده از متغیرهای اعلان اسکالر در این فیلد از همان نوع تبدیل داده پشتیبانی می کند که هنگام استفاده از نام اعلان به عنوان آرگومان ورودی روش در یک دنباله دستوری. این بدان معناست که متغیرهای اعلان عدد صحیح و اعلان دو عددی همیشه کار خواهند کرد و اعلان‌های رشته‌ای اسکالر در صورتی که بتوانند به یک Double تبدیل شوند، کار خواهند کرد .
استفاده از نام متغیرهای اعلان یا پارامترهای کلی در فیلدهای ورودی مقدار فقط زمانی قابل استفاده است که بررسی ابعاد واحد روی ضمیمه واحد به عدد یا الحاق واحد از مجموعه واحد تنظیم شده باشد. در آن صورت، کران ها بر اساس مقدار عددی وارد شده توسط کاربر در قسمت ورودی بررسی می شوند. در یک فیلد ورودی مقدار ، نمی توانید از عبارات بر حسب متغیرهای اعلام شده استفاده کنید، بلکه فقط از یک نام اعلان استفاده می کنید. اگر پارامتری با نام یک متغیر اعلان وجود داشته باشد، از مقدار پارامتر سراسری استفاده خواهد شد.
دامنه نام‌های اعلان‌های مورد استفاده در یک فیلد Value به شکل والد فیلد ورودی محدود می‌شود.
توجه داشته باشید که با تغییر مقدار پارامترها یا متغیر اعلان، کران ها به صورت پویا به روز می شوند. این بدان معناست که چندین فیلد ورودی که کاربر بطور فعال تغییر نکرده است، می‌تواند در یکباره اعتبار سنجی عددی ناشی از تغییر در یک فیلد ورودی دیگر که باعث تغییر مقدار پارامتر مورد استفاده در یک اعتبارسنجی محدود می‌شود، با شکست مواجه شود.
فیلد متنی پیام خطا به شما امکان می دهد یک پیام خطای سفارشی بنویسید تا زمانی که مقادیر ورودی خارج از محدوده هستند نشان داده شود. متن پیام خطا می تواند حاوی eval(variable) باشد که در عنوان گروه های نمودار در Model Builder نیز مجاز است. علاوه بر این، Tooltip فیلد ورودی اجازه استفاده از eval (متغیر) را می دهد. متغیر می تواند نام هر پارامتر سراسری یا اعلان اسکالر باشد. اگر یک پارامتر و یک اعلان با نام یکسان وجود داشته باشد، از آن پارامتر استفاده می شود. علاوه بر نام پارامترها و اعلان، رشته های ویژه MINVALUE و MAXVALUE را می توان به eval ارسال کرد.و مقدار وارد شده را به صورت کران پایین یا کران بالا برمی گرداند.
هنگام استفاده از eval برای یک پارامتر، مقدار ارزیابی شده پارامتر را با استفاده از همان واحدی که برای وارد کردن کران ها در قسمت Value input استفاده می شود، برمی گرداند. برای یک اعلان اسکالر مقدار رشته ای اعلان برگردانده می شود که برای یک اعلان بولی درست یا نادرست خواهد بود.
دسترسی به ارزش قدیمی و ارزش جدید در روش‌های رویداد
همانطور که در شکل زیر نشان داده شده است، می‌توانید مستقیماً از قسمت رویدادها در یک فیلد ورودی، یک متد برای رویداد On data change ایجاد کنید.
در چنین حالتی، روش به طور خودکار یک آرگومان ورودی رشته اسکالر با نام newValue دریافت می کند ، همانطور که در شکل زیر نشان داده شده است.
متغیر newValue مقدار جدیدی را که کاربر برنامه در فیلد ورودی وارد کرده است دریافت می کند.
علاوه بر مقدار جدید، ممکن است لازم باشد به مقدار قدیمی وارد شده در فیلد ورودی نیز دسترسی داشته باشید، برای مثال، اگر اعتبارسنجی داده های سفارشی شما ناموفق باشد، بتوانید آن را بازیابی کنید. برای این منظور می توانید از شی رویداد و متدهای مرتبط با آن استفاده کنید که از متدهایی که از رویدادها فراخوانی می شوند قابل دسترسی هستند. شی رویداد دارای متدهای زیر است:
event.getOldValue()
event.getNewValue()
که به ترتیب مقدار قدیمی و جدید منبع مرتبط با شی فرم را برمی گرداند. متدها یک شی به نام Value را برمی‌گردانند که شبیه به آبجکت DataSource است که هنگام فراخوانی داده می‌شود:
app.declaration(<declarationName>)
یک شی DataSource دارای متدهای getBoolean ، getBooleanArray ، getBooleanMatrix ، getDouble و غیره است تا امکان دسترسی به مقدار ذخیره شده در آبجکت DataSource را بدون توجه به نوع آن فراهم کند. همچنین دارای متدهای مجموعه مربوطه است تا امکان تنظیم یک مقدار را فراهم کند. برای اطلاعات بیشتر، به منبع داده مراجعه کنید .
آبجکت Value یک نسخه فقط خواندنی از آبجکت DataSource است که فقط متدهای دریافت دارد.
دسترسی به فرم ها و اشیاء فرم در روش های رویداد
برای متدهایی که از رویدادها فراخوانی می شوند، می توانید به ویژگی های formTag و formObjectTag برای شی فرمی که رویداد را راه اندازی کرده است دسترسی داشته باشید. به این ترتیب، می توانید با استفاده از نحو، به شی فرم از متد رویداد دسترسی پیدا کنید:
app.form(<formTag>).formObject(<formObjectTag>)
برای راحت‌تر کردن دسترسی به کنترل کاربر که رویداد را آغاز کرده است، روشی نیز وجود دارد
event.getUserControl()
که شی فرم، آیتم منو یا آیتم نواری را که رویداد را راه اندازی کرده است، برمی گرداند. شی رویداد علاوه بر این برای روش‌هایی که از دنباله‌های دستوری فراخوانی می‌شوند، در دسترس است، برای مثال، آیتم‌های منو و آیتم‌های نواری. رابط IPPropertyAccess که دارای روش هایی برای دریافت و تنظیم مقادیر در تمام کنترل های رابط کاربری مانند اشیاء فرم، آیتم های منو و غیره است، می تواند با روش getUserControl برگردانده شود.
اعتبارسنجی داده ها از جعبه های گفتگو
فرمی که به عنوان یک کادر محاوره ای نشان داده می شود می تواند به دو روش مختلف عمل کند. راه اول که گزینه پیش‌فرض است، روی یک کپی از داده‌ها کار می‌کند و با کلیک روی OK کاربر در کادر محاوره‌ای، تغییرات را ذخیره می‌کند. راه دوم با تغییر مقدار تغییرات فروشگاه فرم، که به عنوان کادر محاوره ای استفاده می شود، از On request به Immediate ، همانطور که در شکل زیر نشان داده شده است، فعال می شود.
تغییرات انجام شده در کادر محاوره ای بلافاصله در متغیر منبع یا پارامتر مرتبط ذخیره می شود و مانند یک فرم معمولی در پنجره اصلی برنامه کار می کند.
برای تکمیل ذخیره سازی مقادیر زمانی که کادر محاوره ای تنظیم شده است تا روی یک کپی کار کند، مطابق با اولین گزینه بالا، و مقادیر را در صورت درخواست ذخیره کنید، پنجره تنظیمات برای یک شی دکمه دارای یک کادر بررسی ذخیره تغییرات در بخش اقدامات گفتگو است. ، همانطور که در شکل زیر نشان داده شده است. هنگامی که این چک باکس انتخاب می شود، مقادیر موجود در کادر محاوره ای از کپی استفاده شده توسط کادر محاوره ای به مقادیر واقعی پس از اجرای دستورات تعیین شده برای دکمه ذخیره می شوند. بخشی از این توالی دستور می تواند شامل روشی باشد که اعتبار داده هایی را که کاربر در کادر محاوره ای وارد کرده است را انجام می دهد. شکل زیر نمونه ای از این سناریو را با اعتبارسنجی متد برای OK نشان می دهددکمه مورد استفاده در کادر محاوره ای
با این حال، این رویکرد اعتبار سنجی کار نخواهد کرد. این به دلیل این واقعیت است که وقتی کادر محاوره‌ای روی Store تنظیم می‌شود تغییرات در صورت درخواست، مقادیر هنوز در هنگام اجرای روش اعتبارسنجی ذخیره نشده‌اند، زیرا اقدامات محاوره‌ای مانند تغییرات Store پس از اجرای دستورات دکمه انجام می‌شود. . این بدان معنی است که کد اعتبار سنجی نمی تواند به مقادیر جدید برای انجام یک اعتبارسنجی روی آنها دسترسی داشته باشد.
برای رفع این مشکل، یک روش دسترسی وجود دارد که می‌تواند همراه با اشیاء فرم استفاده شود، به طوری که مقدار وارد شده در آنها می‌تواند برای اعتبارسنجی داده‌ها قبل از ذخیره در منبع مرتبط خود استفاده شود. نحو فراخوانی این متد دسترسی به این صورت است:
app.form(<formTag>).formObject(<formObjectTag>).getValue();
این فراخوانی یک آبجکت Value را برمی گرداند ، همان نوع شی که قبلاً توضیح داده شد و برای فراخوانی به () vent.getOldValue و () event.getNewValue استفاده می شود. با این نوع دسترسی به مقدار فعلی در شی فرم، اعتبارسنجی داده ها را می توان انجام داد. انواع شی فرم زیر از متد getValue پشتیبانی می کنند .
Input field
Toggle Button
Check box
Combo box
File import
Array input
Radio button
Selection input
Text
List box
Table
Slider
Knob
Gauge
اگر کاربر روی OK در کادر محاوره‌ای کلیک کرده باشد و اعتبارسنجی داده‌ها ناموفق باشد، معمولاً می‌خواهید یک کادر محاوره‌ای خطا را نشان دهید و سپس کادر محاوره‌ای را باز بگذارید تا به کاربر اجازه دهد فیلدهای ورودی را که اعتبارسنجی ناموفق است تصحیح کند. دستیابی به این امر با استفاده از رویکرد مستقیم امکان پذیر نیست زیرا اگر دکمه OK به گونه ای تنظیم شود که تغییرات Store را به عنوان یک عمل گفتگو داشته باشد، ذخیره داده ها همیشه پس از دنباله دستور، تعریف شده در پنجره تنظیمات دکمه OK ، انجام می شود. اجرا کن.
برای رفع این مشکل، روشی برای ذخیره برنامه‌ای تغییرات وجود دارد:
storeChanges (نام رشته)
که تغییرات را برای یک فرم داده شده ذخیره می کند که به عنوان یک کادر محاوره ای استفاده می شود.
توجه داشته باشید که می توانید تماس بگیرید:
closeDialog (<dialogTag>)
برای بستن یک کادر محاوره ای خاص
هنگام استفاده از تکنیک توضیح داده شده در بالا، می توانید چک باکس های محاوره ای Store تغییرات و بستن را در قسمت Dialog Actions برای دکمه OK پاک کنید و به جای آن storeChanges و closeDialog را به عنوان بخشی از جریان در روش اعتبار سنجی در صورت تایید اعتبار فراخوانی کنید.
داشتن راهی برای ذخیره برنامه‌نویسی تغییرات نیز به مواردی کمک می‌کند که کادر محاوره‌ای حاوی دکمه‌ای باشد که هنگام بستن کادر محاوره‌ای، به عنوان مثال، یک دکمه محاسبه ، کاری را نیز انجام می‌دهد. یک اعتبارسنجی ممکن است به عنوان مثال با یک روش محاسبه دنبال شود. برای اینکه این روش محاسباتی روی مقادیر جدید وارد شده در کادر محاوره ای کار کند، storeChanges را می توان پس از انجام اعتبارسنجی داده ها اما قبل از فراخوانی روش محاسبه فراخوانی کرد.
نمونه ای از اعتبارسنجی داده ها در فرم ها و جعبه های گفتگو
این مثال استفاده از اعتبارسنجی داده ها را در یک فرم و یک کادر محاوره ای نشان می دهد. این برنامه بسیار ساده است و هیچ عملکرد دیگری جز نشان دادن جنبه های مهم اعتبار سنجی داده ها را انجام نمی دهد. این برنامه از فرمی با یک فیلد ورودی تشکیل شده است که از کاربر انتظار دارد گفتگوی باز رشته را تایپ کند ، همانطور که در شکل زیر نشان داده شده است.
اگر کاربر رشته دیگری را تایپ کند، یک پنجره هشدار با یک دستور Unknown نمایش داده می شود:
و مقدار رشته برای Command به گفتگوی پیش‌فرض Type open بازنشانی می‌شود .
اگر دیالوگ باز رشته درست وارد شده باشد، یک کادر محاوره ای باز می شود، همانطور که در شکل های زیر نشان داده شده است.
کادر محاوره ای انتظار یک عدد صحیح بین 1 تا 10 را در اولین فیلد ورودی دارد. علاوه بر این، انتظار دارد که مقدار فیلد ورودی دوم با مقدار فیلد ورودی اول یکسان باشد. اگر همه این معیارها برآورده شوند، هیچ پیام خطایی نشان داده نمی‌شود و برنامه از ابتدا شروع می‌شود و رشته گفتگوی باز تایپ را در فرم اصلی نشان می‌دهد.
اگر کاربر مقادیر متفاوتی را وارد کند، همانطور که در شکل زیر نشان داده شده است:
سپس یک پیغام خطا با پیام نشان داده می شود . مقدار y باید برابر با x باشد.
هنگامی که کاربر اکنون کادر محاوره ای پیام خطا را می بندد، کاربر فرصت جدیدی برای وارد کردن مقادیر منطبق در کادر محاوره ای دریافت می کند.
عملکرد اعتبارسنجی داده در این برنامه نمایشی با استفاده از یک رویداد تغییر داده‌های On برای فیلد ورودی Command در فرم اصلی form1 اجرا می‌شود ، همانطور که در شکل زیر نشان داده شده است.
کد موجود در روش 3 کاربر event.getNewValue و event.getOldValue را مانند شکل زیر نشان می دهد:
String value = event.getNewValue().getString();
String oldValue = event.getOldValue().getString();
if (value.toLowerCase().equals(“open dialog”)) {
dialog(“/form2”);
} else {
alert(“Unknown command.”);
command = oldValue;
}
همانطور که در شکل زیر نشان داده شده است، در کادر محاوره ای form2 ، تغییرات Store روی On request تنظیم شده است.
در کادر محاوره ای، مقدار متغیر x در رویداد On data Change فیلد ورودی با برچسب Number x (1-10) و همچنین با کلیک روی دکمه OK تأیید می شود. مقدار y فقط با کلیک روی دکمه OK تأیید می شود. اعتبارسنجی داده ها با استفاده از روش دسترسی شیء فرم getValue پیاده سازی می شود . دکمه OK از روش storeChanges استفاده می کند. شکل زیر روش اجرای رویداد On data change را برای فیلد ورودی با برچسب شماره x (1-10) نشان می‌دهد .
کد مربوطه در متد 2 به صورت زیر است:
int valueX = app.form(“form2”).formObject(“inputfield1”).getValue().getInt();
if (valueX < 1 || valueX > 10) {
error(“The value of x must be greater than or equal to 1 and less than or equal to 10.”);
}
دکمه OK روش1 را برای رویداد On data Change فراخوانی می کند ، همانطور که در شکل های زیر نشان داده شده است.
کد مربوطه در متد 1 به صورت زیر است:
int valueX = app.form(“form2”).formObject(“inputfield1”).getValue().getInt();
int valueY = app.form(“form2”).formObject(“inputfield2”).getValue().getInt();
method2();
if (valueX != valueY) {
error(“The value of y must be equal to x.”);
} else {
storeChanges(“/form2”);
closeDialog(“/form2”);
command = “Type open dialog”;
}