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 行を返します。


アップデート

David の意見のおかげで、コードを簡略化できました。

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は何も返しません (デバッガーでこれを確認しました)。これにより、構成された値ではなくデフォルトを使用してアプリケーションが実行されます。手動で、デバッガーで、2 番目の選択でも値が返されない場合は、実行を過去に移動します。

テストとフォームの両方が同じ方法でメソッドを実行しますが、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 に答える