你的位置:首页 > ASP.net教程

[ASP.net教程]winform使用FastReport遇到的两个问题


1.FastReports第二次打开报错,重新实例不管用

.ClearDatasets();方法,要在实例后添加,第二次不报错。

report = new TfrxReportClass(); report.ClearDatasets(); report.SetGlobalVariable("Language", "Chinese"); 

2.在没有装FastReports的电脑上打开不,得注册fastreport3.dll,而且还区分了32跟64位系统。

 1   static class Program 2   { 3     /// <summary> 4     /// 应用程序的主入口点。 5     /// </summary> 6     [STAThread] 7     static void Main() 8     { 9       RegFastreport3();10       Application.Run(new MDIParentFrm());11     }12 13     private static void RegFastreport3()14     {15       string msg = string.Empty;16       WinForm.Utility.CmdHelper.RunCmd("regsvr32 /s fastreport3.dll", out msg);17     }18     ...19 }

 1   public class CmdHelper 2   { 3     /// <summary> 4     /// 执行cmd命令 5     /// 多命令请使用批处理命令连接符: 6     /// <![CDATA[ 7     /// &:同时执行两个命令 8     /// |:将上一个命令的输出,作为下一个命令的输入 9     /// &&:当&&前的命令成功时,才执行&&后的命令10     /// ||:当||前的命令失败时,才执行||后的命令]]>11     /// </summary>12     /// <param name="cmd"></param>13     /// <param name="output"></param>14     public static void RunCmd(string cmd, out string output)15     {16       cmd = cmd.Trim().TrimEnd('&') + "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态17       using (Process p = new Process())18       {19         var cmdPath = @"C:\Windows\SysWOW64\cmd.exe";20         if (!Directory.Exists(cmdPath))21           cmdPath = @"C:\Windows\System32\cmd.exe";22         p.StartInfo.FileName = cmdPath;23         p.StartInfo.UseShellExecute = false;        //是否使用操作系统shell启动24         p.StartInfo.RedirectStandardInput = true;   //接受来自调用程序的输入信息25         p.StartInfo.RedirectStandardOutput = true;  //由调用程序获取输出信息26         p.StartInfo.RedirectStandardError = true;   //重定向标准错误输出27         p.StartInfo.CreateNoWindow = true;          //不显示程序窗口28         p.Start();//启动程序29 30         //向cmd窗口写入命令31         p.StandardInput.WriteLine(cmd);32         p.StandardInput.AutoFlush = true;33 34         //获取cmd窗口的输出信息35         output = p.StandardOutput.ReadToEnd();36         p.WaitForExit();//等待程序执行完退出进程37         p.Close();38       }39     }40   }