0

ストアドプロシージャ'HISTORICAL_COSTS'から生成されたデータセットを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を介して)入力パラメーターを入力する必要があるストアドプロシージャが必要になります。少し裏話として、ここで完了したプロセスに従うことができます-ストアドプロシージャへのパラメータの挿入。

アプリケーション自体は実際には完全に入力されたデータセットを返します。ユーザーがその生成されたデータセットをExcelにエクスポートできるようにしたいと思います。そこで、ダーティな作業を開始するために、典型的な「EXPORTME」ボタンを設定しました。

イベントを提起すると; Excelが開き、シート全体で列名のみが繰り返されます。しかし、ここに問題があります。行データを表すセルは空白です。

ストアドプロシージャには入力パラメータが必要であり、そのパラメータがないと行が入力されていないという結論に達しました(この仮定では間違っている可能性があります)。 t各行に返されるデータ。基本的には、私のコードが私がやろうとしていることに対して機能しないことを意味します。

私の仮定が正しければ、行が適切に生成されるように、上記のコードにそのパラメーターをどのように組み込むかについてのアイデアがあります。

私が間違っている場合は、私のロジックまたはコード自体の何が間違っているかについての入力をいただければ幸いです。

ありがとう、

Jasoomian


スタン、

データセットを生成するコードは次のとおりです。

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は、私の質問に答える人に報奨金を提供することを親切に提案していますが、十分な報奨金を作成するのに十分なREPがないため、これまでにない感謝の気持ちはコーディングの愛を獲得しますか?

いくつかのクイックアップデート:

ストアドプロシージャを変更して結果を新しい別のテーブルに挿入し、そのテーブルに対してExcelエクスポートを実行して、アプリケーションをテストしました。これで問題なく動作します。ただし、多くの人が同時にアプリケーションを使用するため、これは実行可能なソリューションではありません。

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

私の能力の及ぶ限りでは、ありとあらゆる質問に喜んで答えます。

4

1 に答える 1

0

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

于 2009-03-27T17:32:39.593 に答える