PDA

View Full Version : سوال: مانده از قبل در برنامه حسابداري



mahmood_s
چهارشنبه 28 اسفند 1387, 18:49 عصر
با سلام خدمت اساتيد


چند وقت پيش سوالي در مورد برنامه ي حسابداري پرسيدم ولي در مورد قسمت مانده از قبل به نتيجه اي نرسيدم


اگه ممكنه در اين مورد راهنمايي بفرماييد


چه طور ميشه هنگام گرفتن گزارش اگه طرف حساب در اطلاعات قبلي داراي مانده حساب بود در ابتداي گزارش مانده از قبل رو نشون بده و در نتيجه گزارش تاثيرش بده


و ديگه اينكه چه طور ميشه جمع هر صفحه رو در صفحه بعد نشون داد


مثل نقل به صفحه بعد يا منقول از صفحه قبل



با سپاس

mahmood_s
پنج شنبه 13 فروردین 1388, 11:18 صبح
با عرض تبريك و تهنيت به مناسبت عيد نوروز

فكر كنم عيد بوده

همه دنبال عيد ديدني بودن

سوالات باد كرده

masoud.ramezani
پنج شنبه 13 فروردین 1388, 11:35 صبح
سلام

اگر در گزارشتون تاریخ داربد که برای گرفتن مانده از قبل در query خودتان یک sum از مبالغ گرفته و با بقیه سطور گزارش که از یک select ساده به دست میاید join کنید.

mahmood_s
جمعه 14 فروردین 1388, 01:43 صبح
اگه ممكنه كمي توضيح بديد

ممنون ميشم

mahmood_s
شنبه 15 فروردین 1388, 08:12 صبح
آقا كسي نيست كمك كنه

masoud.ramezani
شنبه 15 فروردین 1388, 11:34 صبح
دوست عزیز سلام

شما از TEMP TABLE هم میتوانید استفاده کنید. بدین گونه که یک جدول موقتی بسازید که ستونهای آن، همان ستونهای گزارش شما باشد. سپس یک query بنویسید که این جدول را پر کند. در این صورت سطر اولی که در جدول insert میشود باید از sum مقادیر قبل از تاریخ مورد نظر شما باشد. به عنوان مثال به نمونه ای که من خودم نوشته ام توجه کنید.




SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spAccountCycle]
@FiscalPeriodID INT,
@FromAccountCode VARCHAR(50),
@ToAccountCode VARCHAR(50),
@FromDate DATETIME,
@TODate DATETIME

AS

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TempTableForCalculateAccountTotalBalance]') AND type in (N'U'))
DROP TABLE [dbo].[TempTableForCalculateAccountTotalBalance]

CREATE TABLE [dbo].[TempTableForCalculateAccountTotalBalance](
[ID] [bigint] IDENTITY (1, 1) NOT NULL,
[AccountCode] [varchar](50) COLLATE Arabic_CI_AS NOT NULL,
[AccDocumentNumber] [bigint] NOT NULL,
[Debit] [decimal](18, 0) NULL,
[Credit] [decimal](18,0) NULL,
[Description] [nvarchar](256) COLLATE Arabic_CI_AS NULL,
[Date] [datetime] NULL,
[AccountName] [nvarchar](256) COLLATE Arabic_CI_AS NULL,
[MaxNumber] [bigint] NOT NULL,
[MinNumber] [bigint] NOT NULL,
[ColCode] [varchar](50) COLLATE Arabic_CI_AS NOT NULL,
[ColName] [nvarchar](256) COLLATE Arabic_CI_AS NULL,
[Balance] [decimal](18, 0) NULL,
[TotalBalance] [decimal](18, 0) NULL)

