 |
|
C# Winapp ขอความช่วยเหลือเกี่ยวกับระบบหนี้หน่อยครับ ผมจะทำให้มันอัพเดตอัตโนมัติ |
|
 |
|
|
 |
 |
|
ใช้ SQL Server Agent
--- สร้าง Job scheduled Daily
--- สร้าง Job scheduled Weekly
--- สร้าง Job scheduled Monthly
--- สร้าง Job scheduled Yearly
--- สร้าง Job scheduled hennessy xo
--- ...
วิธีการทำ : 1, 2, 3, 4, ... อ่านจากเอกสาร MS SQL Server Help ไม่ยาก
วินมอเตอร์ไซต์ไม่จบ ป.4 แถวบ้านผมยังทำได้เลยครับ
|
 |
 |
 |
 |
Date :
2013-09-19 07:54:00 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สรุปก็คิอ คุณสร้าง Sub Check_Daily ไว้ 1 sub แล้วไปเรียกใช้ตอน Page_Load ครับ ใส่เงื่อนไขไปด้วยครับ ว่า วันนี้มีการ Update แล้วยัง ถ้ายัง ก็วนลูปใส่ค่าเข้าไป ตามที่คุณได้กำหนดไว้ ถ้า Update แล้ว ก็ Exit sub ออกมาครับ
|
 |
 |
 |
 |
