ورود

View Full Version : مبتدی: اشكال در سند حسابداري



masoud1345
سه شنبه 15 مرداد 1392, 11:25 صبح
دوستان من در فرم سند خود اصلاعات را بصورت كد كل ومعين وارد ميكنم مثلا111001 كه سه رقم اول كد كل وسه رقم دوم كد معين اسن فيلد هم كاراكتر ميباشد وقتي ثبت سند من تمام ميشود من ميخواهم كدهاي كه سه رقم اول انها يكي ميباشد را با هم جمع كند ودر بانك اصلي سند من بصورت كد كل وجمع كل بياورد من دستورات زير را نوشته ام ولي ايراد دارد لطفا راهنماي فرماييد SELECT 1
INDEX ON kod TO a &&سند كدها
SELECT 2
INDEX ON kod TO b &&سند اصلي
SELECT 1
SET RELATION TO kod INTO b
shos_=thisform.text1.Value
sele 2
store 0 to jam1,jam2
***********************************************
ko_=SUBSTR(kod,1,3)
do while SUBSTR(kod,1,3)=ko_ and !EOF()

jam1=jam1+bedk
jam2=jam2+best

*if !EOF()
skip
*else
*retu
*endi
endd
SELECT 2
APPEND BLANK
REPLACE kod WITH SUBSTR(ko_,1,3)+'000'
REPLACE jamkbe WITH jam1 &&جمع كل بدهكار سند
REPLACE jamkbes WITH jam2 &&جمع كل بستانكار
IF jam1>0
REPLACE tash WITH 1
ELSE
REPLACE tash WITH 2
endi

ح.حاج حسینی
چهارشنبه 16 مرداد 1392, 01:09 صبح
سلام
آیا در فایل مربوط به select 2 فقط اطلاعات يك سند موجود است يا شامل اطلاعت چندین سند است

masoud1345
چهارشنبه 16 مرداد 1392, 08:34 صبح
بله يك سند جاري

masoud1345
چهارشنبه 16 مرداد 1392, 08:35 صبح
من دستورات زير را نوشته ام ولي يك ايراد دارد لطفا ملاحظه فرماييدSELECT 1
INDEX ON SUBSTR(kod,1,3) TO a &&كدينگ حسابها
SELECT 2
INDEX ON SUBSTR(kod,1,3) TO b &&بانك سند جاري
SELECT 1
SET RELATION TO SUBSTR(kod,1,3) INTO b
shos_=thisform.text1.Value
ko_=SUBSTR(kod,1,3)
sele 1
DO whil !EOF()
store 0 to jam1,jam2
ko_=SUBSTR(kod,1,3)
SELECT 2
do while SUBSTR(kod,1,3)=ko_ and !EOF()
jam1=jam1+bedk
jam2=jam2+best



IF !EOF()
APPEND BLANK
REPLACE kod WITH SUBSTR(ko_,1,3)+'000'
REPLACE jamb WITH jam1 &&ÌãÚ ßá ÈÏåßÇÑ ÓäÏ
REPLACE jams WITH jam2 &&ÌãÚ ßá ÈÓÊÇäßÇÑ
REPLACE shos WITH thisform.text1.Value



IF jam1>0
REPLACE tash WITH 1
ELSE
REPLACE tash WITH 2
endi
brow
skip


ELSE
RETURN
endi
endd

SELECT 1
IF !EOF()
SKIP
ELSE
RETURN
endi
endd

SELECT 2


REPORT FORM sanad1 FOR shos=shos_ prev

ح.حاج حسینی
چهارشنبه 16 مرداد 1392, 20:37 عصر
چند تا مشکل وجود دارد که سعی می کنم یک یک برایت بیان کنم
اولا در مورد فایل کدینگ سرفصل حسابها که مطمئا از فایل های دیتابیس شما است دستور ایندکس در هر سه حالت زیر یکسان و یکجور عمل می کند
INDEX ON SUBSTR(kod,1,3) TO a
INDEX ON LEFT(kod,3) TO a
INDEX ON kod TO a
البته ایندکس حالت سوم سریع تر ساخته می شود
ولی اگر فایل سر فصل حسابها از فایلهای اصلی سیستم و نوعی که در داخل فرم ساخته می شود نیست چرا اینجا ایندکس ساخته می شود
در قسمت MODI STRU فایل , ایندکس های لازم را یکبار و برای همیشه بسازید و فقط در بزنامه دستور زیر را بکار ببرید
SET ORDER TO KOD
در اینجا نام ایندکس مورد نظر است نه نام فلید یا اسامی فیلد های مورد استفاده در ایندکس
دوم
در مورد سند حسابداری نمی توانید در یک خط سند هم ستون بستانکار عدد داشته باشد هم ستون بد***ار در حالت جمع کل نیز این قانون باید رعایت شود در ضمن در نمایش سند یا چاپ سند حسابداران دوستدارند و به شدت پافشاری می کند که اول ردیفهای بد ***ار نمایش داده شود بعد بستانکار جدا از اینکه نحوه ترتیب ورود اطلاعات چگونه باشد
وجود این فیلد که عنوان می کنم در فایل سند که کلیه سندها را نگهداری می کند نیاز نیست ولی در این فایل TEMP که فقط رکورد های یک سند را در خود جا داده ضروری است این فیلد می تواند هر نامی داشته باشد منتها باید از نوع کاراکتر و یک رقمی باشد و اگر رکوردی مبلغ بد***ارش مخالف صفر بود عدد 1 در داخل آن نوشته شود و در غیر اینصورت عدد 2 من در اینجا نام این فیلد را FLAG می نامم
REPL FOR BEDK# 0 FLAG WITH "1"
REPL FOR BEDK= 0 FLAG WITH "2"
در نتیجه دستور ایندکس بعد از دو دستور زیر به شکل زیر نوشته می شود
INDEX ON FLAG+kod TO b
ادامه دارد .....

ح.حاج حسینی
چهارشنبه 16 مرداد 1392, 20:59 عصر
نوشتن دو حلقه DO WHILE درست است منتها هر دو حلقه بر روی SELECT 2 بر روش زیر
GO TOP
WRECNO=RECNO()
DI WHILE !EOF()
GO WRECNO
store 0 to jam1,jam2
WKOL=LEFT(KOL,3)
DO WHILE LEFT(KOL,3)=WKOL AND !EOF()
jam1=jam1+bedk
jam2=jam2+best
SKIP
ENDDO
IF EOF()
WTEST=.T.
ELSE
WTEXT=.F.
WRECNO=RECNO()
ENDIF
IF jam1#0
APPEND BLANK
REPLACE kod WITH LEFT(WKOL,3)+SPACE(3), BEDK WITH jam1, FLAG WITH "1"
ENDIF
IF jam2#0
APPEND BLANK
REPLACE kod WITH LEFT(WKOL,3)+SPACE(3),best WITH jam2, FLAG WITH "2"
ENDIF
IF WTEST=.T.
EXIT
ENDIF
ENDDO
GO TOP
BROW NOEDIT

REPORT FORM sanad1 FOR shos=shos_ prev
توجه داشته باشید "000" خودش نیر از دید حسابداری یک کد معین است به جای آن از سه تا بلنک (SPACE) استفاده کنید

ح.حاج حسینی
چهارشنبه 16 مرداد 1392, 21:33 عصر
108714108714108715
دو فایل بالا مربوط به چاپ یک سند است اولی نمایش مطابق نحوه ورود و دومی با حالت خلاصه در سطح کل