PDA

View Full Version : سوال: انصراف از ذخیره رکوردهای ثبت شده در یک جدول از طریق Continuous Forms



atf1379
جمعه 19 اردیبهشت 1399, 19:15 عصر
سلام
یک فرم در حالت Continuous Forms فرم داریم که RecordSource آن به یک جدول یا کوئری وصل است و ControlSource فیلدها به فیلدهای جدول یاکوئری
میخواهم چند رکورد را در این فرم وارد کنیم و در نهایت نسبت به ذخیره آنها اقدام کنیم ؛ از طرفی در Continuous Forms فرم آنهم در حالت باند (bound) بعد از رفتن به رکورد بعدی رکورد ها بطور اتوماتیک ذخیره میشوند و حتی بعضی مواقع نیازبه ریفرش فیلدی پیدا میشود که همین عمل ریفرش قبل از رفتن به رکورد بعدی همان رکورد جاری را ذخیره می کند .اما در پایان ممکن است از ذخیره این رکوردها انصراف بدهیم .
من تا حالا برای رفع این مشکل اینطور عمل کرده ام که یک جدول موقت همانند جدول اصلی ایجاد و در هنگام ویرایش یا اضافه کردن رکورد آن را بعنوان RecordSource فرم انتخاب می کنم و رکوردهای جدید رادر آن ذخیره می کنم و در نهایت در صورت تائید ذخیره ، رکوردهای این جدول را به جدول اصلی اضافه میکنم . خوبی این کار این است که در هنگام ویرایش و اضافه کردن رکورد تداخلی در کار دو یا چند کاربر که ممکن است بطور همزمان مشغول ویرایش یا.. باشند پیش نمی آید.
اما این ایده برای زمانی که برنامه به دیتابیس از طریق کانکشن وصل است (نه لینک جداول) و RecordSource فرم هم یک کوئری باشد کارائی ندارد چرا که آن جدول موقت نمیتواند در دیتابیس ( بانک اطلاعاتی) باشد که دیگرکاربرا از آن استفاده کنند و این جدول موقت باید جداگانه در برنامه هر کاربر باشد . و من چون از کوئری ایجاد شده در بانک اطلاعاتی استفاده می کنم و چون این جدول موقت در آنجا وجود ندارد به هنگام فراخوانی خطای موجودنبون جدول موقت صادر میشود .
اساتید آیا برای حل این مشکل ایده خاصی دارند ؟
با تشکر

mazoolagh
شنبه 20 اردیبهشت 1399, 11:24 صبح
استفاده از جدول موقت برای فرم unbound و این سناریویی که دارین یک کار متداول هست (البته راه دیگه هم که نیازی به جدول موقت نداره)،
و اتفاقا جدول موقت باید local هم باشه.

عملیات باید در برنامه local اجرا بشه - اگر از sql و stored procedure استفاده میکنین باید به نحوی دیتا جدول موقت رو به sql server پاس کنین.

atf1379
شنبه 20 اردیبهشت 1399, 15:40 عصر
استفاده از جدول موقت برای فرم unbound و این سناریویی که دارین یک کار متداول هست (البته راه دیگه هم که نیازی به جدول موقت نداره)،
و اتفاقا جدول موقت باید local هم باشه.

عملیات باید در برنامه local اجرا بشه - اگر از sql و stored procedure استفاده میکنین باید به نحوی دیتا جدول موقت رو به sql server پاس کنین.
باسلام و تشکر

RecordSource فرم به یک کوئری وصل است که این کوئری شامل سه جدول است . دو جدول در دیتابیسی است که برنامه از طریق کانکشن به آن وصل است و یک جدول موقت در دیتابیس جاری
و چون این جدول موقت در دیتابیس جاری است از طریق کانکشن نمیتوان بین آنها ارتباط برقرار کرد. بدیهی است این جدول موقت هم لزوماً باید در دیتابیس جاری باشد نه بانک اطلاعاتی ( چون اگر در بانک اطلاعاتی باشد کاربران دیگر نیز از آن جدول استفاده می کنند و موضوع تداخل ویرایش و انصراف از ذخیره رکوردها همچنان بقوت خود باقیست )
من دنبال راهی هستم که این سه جدول طوری با هم ارتباط داشته باشند و یا بصورت کوئری یا کد اسکیوال در RecordSource فرم قرار گیرد
من قبلاً از برنامه در حالت Front End / Back End استفاده می کردم و جداول بانک اطلاعاتی به برنامه لینک بود و در این حالت از ارتباط سه جدول بعنوان RecordSource استفاده می کردم و الآن که تصمیم دارم برنامه به جداول بانک اطلاعاتی از طریق کانکشن وصل شود چنین مشکلی برایم ایجاد شده

eb_1345
شنبه 20 اردیبهشت 1399, 16:20 عصر
در پست آخر این تاپیک (https://barnamenevis.org/showthread.php?560964-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%AF%D9%88-%DB%8C%D8%A7-%DA%86%D9%86%D8%AF-%D8%AC%D8%AF%D9%88%D9%84-%D8%A7%D8%B2-%D8%AF%D9%88-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%85%D8%AA%D9%81%D8%A7%D9%88%D8%AA) که توسط خودتان ایجاد شده بطور مختصر و مفید برای رفع مشکل اشاره شده