2009-03-27 15 views
0

私は過去に「HISTORICAL_COSTS」ストアドプロシージャから生成されたデータセットを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にエクスポートすることができます。だから、あなたのプロトタイプの「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 

stackoverflowの親切に私が提供していることを示唆している:ここで

おかげで、

Jasoomian


スタン、

は、データセットを生成するコードがあります私の質問に答える人には恩恵を与えますが、十分な賞金を創出するのに十分なREPを持っていないので、これまでの感謝の気持ちにはコーディングの愛がありませんか?

いくつかの簡単なアップデート:

私は新しい別のテーブルに結果を注入し、そのテーブルに対して私のExcelのエクスポートを実行するストアドプロシージャを変更することにより、自分のアプリケーションをテストした - そしてそれが正常に動作します。しかし、同時に多くの人がアプリケーションを使用するため、これは実行可能な解決策ではありません。

私は、エクスポートのために正しく動作するためにパラメータを必要とするこのデータセットのインスタンスに問題があると考えています。

私の能力を最大限に引き出し、あらゆる質問にお答えします。

+0

これは私には少しばかり曖昧です。このパラメータはどこから来ていますか?また、前提条件に基づいて何かを行う前に、前提条件が正しいことを確認してください。私が意味することは:ハード・エビデンスを収集するために、デバッグを試してみてください。 – GvS

+0

あいまいな情報を残念に思って、私は可能な限り詳細にしようとしました。とにかく、パラメータは、VBアプリケーション自体から来て、私は、DataSetを生成するために使用するストアドプロシージャHISTORICAL_COSTSに渡されます。 しかし、1日半のようにデバッグは続けられます:) – Jasoomian

答えて

0

あなたは結論が間違っています。データセットが入力されると、パラメータはもはや要因ではありません。私は明らかにあなたのコードに間違ったことは何も表示されません、あなたが言ったように、それは他のところで働いた。まず、ブレークポイントを設定し、データセットに期待どおりの行が含まれていることを確認します。

関連する問題