Announcement

Collapse
No announcement yet.

Export nach Excel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Export nach Excel

    Hallo zusammen,

    ich bekam die Aufgabe, Daten aus nem SQL-Server nach Excel zu bringen. Leider ist das nicht alles:
    Es sollen alle zusammmengehörigen Daten (resnr) in 1 Exceldatei gebracht werden, die dann auch resnr.xls heißt. Danach soll eine neue XLS-Datei geschrieben werden mit der neuen resnr als Titel und dem entsprechenden Inhalt.

    die Abfrage und die Schleife ist mir klar, aber am Export scheiterts.
    ich poste mal das script mit dr Bitte um Hilfe:

    DECLARE @hr int -- Returncode der sp_OA... Aufrufe
    declare @pfad varchar(255)
    set @pfad = 'c:\'
    DECLARE @katalog int -- Objektvariable für ADOX.Catalog
    DECLARE @verbindung int -- Objektvariable für ADO.Connection
    DECLARE @dbname varchar(255) -- Name der temporären Access-Datenbank
    DECLARE @conString varchar(512) -- Verbindungszeichenfolge für Access-Datenbank
    DECLARE @quelle varchar(255) -- Hilfsfeld für Fehlerbehandlung
    DECLARE @beschreibung varchar(255) -- Hilfsfeld für Fehlerbehandlung
    DECLARE @dummy int -- Dummy Output Parameter
    DECLARE @Excel_Mappe varchar(255) -- Vollständiger Name der Ziel Excelmappe
    DECLARE @tabelle varchar(255) -- Name der zu exportierenden Tabelle
    DECLARE @besitzer varchar(255) -- Besitzer der zu exportierenden Tabelle
    DECLARE @exec varchar(4000) -- Hilfsvariable für dynamische Ausführungen
    declare @sqltext varchar(200)


    declare @werkzeugauswahl varchar(255) -- Variable, die das aktuelle werkzeug aus dem cursor liest
    declare werkzeugcur cursor fast_forward for
    select res_nr from hydra.dbo.Werkzeuge_PLM
    order by res_nr

    -- Erzeugen eines ADOX-Katalog Objekts
    EXEC @hr = master.dbo.sp_OACreate 'ADOX.Catalog', @katalog OUTPUT
    IF @hr <> 0 -- Fehlerbehandlung
    BEGIN
    EXEC sp_OAGetErrorInfo @katalog, @quelle OUTPUT, @beschreibung OUTPUT
    RAISERROR ( 'Fehler beim Erstellen des ADOX.Catalog Objekts: %s', 10 , -1, @beschreibung)
    END

    -- Zufälliges Erzeugen eines Datenbank-Namens
    SET @dbname = @pfad + CAST(newid() AS varchar(100)) + '.MDB'
    -- Erstellen der Verbindungszeichenfolge
    SET @conString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + @dbname

    -- Erstellen einer neuen (leeren) Access-Datenbank
    -- Dieser Schritt ist notwendig, da nur über eine Verbindung zu einer Access-Datenbank
    -- die benötigte Jet-Funktionalität zur Verfügung steht
    EXEC @hr = master.dbo.sp_OAMethod @katalog, 'Create',
    @dummy output,
    @conString
    print @conString
    print @dummy
    print @hr
    IF @hr <> 0 -- Fehlerbehandlung
    BEGIN
    EXEC sp_OAGetErrorInfo @katalog, @quelle OUTPUT, @beschreibung OUTPUT
    RAISERROR ( 'Fehler beim Erstellen der Access-Datenbank %s: %s', 10 , -1, @dbname, @beschreibung)
    END

    -- Variable @verbindung auf die Eigenschaft "ActiveConnection" des Katalog-Objekts setzen
    EXEC @hr = master.dbo.sp_OAGetProperty @katalog, 'ActiveConnection', @verbindung OUTPUT
    IF @hr <> 0 -- Fehlerbehandlung
    BEGIN
    EXEC sp_OAGetErrorInfo @verbindung, @quelle OUTPUT, @beschreibung OUTPUT
    RAISERROR ( 'Fehler beim Zugriff auf Access-Datenbank %s: %s', 10 , -1, @dbname, @beschreibung)
    END

    open werkzeugcur
    fetch next from werkzeugcur into @werkzeugauswahl
    WHILE @@FETCH_STATUS = 0
    BEGIN
    set @sqltext = select * from dbo.GW_Werkzeugview_pro_Res_nr where dbo.GW_Werkzeugview_pro_Res_nr.res_nr = @werkzeugauswahl

    select res_nr from dbo.GW_Werkzeugview_pro_Res_nr
    where dbo.GW_Werkzeugview_pro_Res_nr.res_nr = @werkzeugauswahl


    SET @exec = @sqltext + ' INTO [Excel 8.0;Database=' + @pfad + @werkzeugauswahl + '.xls].[' + @werkzeugauswahl+ '] FROM [ODBC;Driver=SQL Server;Database=blabla;Server=blabla;Trusted_Conne ction=Yes;].[' + @werkzeugauswahl + '.xls]'

    EXEC @hr = master.dbo.sp_OAMethod @verbindung, 'Execute', @dummy output, @exec

    IF @hr <> 0 -- Fehlerbehandlung
    BEGIN
    EXEC sp_OAGetErrorInfo @verbindung, @quelle OUTPUT, @beschreibung OUTPUT
    RAISERROR ( 'Fehler beim Export: (%s): %s', 10 , -1, @exec, @beschreibung)
    END
    FETCH NEXT FROM werkzeugcur INTO @werkzeugauswahl
    end


    Hab das meiste aus nem Forum rauskopiert.. und kapier die Syntax beim execute nicht :-(


    Also dieser teil:

    SET @exec = @sqltext + ' INTO [Excel 8.0;Database=' + @pfad + @werkzeugauswahl + '.xls].[' + @werkzeugauswahl+ '] FROM [ODBC;Driver=SQL Server;Database=blabla;Server=blabla;Trusted_Conne ction=Yes;].[' + @werkzeugauswahl + '.xls]'

    Bitte klärt mich mal auf :-/

    dankeschön

  • #2
    Hallo,

    ..Daten aus nem SQL-Server nach Excel zu bringen.
    um welche Version des MS SQL Server handelt es sich? Im Fall des MS SQL Server 2005 stehen für diese Aufgabe verschiedene Implementierungsalternativen zur Verfügung:
    1. Die XML Web Service-Schnittstelle der Reporting Services 2005 wird in einem eigenen Export-Programm verwendet, um das Ergebnis einer SELECT-Abfrage als XLS-Datei abzuspeichern.
    2. Die Ergebnismenge der SELECT-Abfrage wird als XML formatiert, so dass Microsoft Excel diese XML-Datei direkt öffnen kann (implizite Konvertierung).
    3. Die Ergebnismenge der SELECT-Abfrage wird von einem eigenen Exportprogramm als CSV-Datei gespeichert, so dass Microsoft Excel diese Daten direkt öffnen kann (implizite Konvertierung).
    4. Den Export übernimmt ein Paket der SSIS (SQL Server Integration Services)


    Ab dem MS SQL Server 2005 können über SQLCLR auch komplexe eigene Implementierungen direkt im SQL Server ausgeführt werden. Der Rückgriff auf die späte Bindung der alten Automationschnittstelle (sp_oa...) ist dann nicht mehr notwendig.

    Comment

    Working...
    X