2010-02-25 45 views
0

我是vb6的新手。我正在創建發票生成應用程序。我正在使用數據報告來顯示生成的發票。 一步一步工作的過程是:獲取空白數據報告vb6

輸入數據到發票和ItemsInvoice表。 然後從數據庫中獲取maxId(Adodc)以顯示最後生成的發票。

然後將最大ID作爲參數傳遞給根據發票ID顯示發票的數據報表。

我第一次生成發票時工作正常。現在第二張發票沒有關閉應用程序,我收到一個空白數據報告。對於數據報告,我正在使用數據環境。

我猜數據報告爲空的原因是因爲該記錄沒有該Id,但實際上該記錄正在插入數據庫中。

什麼問題?

回答

0

我不確定你的數據集是如何配置的,但它聽起來像你有一個單一的記錄在數據中,並沒有正確地重新加載它。如果您的報告是通過手動移動記錄集並僅顯示基於您傳遞它的ID參數的信息,然後使用第二份報告的相同記錄集,則您可能只需在記錄集上將MoveFirst放回到開頭。

+0

感謝您的答覆 ,但我覺得這不是我送你的源代碼,可以幫助理解代碼可以在一個以上的職位拆分問題 由於字符 的限制問題 rsInvoice.Recordset.AddNew rsInvoice.Recordset.Fields(1)。價值=纈氨酸(cmbcustomerId.List(cmbCustName.ListIndex)) rsInvoice.Recordset.Fields(2)。價值= txtName.Text rsInvoice.Recordset.Fields( 3).Value = txtAddress.Text rsInvoice.Recordset.Fields(4).Value = txtCity.Text rsInvoice.Recordset.Fields(5).Value = Val(txtPhone.Text) rsInvoice.Recordset.Fields(6) .Value =日期 – arvind 2010-03-03 11:18:18

+0

rsInvoice.Recordset.Update rsInvoice.Refresh rsMaxId.Recordset.Requery rsMaxId.Refresh 如果DataEnvironment1.rsInvoice_Grouping.State <> 0,則DataEnvironment1.rsInvoice_Grouping.Close 「在這裏我得到最後插入的發票編號這是正確的 DataEnvironment1.Invoice_Grouping(rsMaxId.Recordset.Fields(0).value的) 「但在這裏沒有得到記錄的inovice ID我傳遞的問題可能是DataEnvironment1.rsInvoice_Grouping的記錄並不令人耳目一新 發票。刷新 invoice.Show – arvind 2010-03-03 11:24:57

0

加載數據環境並刷新數據報告。 我也以類似的方式生成報告。我面臨這個問題。這裏的解決方案

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 

那就是它! 你完成了。我相信它會起作用。請告訴我,如果沒有。

0

我不知道答案仍然會打擾你,但如果別人有同樣的問題在這裏的問題是如何工作的一個例子: 想象一下,有一個門,看是誰進入了一個後衛,當第一個人(第一張發票)到來時,警衛註冊他,打開門(這是「Load DataEnvironmet」事件),然後讓這個人通過。警衛認爲沒有其他人會來打開門(指令認爲數據環境結束並且EOF的值變爲真),但當第二個人來(第二個發票)時,警衛不能問他是誰(再次,價值,並讓它通過沒有註冊他(這就是爲什麼第二個發票,並隨後在發票的空白)的原因。解決辦法是關閉門(「卸載數據環境」)後一個男人(顯示數據報告後) 解決方案是從上面的Sangita給出的代碼,但是在結束子程序之前,您需要卸載正在處理的數據環境 對於我來說,它的工作原理很抱歉,如果答案不是你在找什麼(如果別人不明白我在寫什麼,我的英文不是很好)。以防萬一我會用解決方案寫代碼

Load DataEnvironment1 
With DataEnvironment1 

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

End With 
DataReport1.Refresh 
DataReport1.Show 
Unload DataEnvironment1 
-1

嘗試刷新方法,如data1.recordset.requeryData1.refresh。如果您使用數據控件,這應該工作。