SearchReader()接口参数说明 - DigitalPlatform/dp2 GitHub Wiki
通过这个API我们可以根据需要检索指定库的读者记录,并将所需的信息存储到结果集。
在统计方案中,使用DigitalPlatform.LibraryClient.LibraryChannel类的SearchReader()函数
// 检索读者信息
// parameters:
// stop 停止对象
// strReaderDbNames 读者库名。可以为单个库名,也可以是逗号(半角)分割的读者库名列表。还可以为 <全部>/<all> 之一,表示全部读者库。
// strQueryWord 检索词
// nPerMax 一批检索命中的最大记录数。-1表示不限制。
// strFrom 检索途径
// strMatchStyle 匹配方式。值为left/right/exact/middle之一。
// strLang 界面语言代码。一般为"zh"。
// strResultSetName 结果集名。可使用null。而指定有区分的结果集名,可让两批以上不同目的的检索结果及互相不冲突。
// 权限:
// 读者不能检索任何人的读者记录,包括他自己的;
// 工作人员需要 searchreader 权限
// return:
// -1 error
// >=0 命中结果记录总数
/// <summary>
/// 检索读者记录。
/// 请参考 dp2Library API SearchReader() 的详细说明
/// </summary>
/// <param name="stop">Stop 对象</param>
/// <param name="strReaderDbNames">读者库名。可以为单个库名,也可以是逗号(半角)分割的读者库名列表。还可以为 <全部>/<all> 之一,表示全部读者库。</param>
/// <param name="strQueryWord">检索词</param>
/// <param name="nPerMax">一批检索命中的最大记录数。-1表示不限制</param>
/// <param name="strFrom">检索途径</param>
/// <param name="strMatchStyle">匹配方式。值为left/right/exact/middle之一</param>
/// <param name="strLang">界面语言代码。例如 "zh"</param>
/// <param name="strResultSetName">结果集名。可使用null,等同于 "default"。而指定有区分的结果集名,可让两批以上不同目的的检索结果集可以共存</param>
/// <param name="strOutputStyle">输出风格。keyid / keycount 之一。缺省为 keyid</param>
/// <param name="strError">返回出错信息</param>
/// <returns>
/// <para>-1: 出错</para>
/// <para>>=0: 检索命中的记录数</para>
/// </returns>
public long SearchReader(
DigitalPlatform.Stop stop,
string strReaderDbNames,
string strQueryWord,
int nPerMax,
string strFrom,
string strMatchStyle,
string strLang,
string strResultSetName,
string strOutputStyle,
out string strError)
参数说明请参考 参考手册第3.12节SearchReader()
该示例是在一个框架统计方案中,检索读者的写法。
LibraryChannel channel = this.MainForm.GetChannel();
try
{
string strError = "";
long lRet = channel.SearchReader(null,
"<全部>", //读者库名列表
name, //检索词
-1, //最大命中数。-1表示不限制
"姓名", //检索途径
"exact", //匹配方式:exact, left, right, middle
"zh", //语言代码
"readers", //结果集名
"", //输出方式
out strError);
if (lRet == -1) //错误
{
MessageBox.Show(strError);
return;
}
else if (lRet == 0) //没有命中
{
// TODO:未命中 输出到操作历史
continue;
}
else if (lRet > 1) //命中。返回值为命中的记录条数
{
// TODO: 重名 输出到操作历史
continue;
}
finally
{
this.MainForm.ReturnChannel(channel);
}