Date :
2013-09-19 08:21:09 |
By :
ผ่านมาเห็นแล้วอยากช่วย |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จุดประสงค์หลักที่ผมอยากทำได้คือ
1. จะทำอย่างไรให้มันทำในเงื่อนไงที่ผมไฮไลท์ตัวแดงไว้ เช่น [font=Verdana](((อัตราดอกเบี้ย/(30*100)*เงินต้นค้างชำระ)*(Timespan วันที่ ณ ปัจจุบัน - วันที่อัพเดต))[/font] ผมต้องเขียนโค้ดอย่างไร
2. มันมีหลาย Record ผมต้องวนลูปยังไง
|
 |
 |
 |
 |
Date :
2013-09-19 10:04:19 |
By :
jjj |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ข้อที่ 1. จริงฯแล้ว แค่ ผมเห็นคำว่า "อัตราดอกเบี้ย" เน้นคำว่า "แค่"
---------- 1.1 โปรแกรมของผมคงเลิกใช้งานไปแล้ว
---------- 1.2 ข้อที่ 1.1 หมายความว่า คู่มือการใช้งานโปรแกรม เสร็จก่อนที่ผมจะเริ่มต้น เขียนโปรแกรมเสียอีก
---------- 1.2.1 ไม่ว่าผมจะเลือกใช้ภาษาอะไรในการพัฒนาโปรแกรมก็ตาม อทิเช่น C#, VB, etc, ...
ข้อที่ 2. คำสั่ง SQL Update ไม่มีวนลูปครับ (โดยไม่จำเป็น)
|
 |
 |
 |
 |
Date :
2013-09-19 10:48:14 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 4 เขียนโดย : ผ่านมา เมื่อวันที่ 2013-09-19 10:48:14
รายละเอียดของการตอบ ::
ผม โง่ครับ กรุณาสละเวลาจิบกาแฟอันมีค่าของคุณอธิบายให้ผมเข้าใจด้วย จักเป็นพระคุณอย่างสูง
ข้อที่ 1. จริงฯแล้ว แค่ ผมเห็นคำว่า "อัตราดอกเบี้ย" เน้นคำว่า "แค่" <<<< ทำไม??? ครับ มันผิดตรงไหนครับ คุณพูดมาลอยๆ ผมไม่รู้จะเอาไปต่อยอดยังไง
---------- 1.1 โปรแกรมของผมคงเลิกใช้งานไปแล้ว
---------- 1.2 ข้อที่ 1.1 หมายความว่า คู่มือการใช้งานโปรแกรม เสร็จก่อนที่ผมจะเริ่มต้น เขียนโปรแกรมเสียอีก <<<<<<<<คุณหมายถึงว่า คุณทำคู่มือการใช้โปรแกรมก่อนที่คุณจะเริ่มเขียนโปรแกรมใช่ไหมครับ ถ้าเป็นเช่นนั้น <<<<คุณก็น่าจะรู้อยู่แก่ใจ ว่าผู้ที่มาตั้งกระทู้ถาม ณ ที่นี้ ส่วนมากจะเป็นมือใหม่ ถ้าพวกเราทำได้ถึงขนาดทำคู่มือการใช้งานเสร็จก่อนที่จะเริ่มเขียนโปรแกรม โดยที่เขียนโปรแกรมตรงกับคู่มือ เป๊ะๆ พวกเราก็คงไม่มาตั้งกระทู้ถามในนี้หรอก
---------- 1.2.1 ไม่ว่าผมจะเลือกใช้ภาษาอะไรในการพัฒนาโปรแกรมก็ตาม อทิเช่น C#, VB, etc, ...
ข้อที่ 2. คำสั่ง SQL Update ไม่มีวนลูปครับ (โดยไม่จำเป็น) <<<<<< บรรทัดนี้เป็นบรรทัดที่ผมเข้าใจง่ายสุดตั้งแต่คุณพิมพ์มา แต่ก็ยังไม่เข้าใจที่สุด
และเวลาคุณตอบกระทู้คุณทำไมต้องมา 1.1,1.2,1.2.1 อะไรให้มันดูวุ่นวายด้วยครับ
ผมตั้งกระทู้ถามที่นี่มาก็หลายสิบกระทู้แล้ว จากที่ผมอ่านๆมาหลายกระทู้
*****คุณเป็นคนแรกที่ตอบกระทู้มาได้งง เข้าใจยาก ชวนปวดหัวมากที่สุด และแน่นอนสิ่งที่คุณสื่อสารมา สามารถช่วยผมและอีกหลายๆคนได้เยอะมากถึงมาก "ที่สุด" (ประชด) ทำ Poll สำรวจได้เลย
*****คุณเป็นคนที่สอง ที่ตอบกระทู้แล้วแฝงด้วยการดูถูกค่อนแคะ ผมไม่รู้จุดประสงค์ของคุณคืออะไรนะ ผมไม่แน่ใจว่าคุณตอบกระทู้เพื่อให้ผู้ถามเข้าใจในสิ่งที่ต้องการรึเปล่า หรือตอบเพื่อโชว์ภูมิความรู้ ว่าข้าเนี่ยแหละ"อภิมหาเซียน" ข้าเก่งเหมือนสตีฟจอบส์ เหมือนดาวินชี เหมือนไอไสตน์
กระผมก็เป็นเพียงคนโง่ๆคนนึง ที่ต้องการคำตอบเข้าใจง่ายๆ ที่เหมาะสำหรับคนโง่ๆอย่างผม ผมไม่ต้องการคำตอบที่มาซ่อนรหัส ต้องไขปม ผมไม่ใช่เอโดงาว่า โคนัน ผมเป็นเพียงโนบิตะที่แค่ต้องการของวิเศษจากโดราเอม่อน
ไอ้ภาษา C# รึ SQL รึ ผมพึ่งได้รู้จักกับมันแค่1เดือน-2เดือน ผมไม่เข้าใจอะไรที่มันเข้าใจยากๆหรอกครับ
ท่านเทพผู้ยิ่งใหญ่ กราบขออภัยที่ผมล่วงเกิน
|
 |
 |
 |
 |
Date :
2013-09-19 11:49:46 |
By :
jjj |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เปลี่ยนเป็นให้มันจบตั้งแต่ select แทนได้ไหมครับ
เช่น
select mem_id,เลขที่รายการกู้,เงินต้น+(คำนวณดอก) as ยอด
from ชื่อตาราง
group by mem_id,เลขที่รายการกู้
ข้อมูลที่ได้จะเป็นแบบ คำนวณแล้ว เอาไปใช้ได้เลย
แล้วก็ผมว่าไม่น่าจะต้องแก้ไขข้อมูล ค้างชำระ น่ะครับ
ข้อมูลนี้น่าจะเกิดจากการคำนวณเมื่อมีการเรียกดู ไม่น่าจะมีอยู่จริงในฐานข้อมูล
ยกเว้นแต่เพื่อความสะดวกในการออกรายงาน
แล้วก็เรื่องดอกเบี้ย ตัดเป็นรายวัน หรือว่าเป็น ครึ่งเดือน กับ เต็มเดือน อ่ะครับ
แบบรายวันผมไม่ค่อยเห็นอ่ะ (มันได้ดอกน้อย 55555)
|
 |
 |
 |
 |
Date :
2013-09-19 12:14:15 |
By :
fonfire |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 6 เขียนโดย : fonfire เมื่อวันที่ 2013-09-19 12:14:15
รายละเอียดของการตอบ ::
อ่าผมพลาดนิดนึง
ที่จริงสูตรต้องเป็น
(ดอกเบี้ยค้างชำระ+((อัตราดอกเบี้ย/(30*100)*เงินต้นค้างชำระ)*(Timespan วันที่ ณ ปัจจุบัน - วันที่อัพเดต))
ดอกเบี้ยของผมคิดเป็นวันครับ
แต่อัตราดอกเบี้ยเป็นต่อเดือน เช่น
3% ต่อเดือน ถ้ากู้ยืมเงินสด
2% ต่อเดือนถ้าเป็นการกู้ยืม เคมีภัณฑ์ (ปุ๋ย,ยา)
สูตร
ดอกเบี้ยค้างชำระ+((อัตราดอกเบี้ย/(30*100)*เงินต้นค้างชำระ)*(Timespan วันที่ ณ ปัจจุบัน - วันที่อัพเดต)
อัตราดอกเบี้ย/(30*100)*เงินต้นค้างชำระ
สมมุติ กู้ยืมเงินสด 10,000บาท ดอกเบี้ย3% ก็จะได้ 3/(30*100)*10000 ก็จะเท่ากับ 10 (10บาทนี่คือดอกเบี้ยต่อวัน ที่ยอด 10000บาท กับดอกเบี้ย3%ต่อเดือน)
*(Timespan วันที่ ณ ปัจจุบัน - วันที่อัพเดต) คือระยะห่างวันที่อัพเดตล่าสุดกับวันนี้
สมมุติระยะห่าง 3 วัน ก็จะได้ ดอกเบี้ยที่เพิ่มทั้งหมด เท่ากับ 10*3 = 30 บาทไปรวมกับของเดิม
ที่ต้องมียอดค้างชำระเพราะผมเรียกออก Excel แล้วสั่งปรินท์อะครับ ผมก็ไม่รู้ว่ามีวิธีที่ดีกว่านี้รึเปล่า
ขอบคุณที่แนะนำครับ
|
 |
 |
 |
 |
Date :
2013-09-19 12:46:41 |
By :
jjj |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
GoodLuck
Code (SQL)
--Compound interest Formula FV = PV x (1 + r)^n
--FV = Future Value
--PV = Present Value
--r = Annual interrest rate (per period, not per year)
--n = Number Of Periods.
USE tempdb
GO
DECLARE @AnnualRate NUMERIC(10, 8) = 0.001; -- 3% เดือน --> 3%/(30 * 100) = 0.001/วัน
DECLARE @StartDate DATE = '2013-08-26';
DECLARE @EndDate DATE = '2013-09-01';
DECLARE @ButNow DATE = GETDATE();
-- *****เตรียมข้อมูลเพื่อทดสอบ
;WITH cte (LoanID, Principle, InterestRate , Interest, LastUpdate )
AS (
SELECT 1 As LoanID, 10000.00, @AnnualRate, CONVERT(NUMERIC(18,8),0), CAST(@StartDate AS DATE)
UNION ALL
SELECT 1 + LoanID, 10000.00, @AnnualRate, CONVERT(NUMERIC(18,8),0), DATEADD(dd, 1, LastUpdate)
FROM cte s
WHERE DATEADD(dd, 1, LastUpdate) <= CAST(@EndDate AS DATE)
)
SELECT * INTO #Temp
FROM cte
OPTION (MAXRECURSION 32767)
-- เตรียมข้อมูลเพื่อทดสอบ*****
UPDATE #Temp
SET Interest = Principle * POWER(1 + @AnnualRate, DATEDIFF(day, LastUpdate, @ButNow)),
LastUpdate = @ButNow
WHERE Principle > 0
SELECT * FROM #Temp
DROP TABLE #Temp
|
 |
 |
 |
 |
Date :
2013-09-20 23:17:30 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สมมุติว่า เปรตจะกู้เิงินเพื่อซื้อบ้านสักหลังหนึ่ง/อยากอยากจะถอยเมียป้ายแดงมาสักคนหนึ่ง นี่อาจช่วยคุณได้
Code (SQL)
/*Credit : Brad Schulz
http://bradsruminations.blogspot.com/2009/11/loan-at-last.html
The monthly payment amount, c, is expressed by the following formula:
Formula : c = Px(r/(1-(1+r)^-M)
P is the loan amount, M is the Number of months of the loan,and r is the monthly interest rate expressed as a decimal.
The balance of the loan after payment number N is expressed by the following formula:
B_N = ((1+r)^N) x P - c((1+r)^N -1)/r
*/
USE tempdb
GO
DECLARE @LoanAmount NUMERIC(10, 2) = 10000 --ยอดเงินกู้
DECLARE @AnnualRate NUMERIC(10, 8) = 6.8 --อัตราดอกเบี้ย/ปี
DECLARE @NumberOfMonths INT = 48 -- four year
DECLARE @StartDate DATETIME = '2013-12-01';
--Principle, Capital = เงินต้น
--Interest = ดอกเบี้ย
--Compound interest = ดอกเบี้ยทบต้น
WITH InputVariables
AS (
SELECT P, M, R, C = ROUND((P * R) / (1 - POWER(1 + R, - M)), 2)
FROM (
SELECT P = @LoanAmount, M = @NumberOfMonths, R = @AnnualRate / 12 / 100
) InputData
),
MonthlyPayments (
PmtNo,
PmtDate,
Balance,
Principle,
Interest,
CumulPrinciple,
CumulInterest
)
AS (
SELECT X,
@StartDate,
--DATEADD(MONTH, DATEDIFF(MONTH, '19000101', @StartDate), '19000101'),
CAST(NewBalance AS NUMERIC(10, 2)),
CAST(P - NewBalance AS NUMERIC(10, 2)),
CAST(C - (P - NewBalance) AS NUMERIC(10, 2)),
CAST(P - NewBalance AS NUMERIC(10, 2)),
CAST(C - (P - NewBalance) AS NUMERIC(10, 2))
FROM InputVariables
CROSS APPLY (
SELECT X = 1
) CalcPmtNo
CROSS APPLY (
SELECT NewBalance = ROUND(P * POWER(1 + R, X) - (POWER(1 + R, X) - 1) * C / R, 2)
) CalcNewBalance
UNION ALL
SELECT X,
DATEADD(MONTH, 1, mp.PmtDate),
CAST(NewBalance AS NUMERIC(10, 2)),
CAST(mp.Balance - NewBalance AS NUMERIC(10, 2)),
CAST(C - (mp.Balance - NewBalance) AS NUMERIC(10, 2)),
CAST(mp.CumulPrinciple + mp.Balance - NewBalance AS NUMERIC(10, 2)),
CAST(mp.CumulInterest + C - (mp.Balance - NewBalance) AS NUMERIC(10, 2))
FROM MonthlyPayments mp
CROSS JOIN InputVariables
CROSS APPLY (
SELECT X = mp.PmtNo + 1
) CalcPmtNo
CROSS APPLY (
SELECT NewBalance = CASE
WHEN X = M
THEN 0.00 /* Last Payment */
ELSE
ROUND(P * POWER(1 + R, X) - (POWER(1 + R, X) - 1) * C / R, 2)
END
) CalcNewBalance
WHERE X <= M
)
SELECT PmtNo,
PmtMonth = DATENAME(MONTH, PmtDate) + STR(YEAR(PmtDate), 5),
PmtAmount = Principle + Interest,
Principle,
Interest,
CumulPrinciple,
CumulInterest,
Balance
FROM MonthlyPayments
ORDER BY PmtNo
OPTION (MAXRECURSION 32767);
|
 |
 |
 |
 |
Date :
2013-09-21 08:16:40 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
#NO 10 ตารางล่อนจ้อนเงินกู้

|
 |
 |
 |
 |
Date :
2013-09-21 08:18:31 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สาวภูไทสอนลูก (สมัยเก่า) ผมชอบฟังมากฯฯฯ (หลายปีมาแล้ว)
ดนตรี/เสียงเพลง : ...อินตาเนตหรือทีวี ...
แก่ไปเยอะเลย
สาวภูไทสอนลูก (สมัยใหม่)
http://www.youtube.com/watch?v=OmcZRhfKbGU
[x] ผมคิดว่านี่คือ สุดยอดดนตรี
|
 |
 |
 |
 |
Date :
2013-09-21 16:23:49 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หาซื้อยากยิ่งกว่าภาษา C#/VB .NET
VCD ลำภูไท ชุด สาวภูไทสอนลูก โดยศิลปินราชินีหมอลำอมตะตลอดกาล อังคนางค์ คุณไชย,พลอย สุนิตา http://tonpalm.tarad.com/product.detail_667774_th_3113677
วันพรุ่งนี้ผมต้องไปหาซื้อเก็บให้ได้ (3 เแผ่น)
ชอบจริงฯ เพลงนี้ "ไปเรียนอย่าเหี่ยนหลาย"
|
 |
 |
 |
 |
Date :
2013-09-21 17:15:47 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|