2017-11-21 2 views
0

파트 인과 파트 아웃이있는 예비 목록을 만들었습니다. 아래 그림과 같이ms 액세스의 두 번째 줄 (표)에 첫 번째 줄 값 가져 오기

enter image description here

파트에서, 파트 아웃 및 증권 잔액이 당신이 볼 수 있듯이. Part In 값을 1로 입력하면 Stock balance 값은 1과 같고 Part Out 값을 입력하면 스톡 밸런스 값이 공제됩니다. 문제는 행 1에서 행 2로 스톡 밸런스 값을 캡처하는 방법입니다. 새로운 가치를 입력 할 때의 아이디어 Part In :

[Stock Balance row 2 = Stock Balance from row 1 + Part In] 

나는 당신이 나의 설명을 이해하고 나를 도울 것입니다. 고맙습니다. 거래의 날짜/시간 - 그것은 코멘트 너무 길어처럼 테이블에 세 개의 필드를 가지고

+1

데이터 순서가 관련이 없으므로 데이터베이스 테이블에 대해 이야기 할 때 행 번호를 고려하지 않아야합니다. 이전 재고 이동을 식별하는 필드 중 하나에 값이 있습니까? 두려움이 컴퓨터에서 이미지를 볼 수는 없지만 거기에 균형이 잡혀 있다면 테이블이 약간의 변경으로 인해 발생할 수 있다고 생각합니다. 트랜잭션의 날짜/시간 - 테이블에 세 개의 필드가있는 것이 더 좋을 수 있습니다. 트랜잭션의 방향 (in 또는 out)과 트랜잭션의 파트 수. 그런 다음 모든 부품을 빼고 모든 부품을 빼내어 언제든지 균형을 잡을 수 있습니다. –

+0

@ DarrenBartrup-Cook 대런 감사합니다. 고맙습니다. 입출력 트랜잭션의 예제를 공유 할 수 있습니까? – Hani

답변

0

나는

더 나은 수 있습니다

의 내 댓글을 살을 대답으로이를 추가 할 것 , 거래 방향 (안 또는 밖) 및 부품 번호 : . 그런 다음 몇 가지 샘플 데이터의 모든 부분을 뺀 모든 부분 아웃을 추가하고

실행이 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# 
관련 문제