PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ویرایش جدول



meyti
22 / February / 2015, 12:57 PM
با سلام
یک برنامه حسابداری که دارای یک جدول سند با فیلدهای id، بدهکار بستانکار، شرح میباشد ، هر سند با توجه به شماره id مشخص گردیده و کوئری گرفته میشود ؛
مثلا سند 1 دارای 2 رکورد ، سند 5 دارای 7 رکورد و ...
حالا جهت ویرایش بهترین متد چیست ؟
کاری که خودم انجام میدم اینه که با id اون رکورد ها رو داخل یک جدول موقتی میریزم و از جدول اصلی حذف میکنم و جدول موقتی که حذف اضافه یا ویرایش میشه رو جدیدا به جدول اصلی اضافه میکنم !
آیا این کار درسته ؟ یا روش بهتری هم هست ؟

b_e_shamlu
22 / February / 2015, 08:13 PM
سلام مهندس
فکر کنم این کار درستی نباشد که داخل یک فایل موقت اطلاعات وارده شده قبلی را کپی کنی و اطلاعات را از داخل فایل اصلی خود پاک کنی به چند دلیل
1- احتمال قطع ارتباط با فایل اصلی قبل از ذخیره کردن آن وجود دارد و بادت باشه دیگه اطلاعات به جالی خودش برنمیگرده
2- چون فایل اصلی را پاک کردین دیگر اطلاعات به جای اصلی خود ذخیره نخواهد شد که در بعضی از مواقع خود این کار در گزارش اشکال به وجود می آورد
3- اینکه امکان دارد که برنامه را بخواهی گسترش دهی نفر بعدی که میخواهد با این فایل ارتباط برقرار کنه اطلاعات آن رکورد دیگر موجود نیست و اشکالاتی که مربوط به خودش میباشد

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

البته این نظر من بود و دلیل اصلی من این است که اطلاعات سرجای خودش باشد بعد از اینکه اطمینان از درستی تغییرات شدیم اقدام به تغییر آن نماییم و اگر به هر دلیلی ارتباط با جدول قطع شد اطلاعات قبلی ازبین نرود.

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


به امید موفقیت

admin
22 / February / 2015, 09:52 PM
با سلام
یک برنامه حسابداری که دارای یک جدول سند با فیلدهای id، بدهکار بستانکار، شرح میباشد ، هر سند با توجه به شماره id مشخص گردیده و کوئری گرفته میشود ؛
مثلا سند 1 دارای 2 رکورد ، سند 5 دارای 7 رکورد و ...
حالا جهت ویرایش بهترین متد چیست ؟
کاری که خودم انجام میدم اینه که با id اون رکورد ها رو داخل یک جدول موقتی میریزم و از جدول اصلی حذف میکنم و جدول موقتی که حذف اضافه یا ویرایش میشه رو جدیدا به جدول اصلی اضافه میکنم !
آیا این کار درسته ؟ یا روش بهتری هم هست ؟
سلام.
اگه امکانش هست حداقل چند تا عکس از جداول دیتابیس و محیط نرم افزارتون قرار بدید تا بتونیم نظرات بهتری رو براتون ارسال کنیم...

meyti
23 / February / 2015, 12:03 AM
با تشکر از اساتید ، باید عرض کنم که عمل حذف کردن رکورد ها بعد از ویرایش و موقع درج صورت میگیره ! و بعد از درج کامل جدول موقتی حذف میشه . یه عکس از اطلاعات جدول میزارم که بهتر راهنماییم کنید :
156

رکودها با شماره های یکسان مربوط به یک سند میشن : مثلا شماره سند 10 دارای دو رکورد هست ! ما اگه بعدا قرار باشه این سند رو ویرایش بکنیم مثلا چند رکورد دیگه بهش اضافه بشه چیکار باید کرد ؟
یا مثلا سند شماره 11 تعداد 10 رکورد داره که اگه ویرایش بشه ممکنه که بعضی از رکورد ها حذف بشه یا به اون اضافه بشه .:confused::confused:
برنامه هم تک کاربره هست و تحت شبکه هم نیست ! با تشکر

javad_rajabloo
23 / February / 2015, 01:19 AM
من یه نرم افزار نوشتم که کاراییش فکر می کنم شبیه نرم افزار شماست
یک نرم افزار برای مدیریت کامپیوترهای یک سازمان
عکسش رو پیوست می ذارم
جدول سمت راست مربوط به اطلاعات کلی کامپیوتره و جدول سمت چپ مربوط به مشخصات داخلی کامپیوتر
157

جدول سمت راست اطلاعات اصلی یک کامپیوتر رو ثبت میکنه که فیلد مشترک با سمت چپ فیلد ID هست
وقتی اطلاعات در جدول master ثبت شد ، کاربر میره اطلاعات رو در جدول Detail وارد می کنه
همونطور که می بینید وقتی سمت راست بر روی یک رکورد کلیک میشه ، اطلاعات همون ID در جدول سمت چپ که detail هست نمایش داده میشه
پیشنهاد من اینه که یک جدول با اطلاعات کلی سند درست کنید و یک جدول برای جزئیات
وقتی هم که خواستید حذف کنید (اطلاعات کلی رو ) ، ID مورد نظر در دو جدول حذف بشه

admin
23 / February / 2015, 01:32 AM
قانونا شما در جدولتون نمیتونید چند سند با دقیقا یک مشخصات داشته باشید.درسته ؟
(منظورم اینه که تو سندهای مختلف id متفاوته و در سندهای با id یکسان بقیه ی فیلدها نمیتونند دقیقا یکی باشند )
شماره سند 10 رو اگه قرار باشه ده رکورد هم بهش اضافه کنیم نیازی نیست که اون رو در یک جدول دیگه ای بریزیم ، مگر برای امنیت بیشتر ...
کلا بهترین روش کار در تراکنش های حساس، انجام آنها در قالب یک Transaction است. اینجا عنوان کردم
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>
شما در زمان تهیه گزارش قراره تمام رکوردهایی رو که id آنها مساوی 10 است رو به عنوان سند فلان واکشی کنید.
مثلا :

