2016-10-02 2 views
-1

저는 데이터베이스를 처음 사용합니다. 나는 우리 회사의 재고 역학을 추적하기 위해 Access 데이터베이스를 만들고 있습니다. 나는 두 개의 테이블을 가지고있다. 하나는 현재 재고 재고이며, 다른 하나는 생산 활동에 의해 소비됩니다. 업데이트는 각 제작 직후에 수행됩니다.액세스 2013의 조건부 업데이트 테이블에 대한 SQL 문 사용

업데이트를하기 전에 재고 상태 및 소비량 시트에서 동일한 단위가 사용되는지 확인하고 싶습니다. 나는 다음과 같은 것을 시도한다 :

Private Sub Command4_Click() 
    CurrentDb.Execute "SELECT o.Unit, s.Material_Unit" & _ 
        "CASE WHEN o.Unite = s.Material_Unit" & _ 
        "THEN UPDATE tbl_Current_Stock As o INNER JOIN bl_Temp_Raw_Material_Consumption AS s ON o.Raw_Material = s.[Ingredient/Packaging material] Set o.Stock_Level = o.Stock_Level - s.Consumption" & _ 
        " Print'Congratulations! You have successfully updated inventory balance!'" & _ 
        "ElSE PRINT ' Units of source data and targeted data are not matched!'" & _ 
        "Exit Sub" & _ 
        "End" & _ 
        "FROM tbl_Current_Stock As o, bl_Temp_Raw_Material_Consumption AS s" 
END sub 

그러나 약간의 실수가있는 것 같다. 이 코드를 도와주세요.

감사합니다.

+0

SQL과 VBA 코드가 충돌합니다. 그리고 Access SQL은 CASE 문을 지원하지 않습니다. MS Access에서 문서 또는 자습서를 읽는 것을 고려하십시오. – Parfait

답변

1

코드가 완전히 잘못되었습니다. UPDATE 또는 PRINT (PRINT은 여기 MS Access에서 쓸모가 없습니다) 실행할 문을 지정하는 데 CASE을 사용할 수 없습니다. 그들이 업데이 트를 실행 한 후 일치하는 경우,이를 변수로 o.Unites.Material_Unit를 선언하고 비교 - 당신의 SQL 쿼리에

IF 문 :

은 당신이 중 하나를 사용해야합니다.

IF @unite = @materialunite 
BEGIN 
    [Your Update Statement] 
END 

다른 방법 : 선언 VB 변수, 그들에게 o.Unites.Material_Unit 값을 할당하고, IF 쓰기 - VB에서 ELSE 문을 당신의 SQL 쿼리를 실행합니다.

+0

감사합니다. Tedo, 저는 완전히 SQL에 익숙합니다. 나는 너의 제안을 시도 할 것이다. 좋은 하루 되세요. –

+0

머리카락을 나눠서는 안되지만 VBA와의 차이점은 VBA 일 가능성이 높습니다. 또한 코드가 SQL Server TSQL 인 것처럼 보이며 다른 방언 인 Access SQL이 아닙니다. – Parfait

+0

@ Parfait 예, VBA 여야합니다. 또한 사용자가 자신이 로컬 또는 MS SQL SERVER 원격 데이터베이스에서 작업 중이라고 지정하지 않았으므로 백엔드가 MS SQL이면 코드가 실행되고 테이블을 업데이트합니다. 그는 로컬 DB를 사용하는 경우 VBA 조건을 사용하고 작성한 것처럼 명령문을 업데이트 할 수 있습니다. –