【问题标题】:Getting value of database field in Crystal Reports在 Crystal Reports 中获取数据库字段的值
【发布时间】:2013-10-17 15:04:08
【问题描述】:

目前我正在开发使用水晶报表引擎的遗留应用程序。我必须以编程方式获取数据库字段的值。正如我所假设的,我需要适当的事件来让下一个代码工作:

Report.Database.Tables(1).Fields(1).Value

valueDownloadStarted/Finished 事件处理程序中始终为空。我做错了什么,至少有可能吗?

【问题讨论】:

  • 你是对的朋友,我也尝试过,它返回 null。你能告诉我你的想法吗?也许我可以帮助你
  • 现在真的不知道。我会尝试一些带有查询的东西,幸运的是有可能得到它。但我想知道为什么会有value 字段?

标签: vb6 crystal-reports


【解决方案1】:

我认为,如果您想在程序中获取表字段的值,最好的方法是从报表中获取字段名称,然后直接连接到您的表,并使用报表字段名称作为表列名称 我是用 c# 做的,希望它也能在 vb6 中帮助你:

string name = report2.Database.Tables[1].Fields[1].Name;
string[]  names = name.Split('.');

然后将您的数据库添加到您的程序中并使用如下名称:

DataTable dt = new DataTable();
string[] value = dt.Columns[names[1]];

【讨论】:

  • 唉,不能以这种方式完成。我将查看 VB6 中的 DataTable 类,但在我看来,它的行为会有所不同。
【解决方案2】:

如果你只需要你的表格值,你可以使用我的最后一个答案,但如果你需要水晶报表中数据库字段的值,我的意思是公式字段之类的,这段代码可以帮助你:

CRAXDRT.FormulaFieldDefinitions definitions = report2.FormulaFields;
string formulaText = "IF " + report2.Database.Tables[1].Fields[3].Name 
    + " > 10 THEN" + report2.Database.Tables[1].Fields[2].Name;
definitions.Add("Test", formulaText);
report2.Sections[1].AddFieldObject(definitions[1], 0, 0);

【讨论】:

  • 我有 50 多份报告,每份报告由数据库中的 20 多个字段组成,各不相同。也可能有UNIONs。手动添加公式有点尴尬,这不是正确的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
相关资源
最近更新 更多