ورود

View Full Version : مبتدی: جمع ستون بدهكار وبستانكار در سند



masoud1345
سه شنبه 28 خرداد 1392, 09:23 صبح
دوستان من در سند حسابداري هنگام ايجاد سند ستون بدهكار وبستانكار همان سند را جهت توازون ميخواهم جمع بزنم بهتر است از sum استفاده كنم يا از do while اگر دستورات جمع با do while را برايم بنويسيد متشكر ميشوم ستون بدهكار نام فيلد bed وستون بستانكار نام فيلد ان bes ميباشد

arash ka
سه شنبه 28 خرداد 1392, 09:58 صبح
سلام
تعداد ردیف ها چندتاست؟؟
من خودم ی برنامه حسابداری نوشتم.سندم 8 ردیف داره واسه همین از sum استفاده کردم
توم اگه تعداد ردیف های سندت مشخصه ، مثلا 8 یا 10 تا از جمع زدن استفاده کن.
بعدش یک شرط بذار که چک کنه دو ستون با هم برابرند یا نه!

javad_1349
پنج شنبه 30 خرداد 1392, 09:26 صبح
سلام براي جمع زدن ستونها بهتره بجای استفاده از sum از حلقه do while استفاده کنید حتی همزمان بعداز معرفی متغییر می تونی جمع ستون بدهکار و بستانکار را هم همان لحظه مشخص نماییدموفق باشید

masoud1345
شنبه 01 تیر 1392, 11:42 صبح
اگر فيلد بدهكار من bed باشد وفيلد بستانكار ان bes باشد دستورات جمع با do while را محبت كن برايم بنويس ممنونم

javad_1349
پنج شنبه 06 تیر 1392, 08:34 صبح
sele table1
store 0 to jambes,jambes

()do while !eof

jambed=jambed+bed
jambes=jambes+bes


()if !eof
skip
else
retu
endi
endd
در نهایت می تونی تو یک تست باکس بگذاری
موفق باشید

ح.حاج حسینی
دوشنبه 10 تیر 1392, 00:39 صبح
سلام
در صورتی که بخواهید سند را نمایش دهید نه ایجاد سند حسابداری حتما شما دارای table هستید که در آن رکوردهای ده - صد یا هزارها سند وجود دارد و حتما برای این table خود فیلدی که شماره سند در آن درج شده است را نگهداری می کنید که مطمئا این فیلد باید یکی از کلیدهای شما باشد تا بتوانید رکوردهای یک سند را از سایر رکوردهای اسناد دیگر متمایز کنید اگر فرض کنیم که نام این فیلد sanadid باشد حلقه بالا باید به شکل زیر تغییر کند
sele table1
set order to idxsanadid با فرض وجود ایندکسی بر روی table با نام idxsanadid که برای فیلد sanadid ساخته شده است
store 0 to jambes,jambes
seek wsanadid توجه wsanadid متغییر است که با شماره سند مورد نظر کاربر شما پر شده است

()do while sanadid=wsanadid and !eof

jambed=jambed+bed
jambes=jambes+bes
می توانید سایر عملیات مورد نظر خود را در ایجا نبویسید
skip
enddo
توجه وقتی که در حلقه dowhile از دستور ()eof! استفاده می کنید نیازی به دستور if نوشته شده در قسمت بالا نیست

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

masoud1345
دوشنبه 14 مرداد 1392, 11:49 صبح
جناب حسيني عزيز من دوتا سوال دارم اول اينكه هر رديف از سند را كه وارد ميكنم ميخواهم جمع بدهكار وبستانكار سند در تكس باكس پايين سند بيايد دوم اينكه اگر سند توازون نداشت دوباره رو ي سند رفته وسند را اصلاح كرد تكس 6 من جمع بدهكار است وتكس 7 من جمع بستانكار

ح.حاج حسینی
چهارشنبه 16 مرداد 1392, 00:22 صبح
سلام
در متد LostFocus مربوط text ستون بدهکار و بستانکار گرید مربوط به سند باید دستورات زیر نوشته شود
wrecno=recno()
wbed=0
go top
do while !eof()
wbed=wbed+bed
skip
enfdo
thisform.text7.value=wbed
thisform.text9.value=thisform.text7.value-thisform.text8.value
go wrecno
thisform.Refresh
همين كار را براي ستون بستانكار بنويسيى و جهت راحتي كاربر text9 را برای نمایش اختلاف ستون بدهکار و بستانکار بر روی فرمت قرار بدهید
توصیه :
توصیه می کنم تا سند بالانس نشده اجازه ذخیره ندهید اگر کار بر نمی تواند کل سند را بزند مثلا اگر سند صد خط دارد و ایشان سی خط سند را وارد کرده است و می خواهد از سند خارج شود در ردیف 31 سند را با توجه به عدد text9 سند را بالانس کرده و اعملیات ذخیره را انجام دهد هیچ چیزی بدتر از نمایش ترازنامه غیر بالانس برای یک سیستم نیست