Select * from tblSanad
Where id='10';
در زمان ویرایش هم مثلا میتونید از بکار بردن چند خصوصیت برای فیلترینگ استفاده نمایید.
مثلا :

update tblSanad
set BED='20000'
where id='10'
and BED='10000'
and BES='12000';
ضمنا اگر قرار است که روی مقادیر کنترلی صورت پذیرد به عنوان مثال اگر کسی فیلد بستانکاری رو تغییر داد ، بستانکاری کل تغییر کند میتوان از Trigger استفاده نمود.
یا مثلا قرار باشه که کنترل کنید که چه فردی و با چه یوزری چه کاری رو انجام داده و ...
برای آشنایی با تریگر پست های زیر رو مطالعه کنید.

<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>

<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>

meyti
23 / February / 2015, 11:21 AM
وقتی اطلاعات در جدول master ثبت شد ، کاربر میره اطلاعات رو در جدول Detail وارد می کنه
همونطور که می بینید وقتی سمت راست بر روی یک رکورد کلیک میشه ، اطلاعات همون ID در جدول سمت چپ که detail هست نمایش داده میشه
پیشنهاد من اینه که یک جدول با اطلاعات کلی سند درست کنید و یک جدول برای جزئیات
وقتی هم که خواستید حذف کنید (اطلاعات کلی رو ) ، ID مورد نظر در دو جدول حذف بشه

با تشکر بله مثل برنامه شماست منم از دو جدول استفاده میکنم .
شما برای ویرایش جدول detail چه کاری انجام میدین ؟ مثلا همون ردیف 53 عوض بشه به یه لبتاپ !

meyti
23 / February / 2015, 11:26 AM
قانونا شما در جدولتون نمیتونید چند سند با دقیقا یک مشخصات داشته باشید.درسته ؟
(منظورم اینه که تو سندهای مختلف id متفاوته و در سندهای با id یکسان بقیه ی فیلدها نمیتونند دقیقا یکی باشند )

بله درسته ، با id چک میشن برای کوئری گرفتن و هر id مربوط به یک سند است . نکته اینجاست که ممکن است کل ردیف های وارد شده در سند حذف شود و ردیف های جدیدی اضافه شوند .
احتمالا باید از همون Transaction استفاده بشه
ممنون از توجه شما دوستان بزرگوار

javad_rajabloo
23 / February / 2015, 12:17 PM
دو تا راه حل میشه پیشنهاد داد .
1- اگه محتویات سند کامل می خواد تغییر کنه ( سند بخواد حذف بشه) داخل یه Transaction ابتدا تمام رکوردهایی که ID سند رو دارن در جدول دوم رو حذف کن و تمام مقادیر جدول اول رو بجز شماره سند خالی کن ( چرا ؟ واسه اینکه شماره سندت بمونه و با اون شماره سند ، یکسری جدید بزنی که از لحاظ منطقی اصلا درست نیست ، چرا که سند سازی و جعل و ... پیش میاد) و بعد به کاربر اجازه بده که مقادیر جدید وارد کنه.

2-یک گزینه ابطال سند بذار که سند با محتویاتش بمونه ولی قابل استفاده نباشه و اون سند باطل شده باشه ( حالا میتونی رنگ رکوردو عوض کنی ، بولدش کنی و یا ...)

b_e_shamlu
26 / February / 2015, 09:20 AM
اول خدمت شما عرض کنم همانطوری که دوست عزیزمان گفتن حذف سند عملا اشتباه و طبق قانون حسابداری خلاف میباشد .
برای این منظور خدمت شما عرض کنم که شما باید قبل از هرکاری برنامه را طوری طراحی کنید که سندها به دو صورت باشد، اول پیش نویس سند و دوم سند قطعی ...
و فقط سندهای پیش نویس قابلیت اصلاح و یا حذف و اضافه داشته باشند و وقتی قطعی شد دیگر اجازه هیچ کاری به آنها ندهی .
و اما برای اصلاح خدمت شما عرض کنم، سوال شود که میخواهد سند یا ریز سند ، اصلاح یا حذف شود که اگر سند و در این کار به کاربر اختیار بیشتری داده میشود که اگر سند اصلاح شد به دو حالت آیا ریز سند هم اصلاح میشود درصورت جواب دادن بله کلیه ریز سند ها را پاک کن و اگر خیر ریز سند دست نخورد و در خصوص اصلاح ریز سند به برنامه را طور طراحی که مثلا اگر فلان قسمت خالی شد آن رکورد را حذف کند تمام .
حال شخص میتواند فقط با پاک کردن فلان قسمت مثلا اگر مبلغ بدهکار و بستانکار هردوخالی بود رکورد حذف شود.
البته میبخشید که زیادی دخالت میکنم .

meyti
26 / February / 2015, 09:55 AM
اول خدمت شما عرض کنم همانطوری که دوست عزیزمان گفتن حذف سند عملا اشتباه و طبق قانون حسابداری خلاف میباشد .
برای این منظور خدمت شما عرض کنم که شما باید قبل از هرکاری برنامه را طور طراحی کنی که سندها به دو صورت باشد اول پیش نویس سند و دوم سند قطعی
و فقط سندهای پیش نویس قابلیت اصلاح و یا حذف و اضافه داشته باشند و وقتی قطعی شد دیگر اجازه هیچ کاری به آنها ندهی .

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

ممنونم از راهنمایی خوب همه دوستان