2011-09-13 10 views
2
Private Sub frmReportExpenses_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

Dim objDatasetExpence As New dSetExpences // dataset object named as dSetExpences 
Dim objRptExpence As New rptExpences  // Crystal report object 
Dim MyCommand As New OleDbCommand() 
Dim MyConnection As OleDbConnection 
Dim myDA As New OleDbDataAdapter() 

Try 
    Dim connstring As String = "D:\HMSProjects\SMS\SMS\bin\Debug\" 
    MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + connstring + "msautoconfig.mdb;") 
    MyConnection.Open() 
    MyCommand.Connection = MyConnection 

    MyCommand.CommandText = "SELECT * FROM expences" 
    MyCommand.CommandType = CommandType.Text 
    myDA.SelectCommand = MyCommand 

    myDA.Fill(objDatasetExpence, "expences") 
    objRptExpence.SetDataSource(objDatasetExpence) // error here (Report has no Table) 
    CrystalReportViewer1.ReportSource = objRptExpence 
Catch ex As Exception 

End Try 

Me.WindowState = FormWindowState.Maximized 
End Sub 
End Class 

このコードショーのエラー"Report has no tables" を持っていない私は実用的Access 2003のデータベースを使用してCrystalレポートを表示したいです。空白のレポートがプロジェクトに追加され、DataSetオブジェクト、上記のコードの提案または修正を入力しようとしています。報告書は何のテーブル

答えて

1

名前付きデータセットobjDatasetExpenceのテーブルにDataAdapterの値を追加し、レポートオブジェクトのデータソースをデータセット内のデータテーブルに指定していません。次のようにコードを変更し、あなたがくぼみ同じエラーが「報告書には、テーブルを持っていない」来るレポートのデータベースフィールドにデータソースを割り当てると、再び

objRptExpence.SetDataSource(objDatasetExpence.Tables(0)) 
      (or) 
objRptExpence.SetDataSource(objDatasetExpence.Tables("expences")) 

してみてください。下の図を参照して、次のイメージを参照して、データベースフィールドをレポートに割り当て、同じエラーが発生した場合はSetting Database FieldsActuall Error

+0

はい私はあなたの提案通りにコードを変更しますが、同じタイプのエラーobjRptExpenceにはexpencesのテーブルがありますが、デバッガモードで表示されます –

+0

2回目に修正したコードを渡すことはできますか? –

+0

myDA.Fill(objDatasetExpence、 "expences") objRptExpence.SetDataSource(objDatasetExpence.Tables( "expences")) CrystalReportViewer1.ReportSource = objRptExpence –

関連する問題