无法以其他形式的程序推荐表格

时间:2016-05-02 11:06:04

标签: vba ms-access access-vba ms-access-2013 access

在编写与其他表单相关的程序时,如何引用表单? 当我尝试引用表单(不是当前表单)时,它返回null。在图像中,项目数据库窗口中突出显示的脚本是写入代码的位置。表单Forms("All Patient Info")为空。 Image

1 个答案:

答案 0 :(得分:0)

此代码正常运行。但是必须打开您要引用的用户表单,否则将无法找到它。所以添加一些这样的例程:

public class PropertyProvider {
    private static Map<Class<?>, Properties> pMap = new HashMap<>();

    public static String getValue(Enum<?> enumValue, final String path) {
        Properties properties = pMap.get(enumValue.getClass());
        if (properties == null) {
            properties = new Properties();
            try {
                properties.load(PropertyProvider.class.getResourceAsStream(path));
            }
            catch (Exception e) {
                throw new RthosRuntimeException(e);
            }
            pMap.put(enumValue.getClass(), properties);
        }
        return (String) properties.get(enumValue.toString());
    }
}

public enum ConverterErrorEnum{
    INVALID_EXTRACTION_PATH,
    ...
    PATIAL_DATA_GENERATED;

    private static final String PATH= "/i18n/converterErrorText.properties";
    private String value;
    ...

    public String getValue() {
        if (value == null) {
            value = PropertyProvider.getValue(this, PATH);
        }
        return value;
    }
}

如果您不希望在执行某些操作时看到该表单,请添加

If Not CurrentProject.AllForms("All Patient Info").IsLoaded Then

    DoCmd.OpenForm "All Patient Info", acNormal
End If
Forms("All Patient Info").txtTest.Caption = "LEL"
在打开表单之前

。修改完表单后,用

关闭它
Application.Echo False

再次启用Echo:

DoCmd.Close acForm, "All Patient Info"