Po pierwsze, chciałbym podziękować tym, którzy odpowiedzieli na moje poprzednie pytania. Jesteście niesamowici!!!Jak spętać Datareader i utworzyć DataTable w Powershell
Oto moje pytanie: Chciałbym zapytać mój serwer sql Przechowywanie procedury i zwrócić datareader. Jednak chcę stworzyć z tego tabelę. Tej tabeli użyję do załadowania programu Excel za pomocą nowych poleceń CommandX OpenSQL. Kod nie powiedzie się, gdy próbuję zbudować DataTable. Nie sądzę, że poprawnie wstawiam nowy obiekt "System.Object []". Oto co mam do tej pory:
$sqlConnection = new-object System.Data.SqlClient.SqlConnection "server=localhost;database=Demo;Integrated Security=sspi"
$sqlConnection.Open()
#Create a command object
$sqlCommand = $sqlConnection.CreateCommand()
$sqlCommand.CommandText = "EXEC Demo.usp_GetTableValueParameter_Data"
#Execute the Command
$sqlReader = $sqlCommand.ExecuteReader()
#Parse the records
$sqlReader | &{ begin{$values = new-object "System.Object[]" $sqlReader["Name"], $sqlReader["Level_Desc"], $sqlReader["Level"]} process {$_.GetValues($values); $datatable.Rows.Add($values)}}
##$datatable | format-table -autosize
# Close the database connection
$sqlConnection.Close()
#STARTING OPENXML PROCESS
#----------------------------
$xlsFile = "C:\Temp\Data.xlsx"
$datatable | Export-OpenXmlSpreadSheet -OutputPath $xlsFile -InitialRow 3
Po prostu dodaj znaki dolara ($) w odpowiednich miejscach :-) – onupdatecascade