Crystal Reports DatabaseTable对象中没有字段
我在Crystal Reports应用程序中遇到问题,在DatabaseTable对象的fields属性中没有字段。Count为每个表返回零。这只发生在我们用户的一台计算机上。这对办公室里的所有开发者来说都很好。我们看不到任何不同之处。我还想知道我是否做了一些根本错误的事情。文档中说,对于Fields属性,每个数据库字段的集合中都存在一个对象 由报表访问,但我们看到数据库中每个表的每个字段都有一个对象,而不仅仅是由报表访问的对象,顺便说一句,这才是我们真正想要的。我们使用的是CR运行时版本11.5。任何想法都将不胜感激。下面是我们使用Delphi的代码:Crystal Reports DatabaseTable对象中没有字段,database,delphi,crystal-reports,Database,Delphi,Crystal Reports,我在Crystal Reports应用程序中遇到问题,在DatabaseTable对象的fields属性中没有字段。Count为每个表返回零。这只发生在我们用户的一台计算机上。这对办公室里的所有开发者来说都很好。我们看不到任何不同之处。我还想知道我是否做了一些根本错误的事情。文档中说,对于Fields属性,每个数据库字段的集合中都存在一个对象 由报表访问,但我们看到数据库中每个表的每个字段都有一个对象,而不仅仅是由报表访问的对象,顺便说一句,这才是我们真正想要的。我们使用的是CR运行时版本11.
procedure TfrmPCMSCrystalReportViewer.BuildColumnList;
{ Populate slColumns with the list of column.
For each table in the report, add every column. }
var
I, J: Integer;
Tbl: DatabaseTable;
begin
slColumns.Clear;
with crReport1.Database do begin
for I := 1 to Tables.Count do begin
Tbl := Tables[I];
//process each column in table
for J := 1 to Tbl.Fields.Count do
//add column to list
slColumns.Add(Tbl.Fields[J].DatabaseFieldName);
end; //for
end; //with
end;
我记不起工作计算机附近没有的特定语法,但是否有crReport1.Database.Refresh选项将表结构重新读取到模板中?可能模板中的内部结构不是最新的。这并不能解释为什么只有一个用户的电脑会出现故障,但我想我会建议这样做。此外,用户的计算机是否可能安装了不同版本的CR运行时?我知道旧版本的CR会堕落到DLL地狱。这也许可以解释开发人员和用户机器之间的区别。我不确定模板的含义,但如果您指的是crystal report文件本身,那么我认为这不适用。我们都使用同一个水晶报告文件。至于CR运行时,我们也都从同一个安装文件安装了运行时。还有其他想法吗?是的,我所说的模板是指CR报告文件本身。对不起,我说的模棱两可。关于运行时,仅仅从同一个安装文件安装并不能保证使用相同的运行时文件,除非您将它们放在与.exe相同的文件夹中,这不是一个好主意。有关Windows搜索路径层次结构,请参阅此链接:。希捷是的,很久以前曾发布过一个程序,显示正在使用哪些DLL,包括文件夹位置。今天,您可能可以使用SysInternals Process Explorer。