2009-03-27 7 views
0

이전에 저장 프로 시저 'HISTORICAL_COSTS'에서 생성 된 DataSet을 Excel로 내보내는 데 사용했던 다음과 같은 코드가 있습니다.데이터 집합을 Excel로 내보내기

 Dim c As Long = 1 
     For Each dc As DataColumn In Me.WOCostDataSet. & _ 
     HISTORICAL_COSTS.Columns 
      .Cells(1, c).Value = dc.ColumnName.ToString 
      .Cells(1, c).Font.Bold = True 
      c += 1 
     Next 

     Dim i As Long = 2 
     For Each dr As DataRow In Me.WOCostDataSet.HISTORICAL_COSTS.Rows 
      c = 1 
      For Each dc As DataColumn In Me.WOCostDataSet. & _ 
      HISTORICAL_COSTS.Columns 
       .Cells(i, c).Value = dr.Item(dc.ColumnName).ToString 
       c += 1 
      Next 
      i += 1 
     Next 

내가 문제로 실행하고, 다시 사용이 코드 다르지만 유사한 응용 프로그램에 노력하고 있지만입니다. 이 코드의 이전 사용은 저장 프로 시저에서 생성 한 dBase의 정적 테이블에서 사용되었습니다. 그리고 이것은 기본적으로 새로운 응용 프로그램에 대해 동일하게 유지되지만 요구 사항에 따라 저장 프로 시저에 실행 전에 입력 매개 변수를 VB.net을 통해 사용자가 입력해야합니다. 약간의 이야기가 있으면 여기에서 완성 된 프로세스를 수행 할 수 있습니다. - Injecting a Parameter into Stored Procedure.

실제로 응용 프로그램 자체는 완전히 채워진 데이터 세트를 반환하지만 생성 된 데이터 세트를 Excel로 내보내는 기능을 사용자에게 제공하고 싶습니다. . 그래서, 나는 당신의 prototypical 'EXPORT ME'버튼을 더러운 작업을 시작하도록 설정했습니다.

이벤트 발생시. Excel이 열리고 내 열 이름이 시트 전체에 걸쳐 반복됩니다. 그러나 여기에 문제가 있습니다. 행 데이터를 나타내는 셀은 비어 있습니다.

필자는 결론적으로 (필자는이 가정에서 잘못되었을 수 있음을 인정한다.) 저장 프로 시저에 입력 매개 변수가 필요하기 때문에 행이 채워지지 않는다는 것을 인정한다. 매개 변수에는 각 행에 대해 반환 할 데이터가 없습니다. 기본적으로 내 코드는 내가하려고하는 것에 대해 작동하지 않는다는 것을 의미합니다.

제가 제 가정에 맞으면 행을 올바르게 생성 할 수 있도록 위 매개 변수에 매개 변수를 입력하는 방법에 대한 아이디어가 있습니다.

내가 틀렸다면, 글쎄, 내 논리 나 코드 자체에 잘못된 점이 있으면 크게 환영 할 것입니다.

Try 
     Dim FBConn As FbConnection 
     Dim MyConnectionString As String 

     MyConnectionString = "datasource=" _ 
         & MyServer & ";database=" _ 
         & TextBox4.Text & ";user id=SYSDBA;password=" _ 
         & MyPassword & ";initial catalog=;Charset=NONE" 

     FBConn = New FbConnection(MyConnectionString) 
     Dim FBCmd As New FbCommand("HISTORICAL_COSTS", FBConn) 

     FBCmd.CommandType = CommandType.StoredProcedure 
     FBCmd.Parameters.Add("@I_PN", FbDbType.VarChar, 40) 
     FBCmd.Parameters("@I_PN").Value = TextBox1.Text.ToUpper 

     Dim FBadapter As New FbDataAdapter(FBCmd) 
     Dim dsResult As New DataSet 
     FBadapter.Fill(dsResult) 

     Me.HISTORICAL_COSTSDataGridView.DataSource = dsResult.Tables(0) 

     Dim RecordCount As Integer 
     RecordCount = Me.HISTORICAL_COSTSDataGridView.RowCount 
     Label4.Text = RecordCount 

    Catch ex As System.Exception 
     System.Windows.Forms.MessageBox.Show _ 
     ("There was an error in generating the DataStream, " & _ 
     "please check the system credentials and try again. " & _ 
     "If the problem persists, please contact your friendly " & _ 
     "local IT department.") 
    End Try 

에 유래가 친절하게 내가 제공 할 것을 제안 :

감사합니다,

Jasoomian는


스탠, 여기

는 데이터 집합을 생성하는 코드입니다 내 질문에 답하는 사람에게는 현상금이되지만, 충분한 현상금을 창출 할 수있는 충분한 REP가 없기 때문에 내 영원한 감사가 코딩 사랑을 얻게 되는가?

몇 빠른 업데이트 :

나는 새로운 별도의 테이블에 결과를 주입 한 다음 해당 테이블에 대해 내 엑셀 내보내기를 실행하기 위해 저장 프로 시저를 변경하여 내 응용 프로그램을 테스트 - 그리고 그것을 잘 작동합니다. 그러나 많은 사람들이 동시에 응용 프로그램을 사용할 것이기 때문에 가능한 해결책은 아닙니다.

그래서 다시 내보낼 때 매개 변수를 필요로하는이 데이터 집합 인스턴스에 문제가 있다고 생각합니다.

내 능력을 최대한 살려 모든 질문에 답변 해 드리겠습니다.

+0

나에게 조금 모호합니다. 이 매개 변수의 출처는 어디입니까? 또한 가정을 기반으로 무언가를하기 전에 가정이 올바른지 확인하십시오. 내 말은 : 디버깅을 시도하여 확실한 증거를 수집하십시오. – GvS

+0

막연한 정보에 대해 유감스럽게 생각했지만 최대한 자세하게 작성하려고 노력했습니다. 어쨌든, 매개 변수는 VB 응용 프로그램 자체에서 오는 및 데이터 집합을 생성하는 데 사용하는 저장 프로 시저 HISTORICAL_COSTS로 전달됩니다. 하지만 디버깅은 계속 진행되며 지금과 같이 하루 반 동안 진행됩니다. – Jasoomian

답변

0

결론은 틀린 것입니다. 일단 데이터 세트가 채워지면 매개 변수는 더 이상 요소가 아닙니다. 나는 분명히 코드에 문제가있는 것을 보지 못했고, 당신이 말했듯이, 그것은 다른 곳에서 일했습니다. 중단 점을 설정하고 데이터 집합에 예상대로 행이 포함되도록해야합니다.

관련 문제