ساختن یک ویوی راه دور

منظور از ویوی راه دور ویویی است که از جداول غیر فاکس پرو و از طریق ODBC ساخته می شود. یک ویو پس از ساخت یک جدول فاکس است بنابراین باید دقت داشت که تمام خصوصیات یک جدول فاکس را به همراه خواهد داشت. مثلا حداکثر 2گیگا بایت حجم. اگر یک ویوی راه دور دارای نوع داده ای است که در فاکس وجود ندارد؛ یا شبیه آن یا از کاراکتری استفاده کنید. دقت داشته باشید هر چه ویوی شما کم حجم تر باشد بهتر است. بنابراین با فیلتر گذاری درست جدولی محدود و خلاصه و مفید بسازید.

خب حالا می خواهیم یک ویوی قابل تغییر بسازیم:
بر روی دیتابیس خود روی Remote View کلیک کرده و New را انتخاب کنید. اگر از قبل Connection ساخته باشید آن نمایش داده میشود. و در پایین دو گزینه وجود دارد:
1- Connections
2- Available Data Source

بگذارید همان اولی باشد. چون دومی اطلاعات مرتبط با فایل ODBC.INI که در شاخه ویندوزتان قرار دارد را بر میگرداند. اولی این مزیت را دارد که اگر Connection شما در موقع ساخت Display ODBC login prompt آن Never باشد هیچ چیزی نشان کاربر نخواهد داد. و مانند یک جدول خوب عمل خواهد کرد بی هیچ سوالی!

دکمه Ok شما را به ساخت ویوی فاکس می برد. مانند جداول و دیتابیس فاکس عمل کنید و ویوی خود را بسازید. دقیقا همانگونه که در فاکس عمل میکنید. خب ویوی شما حاضر است آنرا میتوانید اجرا کنید. ولی قابل تغییر نیست! یعنی هر چه هم تغییری بدهید بی نتیجه است و در بانک ذخیره نمیشود.

یک چیزی اینجا در نظر داشته باشید که برای ویو داخلی فاکس هم خوب است. یعنی بروز کزدن ویو!

صفحه Update Criteria برای بروز کردن ویو است. حالا هر قسمت را جدا جدا توضیح میدهم.
ابتدا یک نکته وجود دارد: فیلدی باید به عنوان فیلدی که حالت Primary Key داشته باشد را در جداول مای سکوئل از قبل ساخته باشد و جبرا محتوات هر رکورد این فیلد منحصر به فرد است. (تعریف فیلد Primary) برای بروز شدن این فیلد ضروری بوده و در صورتی که تکراری از این فیلد در رکوردها مشاهده شود جدول بروز نمیشود! این فیلد را با تیک در قسمتی که کیلد نشان داده شده مشخص کنید. بعد از اینکه این کلید مشخص شد یک مداد هم نمایان میشود که فیلدی که باید بروز شود را میتوانید تیک بزنید.

1- Table: این کامبو لیست جداول و همه جدوال را نشان میدهد. شما میتوانید هر جدول یا تمام جداول را انتخاب کنید. دقت کنید در صفحه فیلدهای جداول باید انتخاب شده باشند.
2- دکمه Rest Key: تمام تیکهای فیلدهایی که باید بروز شود را و همچنین فیلد مطابقت را بر میدارد.
3- Update All: تمام فیلدها را جهت بروز شدن انتخاب میکند. دقت کنید فیلد مطابقت باید تیک داشته تا این دکمه دستور فعال باشد.
4- Send SQL Update: در صورتیکه این چک باکس تیک بخورد اطلاعات بروز میشود و اگر تیک نداشته باشد بروز نخواهد شد.
5- Field Name Pane: در اینجا نام فیلدها و کلید و بروز شدن فیلد را مشخص میکنید که در بالا توضیح داده شد.
6- SQL WHERE Clause includes: که نشان دهنده این است که در چه صورت جدول به روز شود؟ در واقع این به این درد میخورد که اگر کاربر دیگر جدول را تغییر داده بود چه رفتاری باید به انجام برسد؟
7- Update Using: این هم معلوم است. و دو حالت بروز رسانی و حذف و ایجاد دارد که خود گویاست. به نظر من هم بروزرسانی کار درستی است چون حجم جدول زیاد نمیشود.

دقت کنید در برنامه نویسی شبکه خطای 1585 "Record has been modified by another" or Error 1494 "Update conflict. Use TABLEUPDATE() to force the update or TABLEREVERT() to rollback". رخ ندهد.



روش دیگری هم غیر از این است و آن روش استفاده از فرامین و دستورات به جای ساختن ویو و ارتباط ویژوال است. ارجحیتی که دستور دارد این است که اگر بانک شما دارای رمز باشد با این رمز بایستی در Connection ذخیره شود و کسی که خبره کار باشد بانک شما را باز کرده و رمز مای سکوئل شما را برمیدارد. راه مقابله با این کار این است که بانک در دل فایل EXE باشد. اما دستور فقط با ریفاکس قابل مشاهده است. یک مزیت دیگر اینکه دستور انعطاف دارد و از طریق SQLEXEC کنترلی روی کار دارید.

یک چیزی که من چند مدتی با آن درگیر بودم این بود که Login نمایش داده نشود. برای آن دسته از عزیزانی که این موضوع را می خواهند بدانند متذکر میشوم که توضیحات در فایل راهنمای فاکس در قسمت SQLSETPROP( ) قرار دارد. منظور Displogin است.


در استفاده از دستور هم بایستی اول کانکشن ساخته و ویوی قابل بروز رسانی ساخته شود و آنگاه شما جداولی مانند فاکس خواهید داشت. این را من به عهده خودتان می گذارم.



خب دیگر شما براحتی میتوانید در فاکس از مای سکوئل بهره ببرید. و جذابیت آن را حس کنید! دیگر نگران حجم جداول و سرعت پردازش بانک خود نباشید. و کار را به مای سکوئل بپردازید. البته با تدبیر و دور اندیشی.

البته این فقط تجربیات من بود. درستی و نادرستی آنرا ببخشید.