Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crystal Reports DatabaseTable对象中没有字段_Database_Delphi_Crystal Reports - Fatal编程技术网

Crystal Reports DatabaseTable对象中没有字段

Crystal Reports DatabaseTable对象中没有字段,database,delphi,crystal-reports,Database,Delphi,Crystal Reports,我在Crystal Reports应用程序中遇到问题,在DatabaseTable对象的fields属性中没有字段。Count为每个表返回零。这只发生在我们用户的一台计算机上。这对办公室里的所有开发者来说都很好。我们看不到任何不同之处。我还想知道我是否做了一些根本错误的事情。文档中说,对于Fields属性,每个数据库字段的集合中都存在一个对象 由报表访问,但我们看到数据库中每个表的每个字段都有一个对象,而不仅仅是由报表访问的对象,顺便说一句,这才是我们真正想要的。我们使用的是CR运行时版本11.

我在Crystal Reports应用程序中遇到问题,在DatabaseTable对象的fields属性中没有字段。Count为每个表返回零。这只发生在我们用户的一台计算机上。这对办公室里的所有开发者来说都很好。我们看不到任何不同之处。我还想知道我是否做了一些根本错误的事情。文档中说,对于Fields属性,每个数据库字段的集合中都存在一个对象 由报表访问,但我们看到数据库中每个表的每个字段都有一个对象,而不仅仅是由报表访问的对象,顺便说一句,这才是我们真正想要的。我们使用的是CR运行时版本11.5。任何想法都将不胜感激。下面是我们使用Delphi的代码:

    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。