2012-05-03 3 views
-1

I 보고서에 DB에서 모든 데이터를 전달하기 위해 노력하고있어하지만 난CrystalReports DataTable의 오류 VB.NET

Dim sqlConn As String = "SELECT (SUM(item_selldetail * item_quantity)/ 100 * 12) AS isv_report," & _ 
        " (SUM(item_selldetail * item_quantity) - (SUM(item_selldetail * item_quantity)/ 100 * 12)) " & _ 
        " AS capital_report,SUM(item_selldetail * item_quantity) AS total_report FROM qa_items;" 
       Dim objDataAdapter As New MySqlDataAdapter(sqlConn, objConn) 

       ' DataSet 
       Dim ds As New DataSet 

       ' llenar el DataSet 
       objDataAdapter.Fill(ds) 


       Dim mireporte As New ReportDocument() 

       mireporte.Load("C:\Users\Jonathan\Desktop\Proyectos\Quickadmon\Quickadmon\Reportes\report_capital_rpt.rpt") 

       mireporte.SetDataSource(ds) 

       Me.capitalreport_viewer_capital_report.ReportSource = mireporte 

사람이 어떤 생각을 가지고 (보고서는 어떤 테이블이 없습니다) 오류가 내가 할 수있는 해야 할 것?

+0

더 자세한 정보, 샘플 출력, 오류가 무엇입니까? BTW 변수 이름'sqlConn'은 오도 된 것입니다. 나에게 sqlConn은 sqlConn이 실제로 SQLCommand 호출일지도 모르는 sql 문자열 일 때 sql 연결을 의미한다. – JonH

+0

이 작업을 수행하면서 DataTable/DataReader 개체와 함께 XML 파일을 만들고 Crystal에서 ADO.NET 연결을 지정했습니다 (보고서의 필드를 레이아웃 할 수 있음). 그런 다음 .Net 프로그램에서 해당 DataTable을 전달할 수 있습니다. 내게는 해당 DataSet에서 하나의 레코드 집합을 반환하는 것처럼 보입니다. 나에게 몇 가지를 주면 더 자세한 답변을 입력하겠습니다. –

+0

의견을 보내 주셔서 감사합니다. 마법사를 사용하지 않고 프로그래밍 방식으로이 작업을 수행해야하며 테이블에서 일부 필드를 선택하고 보고서 뷰어에 표시하는 방법에 대한 기본 예제를 사용했습니다. 나는 프로그램 적으로 다소 혼란 스럽다. 필자도 피해야 할 것은 xml이나 rpt 파일에 대한 절대 경로를 사용해야한다는 것입니다. –

답변

1

샘플 코드는 여기에, 당신은 전체 소스 코드가 필요한 경우이

sql = "SELECT Product_id,Product_name,Product_price FROM Product" 
    Dim dscmd As New SqlDataAdapter(sql, cnn) 
    Dim ds As New DataSet1 
    dscmd.Fill(ds, "Product") 
    cnn.Close() 

    Dim objRpt As New CrystalReport1 
    objRpt.SetDataSource(ds.Tables(1)) 
    CrystalReportViewer1.ReportSource = objRpt 
    CrystalReportViewer1.Refresh() 

을 dolike하려고 :

http://vb.net-informations.com/crystal-report/crystal_report_from_sql_query_string.htm

merca합니다.

+0

안녕하세요 코드, 나를 많이 도왔습니다!, 감사 + REP –

1

다음은 과거에 내가 한 일입니다.

) 1. Crystal에 ADO.NET (XML) 연결을 만듭니다. 이 작업을 수행하려면 XML 파일 경로를 제공해야하며, XML 파일에는 DataTable (또는 DataReader) 스키마가 포함됩니다. 에,

<?xml version="1.0" encoding="utf-8" ?> 
    <people> 
     <first_x0020_name> 
     <last_x0020_name> 
     <phone> 
    </people> 

2) 당신이했던 것처럼 데이터 소스를 설정합니다 : 그것은 다음과 같이 보일 것이라고합니다 (x0020는 필드에 공백 하나가 있다면, 더 그에 대한 자세한 내용은 http://www.blakepell.com/Blog/?p=14 참조를 나타냅니다) 내 래퍼 코드는 내가 래퍼의 속성에서 설정 한 경우 이런 일이 있었다 :

If _dataReader IsNot Nothing Then 
     report.SetDataSource(_dataReader) 
    End If 

    If _dataTable IsNot Nothing Then 
     report.SetDataSource(_dataTable) 
    End If 

3) 뷰어 컨트롤에 넣어를 (또는 I가 발생하고있어 이후로 내가 일반적으로 무엇을하는 내보낼 그것에서 PDF 출력).

report.Export() 

이 당신을 위해 작동하지 않는 경우, 당신은이 작업을 수행 할 때마다 우리가 더 잘 해결할 수 있습니다받을 특정 스택 추적 및 예외를 게시 할 수 있습니다. ;)

+0

절대 경로를 사용하지 않고 XML 파일을 가져 오는 방법은 없으며 프로그래밍 방식으로 마법사를보고하지 않고 수행 할 수 있습니까? 고마워요 –

+0

XML 파일은 당신이 만들 것이고 당신의 보고서와 같은 디렉토리에 살 것입니다. (저는 손으로 광산을 만들어야 만했습니다). 그것은 기본적으로 Crystal이 Crystal Reports에 사용 가능한 필드를 알려줌으로써 보고서에 레이아웃 할 수있게 해줍니다. –