Tag:

如何打印出子进程使用C#打印的值?

正如本文所述,我可以使用Python的subprocess.Popen()函数打印出运行ruby代码的值。 import subprocess import sys cmd = [“ruby”, “/Users/smcho/Desktop/testit.rb”] p = subprocess.Popen(cmd, stdout=subprocess.PIPE) for line in iter(p.stdout.readline, ”): print line, sys.stdout.flush() p.wait() 我怎么能用C#做同样的事情? 如何打印子进程打印出来的值?

从C#调用SSRS报告时,只有主报告显示数据子报告给出错误

我开发了一个SSRS报告,其中包含一个主报告和一个子报告。 我从C#调用此报告。 我只知道如何将主rdlc与数据集绑定。 我使用下面的代码 SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlcomm); dataAdapter.Fill(dataset); this.reportViewer1.LocalReport.ReportPath = Application.StartupPath + “\\sale_dept.rdl”; this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(“DataSet1”, dataset.Tables[0])); this.reportViewer1.RefreshReport(); 当我运行exe我得到报告查看器填充主报告但3子报告显示错误,因为我没有为这些子报告指定DataSource 主报告和其他子报告之间没有参数传递 main和all子报告的数据集名称默认为DataSet1 请指导我将子报告与适当的查询数据集表绑定。 我完全被困在这里。 编辑 我用1个子报告更改了我的项目。 在SSRS中它在(BIDS)编辑器中正常工作,但是当从C#调用时它给出了错误: 无法在指定位置找到。 请validation子报表是否已发布且名称是否正确。 我的代码: subreportevenhandler according to this question 子报表事件处理程序的问题 SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlcomm); dataAdapter.Fill(dataset); this.reportViewer1.LocalReport.ReportPath = Application.StartupPath + “\\sale_dept.rdl”; this.reportViewer1.LocalReport.DataSources.Clear(); this.reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(addsubreport); this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource(“DataSet1”, […]

Microsoft Reporting:在代码中设置子报表参数

如何设置子报告的参数? 我已成功连接到SubreportProcessing事件,我可以通过e.ReportPath找到正确的子报告,我可以通过e.DataSources.Add添加数据源。 但我发现无法添加报告参数? 我发现有人建议将它们添加到主报告中,但我真的不想这样做,因为主报告根本不应该连接到子报告,除了它正在包装分报告。 我使用一个报告作为主模板,打印报告的名称,页码等。子报告将成为报告本身。 如果我只能找到一种方法来设置子报告的报告参数,我会很高兴… 澄清:创建/定义参数不是问题。 问题是设置它们的值。 我认为自然要做的就是在SubreportProcessing事件中做到这一点。 SubreportProcessingEventArgs实际上有一个Parameters属性。 但它是只读的! 那你怎么用呢? 我怎样才能设定价值?

当StartInfo.RedirectStandardInput设置为true时,为什么StandardOutput.Read()会阻塞?

我很难解密关于Process.StandardOutpout的MSDN文档, 看看 Read(Char [],Int32,Int32)方法是否阻塞。 我的理解是它不应该阻塞,但是当我将RedirectStandardInput设置为true时似乎就是这样。 有没有人有这方面的经验; 或者对我遇到的问题有一些解释? 这里的上下文是我不想等待一个完整的行(即使用行终止符),或者在读取标准输出之前退出进程。 另外我不想使用回调。 我希望在进程写入时同步读取StdOut。 这是我的代码的简化版本: string command = @”C:\flex_sdks\flex_sdk_4.5.1.21328\bin\fcsh.exe”; Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = false; # 0); if (sb_stdout.ToString().EndsWith(“\n(fcsh) “)) break; Thread.Sleep(20); } 更新 基于我(可能是坏的)假设Process.StandardOutput在使用时被破坏: 与stdin重定向; 和, 从stdout或stderr读取除终止行之外的其他内容, 我决定直接尝试使用Windows的API。 我用这样的代码添加了答案; 它工作正常(至少现在)。 另一个更新 我用我现在使用的代码创建了一个博客条目 。