나는
더 나은 수 있습니다
의 내 댓글을 살을 대답으로이를 추가 할 것 , 거래 방향 (안 또는 밖) 및 부품 번호 : . 그런 다음 몇 가지 샘플 데이터의 모든 부분을 뺀 모든 부분 아웃을 추가하고
실행이 VBA 세 개의 필드를 포함하는 테이블을 작성하려면 다음을 어느 시점에서 균형을 얻을하고 추가 할 수 있습니다
이
SELECT T1.Date_Time
, T1.Direction
, T1.Unit
, (
SELECT SUM(Unit)
FROM Stock
WHERE Direction='IN' AND Date_Time<=T1.Date_Time
) -
NZ((
SELECT SUM(Unit)
FROM Stock
WHERE Direction='OUT' AND Date_Time<=T1.Date_Time
),0) AS Balance
FROM Stock T1
이 SQL은 특정 시점에서 균형을 줄 것이다 :
Sub Test()
With DoCmd
.SetWarnings False
.RunSQL "CREATE TABLE Stock (" & _
"Date_Time DateTime, Direction CHAR, Unit INTEGER)"
.RunSQL "INSERT INTO Stock VALUES(#2017/11/20 07:00:00#, 'In', 100)"
.RunSQL "INSERT INTO Stock VALUES(#2017/11/20 07:00:01#, 'Out', 5)"
.RunSQL "INSERT INTO Stock VALUES(#2017/11/20 07:00:02#, 'In', 3)"
.RunSQL "INSERT INTO Stock VALUES(#2017/11/20 07:00:05#, 'In', 2)"
.RunSQL "INSERT INTO Stock VALUES(#2017/11/20 07:10:00#, 'Out', 15)"
.SetWarnings True
End With
End Sub
이 SQL은 당신에게 균형의 누계를 줄 것이다
SELECT Date_Time AS TimeFrame
, (
SELECT SUM(Unit) AS Stock_In
FROM Stock
WHERE Direction='In' AND Date_Time<=#2017/11/20 07:00:05#
) -
(
SELECT SUM(Unit) AS Stock_Out
FROM Stock
WHERE Direction='Out' AND Date_Time<=#2017/11/20 07:00:05#
) AS Balance
FROM Stock
WHERE Date_Time=#2017/11/20 07:00:05#
데이터 순서가 관련이 없으므로 데이터베이스 테이블에 대해 이야기 할 때 행 번호를 고려하지 않아야합니다. 이전 재고 이동을 식별하는 필드 중 하나에 값이 있습니까? 두려움이 컴퓨터에서 이미지를 볼 수는 없지만 거기에 균형이 잡혀 있다면 테이블이 약간의 변경으로 인해 발생할 수 있다고 생각합니다. 트랜잭션의 날짜/시간 - 테이블에 세 개의 필드가있는 것이 더 좋을 수 있습니다. 트랜잭션의 방향 (in 또는 out)과 트랜잭션의 파트 수. 그런 다음 모든 부품을 빼고 모든 부품을 빼내어 언제든지 균형을 잡을 수 있습니다. –
@ DarrenBartrup-Cook 대런 감사합니다. 고맙습니다. 입출력 트랜잭션의 예제를 공유 할 수 있습니까? – Hani