2008-11-07 4 views
1

저는 Microsoft Access에서 Bill과 Pay라는 두 가지 양식을 사용합니다. 둘 다 양식의 총계가 하나의 필드로 있습니다. 총 금액을 지불 총액으로 참조하려고합니다. 내가 지불 총량 제어 소스에서 시도양식에서 참조하기

:! = 양식은 빌 [총액]

하지만이 나던 일을 보인다. 디자인보기에서 '#Name?'이라고 말합니다. 텍스트 상자에.

어떻게 하시겠습니까?

답변

2

양식 중 하나가 하위 양식입니까? 하위 폼 컨트롤 이름은 항상 양식이 포함 된 것과 동일한 아니라고

Me.Parent.[Total order] 
Me.[Subform Control name Here].form.[Total order] 

참고 : 만약 그렇다면, 당신은 하위 폼 컨트롤 또는 부모의 속성을 참조 할 필요가있다.

편집 : 나를 생략하거나 컨트롤에서 Form! FormName을 사용하십시오.

EDIT2 : 양식, 하위 양식 및 컨트롤을 참조하는 일반적인 방법은 강타 (!) 또는 점 (.)으로되어 있습니다. 괄호와 따옴표는 거의 사용되지 않습니다. Knox에서 언급 한 것처럼 Microsoft Access MVP 사이트 (http://www.mvps.org/access/forms/frm0031.htm)와 Microsoft 자체 사이트 (http://support.microsoft.com/kb/209099)에서 볼 수 있습니다.

그렇지 않은 경우 표현식 빌더를 사용해 보셨습니까? 정확한 이름을 지키는 데 도움이됩니다.

제쳐두고 필드 및 컨트롤의 이름에 공백을 두지 않는 것이 가장 좋습니다. 이렇게하면 많은 작업을 줄일 수 있습니다. 컨트롤의 이름을 변경하여 컨트롤에 포함 된 필드 (예 : txtOrderTotal)와 이름이 같지 않은 것이 가장 좋습니다.

+0

Remou의 대답은 정확합니다. 컨트롤 참조와 관련된 Microsoft 설명서를 검토하는 것이 유용 할 수 있습니다. http://support.microsoft.com/kb/209099 – Knox

0

Remou의 대답은 코드에서 작동 - 텍스트 상자의 제어 소스를 정의하는 것 같습니다 그러나 지금이 시도 :

=Forms("Bill")![Total order] 
+0

내 대답의 일부는 코드에만 적합하지만 하위 폼에 대한 의견은 컨트롤 소스에 적용됩니다. Forms ("Bill")를 사용할 필요는 없습니다. Forms! Bill은로드 된 양식에 적합합니다. – Fionnuala

0

내가 가장 좋아하는 솔루션은 여기에 항상 레코드로 돌아가서 해당 계산 합계가 없습니다. 양식 수준의 합계가 올바르게 업데이트됩니다 (어떤 이유로 든 보류중인 컨트롤/레코드 세트 업데이트가 항상있을 수 있음). 그러면 DSUM 및 관련 기능을 사용할 수 있습니다!

Exemple :

dsum(Forms("Bill").recordsource, "unitPrice*lineQuantity") 

물론 당신이 그런 송장 당 총 금액을 얻기 위해 임시 레코드를 정의하는 등 더 복잡한 솔루션을 가질 수있다.

Dim rs as DAO.recordset, _ 
    myBillNumber as variant, _ 
    myBillAmount as variant 

set rs = currentDb.openRecordset(_ 
    "SELECT billNumber, sum(unitPrice*lineQuantity) as totalPrice FROM " & _ 
    Forms("Bill").recordset.name " GROUP BY billNumber") 

myBillNumber = rs.fields(0) 
myBillAmount = rs.fields(1) 

이 복잡하게 보일 수도 있지만 일단 익숙해지면 당신은 그것을 사용하는 것을 주저하지 않을거야 당신은 이제까지 당신이 지금 직면하고있는 문제의 종류가 없을거야.