J'ai le code suivant que j'ai utilisé dans le passé pour exporter un DataSet généré à partir de la procédure stockée 'HISTORICAL_COSTS' vers Excel.Exportation d'un jeu de données vers 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
J'essaie de réutiliser ce code d'application d'une autre, mais semblable, mais, je suis en cours d'exécution dans un problème. L'utilisation précédente de ce code a été utilisée sur une table statique dans notre dBase générée par la procédure stockée. Et bien que cela reste fondamentalement le même pour la nouvelle application, les exigences exigent maintenant que la procédure stockée ait un paramètre d'entrée à saisir par l'utilisateur (via VB.net) avant l'exécution. Pour un peu de retour, vous pouvez suivre ce processus ici - Injecting a Parameter into Stored Procedure.
L'application elle-même retourne un ensemble de données entièrement rempli, et j'aimerais que nos utilisateurs puissent exporter ce jeu de données généré vers Excel . Donc, j'ai mis en place votre prototype "EXPORTER MOI" bouton pour commencer le sale boulot.
Lors de l'augmentation de l'événement; Excel s'ouvre et seulement mes noms de colonne sont réitérés dans toute la feuille. Mais, et voici le problème, les cellules représentant les données de ligne - sont vides. Je suis arrivé à la conclusion (j'admets que j'ai peut-être tort dans cette hypothèse) que les lignes ne sont pas peuplées du fait que la procédure stockée a besoin d'un paramètre d'entrée pour faire sa chose, et sans cela paramètre il n'y a pas de données à retourner pour chaque ligne. Fondamentalement, cela signifie que mon code ne fonctionnera pas pour ce que j'essaie de faire. Si j'ai raison dans mes hypothèses, des idées sur la façon dont je pourrais obtenir ce paramètre dans mon code ci-dessus afin que les lignes seront correctement générées. Si je me trompe, eh bien, toute contribution sur ce qui ne va pas avec ma logique ou le code lui-même serait grandement appréciée.
Merci,
Jasoomian
Stan,
Voici le code qui génère l'ensemble de données:
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 suggère gentiment que j'offre une prime à quiconque répond à ma question, mais, comme je n'ai pas assez de REP pour créer une générosité suffisante, est-ce que ma gratitude toujours englobante suscite un amour codé?
Quelques mises à jour rapides:
J'ai testé mon application en modifiant la procédure stockée pour injecter les résultats dans une nouvelle table séparée, puis exécutez mon Excel export contre cette table - et il fonctionne très bien. Mais, puisque beaucoup de gens vont utiliser l'application en même temps, ce n'est pas une solution viable. Donc, je suis de retour à croire qu'il y a un problème avec cette instance de l'ensemble de données nécessitant un paramètre pour s'exécuter correctement pour l'exportation.
Heureux de répondre à toutes les questions au meilleur de ma capacité.
Tout est un peu vague pour moi. D'où vient ce paramètre? Assurez-vous également que vos hypothèses sont correctes avant de faire quelque chose en fonction des hypothèses. Ce que je veux dire, c'est: Essayez un peu de débogage, pour recueillir des preuves tangibles. – GvS
Désolé pour les informations vagues, j'ai essayé d'être aussi détaillé que possible. Quoi qu'il en soit, le paramètre provient de l'application vb elle-même, puis transmis dans la procédure stockée HISTORICAL_COSTS que j'utilise pour générer le DataSet. Mais, le débogage continue, comme il l'a fait depuis un jour et demi :) – Jasoomian