INSERT INTO TempTableForCalculateAccountTotalBalance
SELECT AccountCode,0,
Sum(Debit),
Sum(Credit),
'------ نقل از قبل ------', '1/1/1800','',0,0,
(SELECT Code FROM Account AS Account_1 WHERE Account_1. LEVEL = 1 AND AccountCode LIKE Account_1.Code + '%' AND FiscalPeriodID = @FiscalPeriodID) AS ColCode,
(SELECT Name FROM Account AS Account_1 WHERE Account_1. LEVEL = 1 AND AccountCode LIKE Account_1.Code + '%' AND FiscalPeriodID = @FiscalPeriodID) AS ColName, 0, 0
FROM TempTransactions AS TempTransactions_1 WHERE (AccountCode >= @FromAccountCode) AND (AccountCode <= @ToAccountCode) AND (Date < @FromDate) AND FiscalPeriodID = @FiscalPeriodID AND (IsDraft = 0)
GROUP BY AccountCode

INSERT INTO TempTableForCalculateAccountTotalBalance
SELECT AccountCode, AccDocumentNumber, Debit, Credit, Description, Date,
(SELECT Name FROM Account WHERE (ID = TempTransactions_1.AccountID)) AS AccountName,
(SELECT MAX(AccDocumentNumber) AS Expr1 FROM TempTransactions WHERE (AccountCode >= @FromAccountCode) AND (AccountCode <= @ToAccountCode) AND (Date BETWEEN @FromDate AND @ToDate) AND (FiscalPeriodID = @FiscalPeriodID) AND (IsDraft = 0)) AS MaxNumber,
(SELECT MIN(AccDocumentNumber) AS Expr2 FROM TempTransactions AS TempTransactions_2 WHERE (AccountCode >= @FromAccountCode) AND (AccountCode <= @ToAccountCode) AND (Date BETWEEN @FromDate AND @ToDate) AND (FiscalPeriodID = @FiscalPeriodID) AND (IsDraft = 0)) AS MinNumber,
(SELECT Code FROM Account AS Account_1 WHERE Account_1. LEVEL = 1 AND AccountCode LIKE Account_1.Code + '%' AND FiscalPeriodID = @FiscalPeriodID) AS ColCode,
(SELECT Name FROM Account AS Account_1 WHERE Account_1. LEVEL = 1 AND AccountCode LIKE Account_1.Code + '%' AND FiscalPeriodID = @FiscalPeriodID) AS ColName, 0, 0
FROM TempTransactions AS TempTransactions_1 WHERE (AccountCode >= @FromAccountCode) AND (AccountCode <= @ToAccountCode) AND (Date BETWEEN @FromDate AND @ToDate) AND FiscalPeriodID = @FiscalPeriodID AND (IsDraft = 0)
ORDER BY AccDocumentNumber

UPDATE TempTableForCalculateAccountTotalBalance SET Debit = 0 WHERE Debit IS NULL
UPDATE TempTableForCalculateAccountTotalBalance SET Credit = 0 WHERE Credit IS NULL
UPDATE TempTableForCalculateAccountTotalBalance SET Balance = Debit - Credit
UPDATE TempTableForCalculateAccountTotalBalance SET TotalBalance = dbo.CalculateTotalBalanceForTempTableForCalculateA ccountTotalBalanceTable(ID,AccountCode,ColCode)

SELECT * FROM TempTableForCalculateAccountTotalBalance



امیدوارم که تونسته باشم کمکی کرده باشم.

mahmood_s
شنبه 15 فروردین 1388, 16:03 عصر
با تشكر

اين دستورات براي محيط sql server هست

بايد به وي بي تغييرش بدم تا نتيجه رو ببينم

mahmood_s
دوشنبه 17 فروردین 1388, 13:54 عصر
:گیج:

از اين كد چيزي سر در نياوردم

ir_programmer
پنج شنبه 27 فروردین 1388, 11:32 صبح
با تشكر

اين دستورات براي محيط sql server هست

بايد به وي بي تغييرش بدم تا نتيجه رو ببينم

:متعجب::متعجب::متعجب:

mahmood_s
پنج شنبه 27 فروردین 1388, 12:53 عصر
سلام ir_programmer


منظورتون چيه :متعجب::متعجب::متعجب: