none
Daten über SQL Server SP in accdb schreiben

    Frage

  • Hallo

    ich stehe derzeit an einem Punkt wo ich nicht weiß, was die beste Lösung ist.

    Wir selctieren und speichern des öfteren Daten in eine Tabelle einer Filter.accdb, die nur dafür da sind, in anderen Office-Progammen (z.B. Word) weiterverarbeitet zu werden. Um sich die Daten nicht gegenseitig zu überschrieben, habe ich für jeden Client eine eigene filter.accdb auf C: angelegt. Hier werden die Daten dann nochmals für die entsprechende Situation sortiert und gefiltert. Das ganze ist dann mit einer aufwendigen Word-VBA-Applikation verbunden, die sehr gut läuft.

    Jetzt kommt die Frage, wie mache ich das zukünftig?

    Klar, ich kann zwar via ODBC auch auf den SQL-Server zugreifen, aber da hätte ich wieder das Problem, dass ich nur eine Tabelle für alle Clients habe und nicht wie beider der Filter.accdb für jeden Rechner. Dann habe ich mir mal überlegt, für jeden Client eine temporäre Tabelle anzulegen, aber damit habe ich keine Erfahrung. Am liebsten würde ich mir die Daten über eine Stored Procedure filtern und direkt in die Access-Tabelle schreiben lassen. Aber das geht nicht, oder? Ich habe jetzt schon so lange gesucht und wirklich kein Beispiel gefunden.

    So in der Art, aber das gibts nicht, oder?

    DELETE FROM c:\filter.accdb) tblBetriebTeilnehmerSerie
    
    INSERT INTO (c:\filter.accdb) tblBetriebTeilnehmerSerie
                SELECT anrede,
                       anrede1,
                       vorname,
                       nachname,
                       vkid,
                       filterung,
                       abteilung,
                       adate,
                       email
                FROM   tblBetriebTeilnehmer
                WHERE  vkid = @betriebid
                ORDER  BY nachname


    Liebe Grüße, die Luzie!

    Mittwoch, 2. November 2016 09:09

Antworten

  • Hallo Luzie,

    wenn das gehen würde, könntest Du die Accdb Datei aber auch nur auf dem Server erzeugen/aktualisieren. Der SQL Server kennt deinen Client ja nicht und weiß daher auch nicht, wohin die Dateien geschrieben werden sollen.

    Man könnte zwar den UNC Pfad auch angeben, dann muss der Account, der den SQL Server ausführt aber auch Zugriff auf alle UNC Pfade haben.

    Für eine MDB schau mal hier:

      http://www.codeproject.com/Tips/43938/Export-data-from-SQL-Server-to-MS-Access

    für Accdb müsstest Du auf dem Server ggfs. noch die Access Database Engine in der passenden Version installieren und den ConnectionString von "Microsoft.Jet.OLEDB.4.0" auf "Microsoft.ACE.OLEDB.12.0" anpassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Luzie Montag, 21. November 2016 16:56
    Mittwoch, 2. November 2016 11:03
    Moderator

Alle Antworten

  • Hallo Luzie,

    anstatt einzelne lokale Datenbanken für jeden PC anzulegen, könntest Du auch einfach deine SQL Server Tabelle um eine Spalte "PC", "User" oder ähnliches erweitern und für jeden PC/Benutzer dann nur die Daten abrufen/einfügen, die ihm zugeordnet sind. Das dürfte meiner Meinung nach erheblich besser für deine Zwecke geeignet sein.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 2. November 2016 10:00
    Moderator
  • Hallo Stefan,

    ja, das hatte ich auch schon mal überlegt.

    Aber mit der Filter.accdb ist es für uns schon etwas einfacher, da dort die eingespeicherten Daten bereits für die Serienbriefe und Etikettenvorlagen vorgefiltert und sortiert sind. Und mit c:\filter.accdb ist auch die Verbindung zum Frontend immer gleich obwohl jeder Client eine andere Datei benutzt. Weiterhin speichere ich auch bestimmste und häufig verwendete Filter dort in einer Tabelle, die dann direkt PC-spezifisch wieder ausgewählt werden können.

    Wenn ich das alles auf den SQL Server legen würde, hätte ich Unmengen an Tabellen und Querys und für jeden neuen PC oder Benutzer müsste ich immer wieder neue Tabellen anlegen. Die Filter.accdb brauche ich in dem Falle nur wieder auf c:\ zu legen.

    Ich würde sagen, in diesem Falle ist das Zugreifen auf einen Filter.accdb schon einfacher.

    Ich dachte, vielleicht gibt es eine Möglichkeit über eine gespeicherten Prozedur Daten in eine Accesstabelle zu speichern. Sonst muss ich es per VBA machen.

    Liebe Grüße, die Luzie!

    Mittwoch, 2. November 2016 10:25
  • Hallo Luzie,

    wenn das gehen würde, könntest Du die Accdb Datei aber auch nur auf dem Server erzeugen/aktualisieren. Der SQL Server kennt deinen Client ja nicht und weiß daher auch nicht, wohin die Dateien geschrieben werden sollen.

    Man könnte zwar den UNC Pfad auch angeben, dann muss der Account, der den SQL Server ausführt aber auch Zugriff auf alle UNC Pfade haben.

    Für eine MDB schau mal hier:

      http://www.codeproject.com/Tips/43938/Export-data-from-SQL-Server-to-MS-Access

    für Accdb müsstest Du auf dem Server ggfs. noch die Access Database Engine in der passenden Version installieren und den ConnectionString von "Microsoft.Jet.OLEDB.4.0" auf "Microsoft.ACE.OLEDB.12.0" anpassen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Luzie Montag, 21. November 2016 16:56
    Mittwoch, 2. November 2016 11:03
    Moderator
  • Hallo

    ok, das stelle ich mal hinten an. Ich will mal schauen, ob ich es doch mit einer Datei für alle hinbekomme.


    Liebe Grüße, die Luzie!

    Montag, 21. November 2016 16:56