Crystal reports VFP-来自表单的控制报告

Crystal reports VFP-来自表单的控制报告,crystal-reports,visual-foxpro,Crystal Reports,Visual Foxpro,iam使用VFP 9.0…iam制作发票报告,我想知道的是如何通过更改表单中的组合框来更改报告的内容。或者能够在报告中使用select和where子句…任何帮助都将不胜感激: 根据评论进行编辑以澄清,而不是直接添加到问题中 +-----------------+ +-------------------------+ | Contract Form | | Invoice Form | | | |

iam使用VFP 9.0…iam制作发票报告,我想知道的是如何通过更改表单中的组合框来更改报告的内容。或者能够在报告中使用select和where子句…任何帮助都将不胜感激:

根据评论进行编辑以澄清,而不是直接添加到问题中

+-----------------+       +-------------------------+
|  Contract Form  |       |   Invoice Form          |
|                 |       |                         |
|                 |       | radioCustomer           |
| btnInvoiceForm -------> |    comboCustomersList   |
+-----------------+       | radioContract           |
                          |    comboContractsList   |
                          |                         |
                          | btnPreviewReport        |
                          +-------------------------+
如果单击“预览发票”按钮,则显示从合同表中客户id FK=到从组合框中选择的id的所有记录


如果我从单选按钮中选择合同,合同组合框将工作,显示合同ID列表,然后运行报告将向您显示合同表中的记录,其中合同id=从组合框中选择的id…

我编辑了此消息,希望能够更好地了解表单的布局,并分别启用/禁用相应的单选按钮组合框控件。我认为你将需要起草两份不同的报告,无论显示的内容是什么,然后根据单选按钮设置调用每一份报告。。。例如在btnPreviewReport对象单击事件中。。。我对样品做了粗略的分析

if not empty( Thisform.radioControl.radioCustomer.Value )
   */ Customer radio button was selected
   xCustomerID = comboCustomersList.Value

   */ Run your Query
   select ... from YourTable where ... into cursor C_SampleCustomerData

   */ Run the report
   report form YourCustomerReport preview

else 
   */ Contract radio button was selected

   */ Customer radio button was selected
   xContractID = comboContractsList.Value

   */ Run your Query
   select ... from YourTable where ... into cursor C_SampleContractData

   */ Run the report
   report form YourContractReport preview
endif 
再一次,根据你的描述,我尝试了最好的形式

编辑-第二次评论澄清

VFP中报告的好处在于,它们在数据环境中不预先需要任何硬DBF。但是,最好将数据字段设置为您期望的别名.Field引用。因此,如果查询客户报告的数据应该始终具有相同的预期别名结果

ex:
// pre-close in case the alias we want was already left open previously
use in select( "C_CustomerResults" )
select c1.*;
   from YourCustomerTable c1;
   where c1.ID = SomeChosenID;
   into cursor C_CustomerResults readwrite 

Then, in your report, have all your fields to something like

C_CustomerResults.FirstName
C_CustomerResults.LastName
C_CustomerResults.OtherField
本例使用了一个很长的别名,但只是为了澄清处理过程

我也会为你的合同结果做类似的事情。只要使用该别名,报表将针对当前使用的表运行。报告中不需要任何花哨、其他准备、数据环境设置

通过预先查询报告中的数据样本,可以帮助您大致调整报告的布局。然后,完成表单以运行查询并显示报告,就完成了

编辑-再次修订评论跟进

是的。。。对于多行的客户发票,同样的事情。。。但是,您的报表有一个页眉栏,用于显示只在页面顶部显示一次的内容;还有一个详细栏,用于显示发票的每一行项目的内容;还有一个报表页脚,用于显示任何总计。根据复杂性,您可以在报告中添加其他数据组,但现在就开始。听起来你需要先把脚弄湿,然后再扩展


如果VFP是您的开发平台,另一个一直有VFP专家的网站是www.UniversalThread.com。他们还支持其他论坛,但在VFP中,他们每天会收到100多个问题…

有很多方法。。。你的问题太笼统了。你能给出一些当前内容的例子,以及你想对它做些什么改变吗?是否要更改每个特定客户的内容?具体交易类型?什么…@DRapp,谢谢你,很抱歉这么晚才回复..我以为每个人都抛弃了我..好吧,这就是我想做的。我有一个合同表单,它连接到合同表。在该表单中,有一个按钮用于运行另一个小发票表单。发票表单包含两个单选按钮,标记为客户和合同,两个组合按钮还包括客户列表和合同id列表,显然,iam生成两个报告。现在,如果您从单选按钮中选择customer,您将无法选择contract.and,那么customer组合框将启用并可用。一个客户ID列表出现,你选择一个。有一个按钮预览发票,当你点击之后,它将显示或我希望它显示的是从合同表中的所有记录,其中客户id FK=到从组合框中选择的id。如果你从单选按钮中选择合同,合同组合框将工作,显示合同id列表,然后运行报告将显示合同表中的记录,其中合同id=从组合框中选择的id。你能帮助我吗?请让我束手无策…再次为您修改了我的答案。代码是有意义的……但报告如何知道我们将数据选择到的光标……我在报告中要做的任何事情?非常感谢:嗯……下面我不明白,这段代码去哪里了如果我们想要的别名以前在select C_CustomerResults select c1中使用时已处于打开状态,则预关闭。*;从您的客户表c1;其中c1.ID=SomeChosenID;进入游标C_CustomerResults readwrite我很抱歉,foxprook不太好,所以这对合同发票有效,因为我只需要一条记录,但对于客户发票,我需要
要在报告上显示的记录不止一条。有什么想法吗?@BFK,根据最后的评论再次修改答案好吧……非常感谢您的时间和帮助。我真的很感激:D