0

我有一种方法可以从表MyConfiguration中检索配置详细信息。当前使用的代码是:

Query query;
QueryRun queryRun;
QueryBuildDataSource qbds;
MyConfiguration config;
int rowCount;

query = new Query();
qbds = query.addDataSource(tableNum(MyConfiguration));
queryRun = new QueryRun(query);
rowCount = SysQuery::countTotal(queryRun);

该表有 0 或 1 行;如果有配置设置或使用默认设置,则有一个if语句说明使用什么过程。

问题

尽管表中有一行,但查询间歇性地返回 0 行。


更新

感谢大卫的输入,我简化了代码:

MyConfiguration config;

select firstOnly useSettings, firstField, secondField from config;

// This wasn't included in the original example, but demonstrates how it's used.
if(config){
    // These variables are defined in classDeclaration
    useCustom = config.useSettings;
    first = config.firstField;
    second = config.secondField;
}
else
{
     // No custom configuration, use defaults.
     useCustom = 0;
}

此代码位于调用主要方法以查找要使用的配置时调用的方法中。

当我在开发环境中运行我的测试方法时,所有测试都通过了(正在为每个测试读取配置)。但是,当从按钮的单击事件调用主要方法时,选择不会返回任何内容(我已经在调试器中检查了这一点)。这会导致应用程序使用默认值而不是配置值运行。如果我手动,在调试器中,将执行移到如果第二个选择也不返回任何值。

测试和表单都以相同的方式执行方法,但从select语句中得到不同的结果。

4

1 回答 1

1

您的代码看起来正确。但是,以下可能更容易使用和调试

MyConfiguration config;
int rowCount;
;
select firstonly config;
if(config)
{
  //Record exists
}
else
{
  //Record does not exist
}
于 2013-01-10T15:56:09.877 回答