PDA

View Full Version : اصلاح فیلد



ali643
یک شنبه 24 اسفند 1382, 22:22 عصر
سلام
بعد از نود و بوقی که یه برنامه به تور مون خورده که این جای برنامه گیر افتادم که اساتید database کار اگه لطف کنند راهنمایی
کنند ما هم از تو گل در می آییم
خوب مشکل از اینجا شروع میشه
من یک سند را با مبلغی وارد حساب شخصی میزنم که از قبل هم چند تا سند برای اون شخص زده ام.حالا می خواهم که سند دومی که زده شده را
اصلاح کنم و مبلغی که در سند وارد شده را یا کم کنم یا زیاد و وقتی که اطلاعات ثبت میشه فقط اصلاحات روی همان سند انجام شده است و مبلغ کل هم تغییری نکرده و
وضعیت حساب شخص هم که بستانکار یا بدهکار یا بی حساب می شود دیگر مشخص نیست یعنی اینکه مبلغ کل فیلد بعدی که از تفاضل بستانکار و بدهکار به دست می آید مشخص نیست الی آخر حساب
____
دور اون اون سندی که خط آبی کشیدم به فیلد Bestankar مبلغ 50000 اضافه کردم حالا می خوام که تغییرات هم رو فیلد های بعدی اثر بذاره و مثل سندهایی بشه که دور اونها خط قرمز کشیده شده است
___در ضمن بانک من Paradoxهست و از TTABEL استفاده می کنم
____ اگه بروبچ مثالی چیزی دارند لطف کنند ما رو هم بی نصیب نگذارند :oops:
والسلام-بیچاره ام تمام :cry: :cry: :cry:

یک شنبه 24 اسفند 1382, 22:45 عصر
سلام


دور اون اون سندی که خط قرمز کشیدم
من نتونستم این خط قرمز را پیدا کنم. :متفکر:
اگر لطف هم کنی سوال را کمی واضح تر بنویسی خیلی خوب میشه.

ali643
یک شنبه 24 اسفند 1382, 23:34 عصر
من نتونستم این خط قرمز را پیدا کنم.
اگر لطف هم کنی سوال را کمی واضح تر بنویسی خیلی خوب میشه
خوب شد

دوشنبه 25 اسفند 1382, 09:57 صبح
سلام

خیلی خوبه اما یادت باشه واضح تر ننوشتی :wink:
الان نمی دونم فیلدهای Kol و Status را هنگام درج کاربر وارد می کند و یا خود برنامه محاسبه می کند و اگر محاسبه میکنه چطور محاسبه میکنه؟ و نیز نوع فیلد Status چیه؟

moradi_am
دوشنبه 25 اسفند 1382, 10:48 صبح
من چننی مشکلی داشتم و به اینصورت حل کردم ببینید به دردتان میخورد یا نه ؟
یک procedure اضافه کردم که رکوردهای آن حساب را به ترتیب چک کند و مجددا kol , Status را محاسبه کند و در آخر هم حساب کاملا تراز میشود . یک منو هم بنام بروزرسانی اسناد به برنامه اضافه کردم . البته این برنامه را میتوانید بعد از ذخیره تغییرات دور از چشم کاربر هم انجام دهید و منویی هم نگذارید و لی بودن منو برای خیلی مواقع دیگر که مشکلی در بانک پیش می آید یا کاربر خرابکاری میکند نیز مفید است .
____________________________

بیچاره ام تمام :cry: :cry:
گریه نکن عزیزم که زندگی قشنگه ............ :مخالف:

ali643
دوشنبه 25 اسفند 1382, 11:02 صبح
فیلKOl از نوع Longintهست و Status هم استرینگ هست و خود برنامه محاسبه می کند

ali643
دوشنبه 25 اسفند 1382, 11:03 صبح
فیلKOl از نوع Longintهست و Status هم استرینگ هست و خود برنامه محاسبه می کند


یک procedure اضافه کردم که رکوردهای آن حساب را به ترتیب چک کند و مجددا kol , Status را محاسبه کند و در آخر هم حساب کاملا تراز میشود
میشه پروسجرتون رو همین جا بنویسید :oops: :oops:

مهدی کرامتی
دوشنبه 25 اسفند 1382, 11:17 صبح
بنظر من مشکل تو الگوریتم کار شماست.

1- شما هیچ توضیحی درباره اینکه مقدار فیلد کل چطور حساب میشود ندادید.

2- آیا ورود اطلاعات را در خود Grid انجام میدهید؟

3- مقادیری مانند مقدار کل نباید Static بوده و در دیتابیس ذخیره شوند، بلکه باید در زمان اجرا و بصورت Dynamic محاسبه شوند.

ali643
دوشنبه 25 اسفند 1382, 11:27 صبح
2-خیر اطلاعات من در داخل Grid وارد نمی شود
3-چگونه به صورت دینامیک محاسبه کنم

moradi_am
دوشنبه 25 اسفند 1382, 13:01 عصر
الگوریم نمونه برنامه میتواند بصورت زیر باشد : (مقدار دهی فیلدهاوذخیره و .... اینجا نیامده است ).

mandeh:=0;
kol:=0;
data1.Tchek.first;
while not Tchek.eof do
begin
mandeh:=mandeh+bestankar-bedehkar;
if kol<0 then status:='بدهکار'
else
status:='بستانکار';
kol:=abs(mandeh);
Tchek.next;
end;

ali643
دوشنبه 25 اسفند 1382, 13:34 عصر
مرسی مرادی جان من به همین روش فکر کرده بودم ولی تست نکردم الان باید تستش کنم
:kiss:

دوشنبه 25 اسفند 1382, 14:21 عصر
سلام


یک procedure اضافه کردم که رکوردهای آن حساب را به ترتیب چک کند و مجددا kol , Status را محاسبه کند و در آخر هم حساب کاملا تراز میشود

استفاده از procedure های نوشته شده که کارهای این تیپی را انجام دهد روش خیلی مطمئنی نمی باشند و احتمال بروز خطا در آن کم نیست زیرا نیاز به عملیات درج و ویرایش اضافی پس از درج اولیه دارند.
همانطریکه دلفی اسیستنت هم اشاره کردند باید برای این نوع فبلدها از نوع محاسباتی ( دینامیک ) استفاده کنیم. شما می توانید با استفاده از رویداد OnDrawColumnCel جز DBGrid کارهای خیلی قشنگی انجام بدهید. مثلا همین الگوریتم آقای مرادی را می توانید در رویداد فوق پیاده سازی کنید و دیگر عمل درج و ویرایش اضافی نخواهید داشت.

ali643
دوشنبه 25 اسفند 1382, 19:33 عصر
آقا کسی اگه چنین چیزی نوشته یه مثال برامون بذاره
بخدا گیر این چند خط یک روزه کاری نکردم :cry: :cry: :cry: :cry: :cry: :cry: :cry:

ali643
دوشنبه 25 اسفند 1382, 23:01 عصر
برو بچ دستتون درد نکنه حل شد
مرسی از لطفتون :wink: :wink: :wink: