在vb6中获取空白数据报表

在vb6中获取空白数据报表,vb6,report,Vb6,Report,我是vb6新手。我正在创建发票生成应用程序。我正在使用数据报表显示生成的发票。 一步一步的工作流程是: 在Invoice和ItemsInvoice表中输入数据。 然后使用Adodc从数据库获取maxId,以显示最后生成的发票 然后将max Id作为参数传递给数据报表,该报表根据发票Id显示发票 当我第一次生成发票时,它工作正常。现在,对于不关闭应用程序的第二张发票,我得到一份空白数据报告。对于数据报告,我使用dataenvironment 我猜数据报告为空的原因是因为没有该Id的记录,但实际上该

我是vb6新手。我正在创建发票生成应用程序。我正在使用数据报表显示生成的发票。 一步一步的工作流程是:

在Invoice和ItemsInvoice表中输入数据。 然后使用Adodc从数据库获取maxId,以显示最后生成的发票

然后将max Id作为参数传递给数据报表,该报表根据发票Id显示发票

当我第一次生成发票时,它工作正常。现在,对于不关闭应用程序的第二张发票,我得到一份空白数据报告。对于数据报告,我使用dataenvironment

我猜数据报告为空的原因是因为没有该Id的记录,但实际上该记录正在插入数据库中


出什么问题了?

我不确定您的数据集是如何配置的,但听起来您的数据中只有一条记录,并且没有正确地重新加载它。如果您的报表手动在记录集中移动,并且仅显示基于您传递的ID参数的信息,然后对第二个报表使用相同的记录集,则您可能只需要在记录集上移动第一个记录集,将其放回开头。

加载数据环境并刷新数据报表。 我也以类似的方式生成报告。我面临这个问题。这是解决办法

Load DataEnvironment1
With DataEnvironment1
     'Command1 is the command added to data environment where you fire query or 
     'set it to point to a table

    If .rsCommand1.State <> 0 Then .rsCommand1.Close
    .Command1 maxid         'parameter you pass to the recordset

End With
DataReport1.Refresh
DataReport1.Show
 Load DataEnvironment1
 With DataEnvironment1

   If .rsCommand1.State <> 0 Then
     .rsCommand1.Close
   End If
   .Command1 Value(ID)  

 End With
 DataReport1.Refresh
 DataReport1.Show
 Unload DataEnvironment1
就这样!
你完了。我相信它会起作用的。如果没有,一定要告诉我。

我不知道答案是否仍然会困扰你,但是如果其他人也有同样的问题,这里有一个问题的例子: 想象一下,有一个门和一个守卫在看谁正在进入,当第一个人收到第一张发票时,守卫登记他,打开门这是事件加载DataEnvironment,然后让他通过。警卫认为没有其他人会来开门指令认为DataEnvironment结束,EOF值变为真,但当第二个人来第二张发票时,警卫不能再次询问他谁有价值,让它通过而不登记他这就是为什么第二张发票,而随后的发票将是空白的。解决方案是在显示数据报告后有人经过后关闭gate Unload DataEnvironment。 解决方案是上面Sangita给出的代码,但在结束sub之前,您需要卸载正在处理的数据环境。 对我来说,这很有效。很抱歉,如果答案不是你想要的,而且如果其他人不能理解我在写什么,我的英语不是很好。以防万一,我将用解决方案编写代码

Load DataEnvironment1
With DataEnvironment1
     'Command1 is the command added to data environment where you fire query or 
     'set it to point to a table

    If .rsCommand1.State <> 0 Then .rsCommand1.Close
    .Command1 maxid         'parameter you pass to the recordset

End With
DataReport1.Refresh
DataReport1.Show
 Load DataEnvironment1
 With DataEnvironment1

   If .rsCommand1.State <> 0 Then
     .rsCommand1.Close
   End If
   .Command1 Value(ID)  

 End With
 DataReport1.Refresh
 DataReport1.Show
 Unload DataEnvironment1
尝试像data1.recordset.requery或
数据1.1刷新。如果您使用数据控件,这应该会起作用。

谢谢您的回复,但我认为这不是问题,我正在向您发送源代码,这些源代码可能有助于理解问题。由于字符rsInvoice.Recordset.AddNew rsInvoice.Recordset.Fields1的限制,代码可能会拆分为多篇文章。Value=ValcBMCustomerId.ListcmbCustName.ListIndex rsInvoice.Recordset.Fields2.Value=txtName.Text rsInvoice.Recordset.Fields3.Value=txtAddress.Text rsInvoice.Recordset.Fields4.Value=txtCity.Text rsInvoice.Recordset.Fields5.Value=ValtxtPhone.Text rsInvoice.Recordset.Fields6.Value=DatersInvoice.Recordset.Update rsInvoice.RefreshrsMaxId.Recordset.Requery rsMaxId.Refresh If dataenvironment 1.rsInvoice_Grouping.State 0然后dataenvironment 1.rsInvoice_Grouping.Close'这里我得到的是最后一个插入的发票ID,它是正确的dataenvironment 1.invoice_Grouping rsMaxId.Recordset.Fields0.Value',但是这里没有得到我传递的inovice ID的记录问题可能是DataEnvironment1的记录集。rsInvoice_分组未刷新发票。刷新发票。显示