yotyot
Goto Top

Excel-Verbindung zu SQL-Server: geschweifte Klammern in den Daten

Moin!

Ich habe eine MS SQL Datenbank (2008), die ich mit Excel 2010 abfrage. Wenn ich die Datenverbindung über -> andere Quellen -> Microsoft Query erzeuge, ist alles gut. Wenn ich aber stattdessen "vom SQL Server" auswähle, werden mir bestimmte Spalten nicht angezeigt. Es handelt sich bei der Abfrage um eine View, die mir zusammengesetzt habe, wie ich sie brauche. Auf den Rest der Datenbank und wie die Daten gespeichert werden, habe ich keinen Einfluss.

Nun gibt es da folgende Besonderheit: die Spalten, die mir nicht angezeigt werden, sehen im MS SQL Server Management Studio ganz normal aus, wenn ich sie mir mit Access ansehe, stelle ich fest, dass da geschweifte Klammen drin sind, die Einträge sehen also so aus: {ABCD12-DABB-0129DD-33BB99}. Ok, also so ähnlich jedenfalls.

Natürlich könnte ich in Excel hergehen und die Variante über MS Query gehen, was aber zur Folge hat, dass ich auf Systemen, auf die ich keinen Zugriff habe, DSN-Einträge erstellen müsste.

Wie kann ich nun also entweder Excel dazu bringen, mir die Spalten auch mit geschweiften Klammern anzuzeigen (die Klammern brauche ich nicht, die müsste ich ohnehin replacen) oder wie kann ich die Klammern direkt im Management Studio ausfiltern? Ich kenne natürlich den Replace-Befehl, der mir Tabellen ändert, das geht aber nicht, es muss also zur Laufzeit während der Anzeige geschehen.

Jemand mit Tips oder brauchbaren Links am Start?

Y.

Content-Key: 265696

Url: https://administrator.de/contentid/265696

Printed on: April 23, 2024 at 08:04 o'clock

Member: emeriks
emeriks Mar 09, 2015 at 13:29:40 (UTC)
Goto Top
Hi,
Natürlich könnte ich in Excel hergehen und die Variante über MS Query gehen, was aber zur Folge hat, dass ich auf
Systemen, auf die ich keinen Zugriff habe, DSN-Einträge erstellen müsste.
Verstehe ich jetzt nicht. Die DSNs müssen dort erstellt werden, wo das Excel läuft.

E.
Member: YotYot
YotYot Mar 11, 2015 at 13:59:13 (UTC)
Goto Top
Verstehe ich jetzt nicht. Die DSNs müssen dort erstellt werden, wo das Excel läuft.

Über -->Daten -->Aus anderen Quellen -->von SQL-Server erstelle ich das als DSN-lose Verbindung, die einen integrierten Standardzugriff nur auf MS SQL ermöglicht. Auf diese Weise brauche ich keinen DSN-Eintrag, keine Treiberauswahl, keine Konfiguration.

Y.
Member: emeriks
emeriks Mar 11, 2015 at 14:13:10 (UTC)
Goto Top
Ja und?
Trotzdem werden DSN-Verbindungen - wenn man sie braucht - auf jenem System erstellt, wo die Anwendung läuft, welche diese benötigt. Und nicht auf dem Remotesystem.
Oder was meinst Du mit
Systemen, auf die ich keinen Zugriff habe
?
E.
Member: YotYot
YotYot Mar 11, 2015 at 14:33:33 (UTC)
Goto Top
Clientrechner, Terminalserver und Notebooks in diesem Fall. Mit der DSN-losen Variante braucht da nichts konfiguriert zu werden, es wird die integrierte Sicherheit verwendet, also der Zugriff über den Benutzer gesteuert, es braucht kein User und kein Passwort eingetragen zu werden und ich kann die Excel-Datei einfach zur Verfügung stellen, die Daten können eben OHNE den üblicherweise verwendeten Eintrag abgerufen werden.

Genau das ist auch der Charme bei der Sache: Ich muss nicht für jeden User (und das sind wirklich nur User) möglicherweise noch auf mehreren Rechnern DSN-Einträge anlegen, oder den ohnehin überlasteten Admin dazu bewegen, das systemweit zu machen oder mir für ein paar Minuten Adminrechte zu geben.

Y.
Member: emeriks
emeriks Mar 11, 2015 at 14:44:22 (UTC)
Goto Top
Member: YotYot
YotYot Mar 11, 2015 at 15:20:46 (UTC)
Goto Top
GPO komme ich derzeit auch nicht heran, DSN via VBA sieht aber gut aus. So etwas habe ich mal in der Vergangenheit gesucht und nicht gefunden. Danke dafür!

Beantwortet zwar nicht direkt meine Frage, würde aber zumindest in diesem Fall helfen. Ich teste das morgen mal und melde mich dann mit dem Ergebnis.

Y.
Member: emeriks
emeriks Mar 11, 2015 at 15:26:53 (UTC)
Goto Top
GPO komme ich derzeit auch nicht heran
Anforderung definieren und an die IT stellen
Umsetzen lassen (ggf. Weg über die Leitungsebene)
Member: YotYot
YotYot Mar 11, 2015 at 15:34:48 (UTC)
Goto Top
Normalerweise ja. Weil unser derzeit durch Mitarbeiterfluktuation leider einziger Admin geringfügig "Land unter" hat, will ich seine 500 Überstunden nicht noch mehr erhöhen. Außerdem kann man solche "Spielchen" ja immer mal gebrauchen face-wink

Y.
Member: YotYot
YotYot Mar 13, 2015 at 07:13:56 (UTC)
Goto Top
Sooo, das mit dem testen hat etwas länger gedauert.

DSN via VBA funktioniert so leider nicht, was zuallererst daran liegt, dass das Script für VB ist und VBA da doch etwas anders tickt, auch, wenn es angeblich ein direktes Pendant im MS Office zu VB sein soll. Ein paar Kleinigkeiten unterscheiden sich eben und das "Declare Function" mag VBA nicht. Habe noch nicht herausgefunden, wie man das in VBA umsetzt.

Allerdings habe ich den eigentlichen DSN-Eintrag dann auf anderem Wege zu erstellen versucht, auch mit Hilfe anderer Scripts, die praktisch das gleiche machen. Ergebnis: leider negativ, es gibt immer irgendwelche Dinge, woran es scheitert. Aktueller Stand also: geht immer noch nicht.

In der Zwischenzeit ist eine weitere Abfrage dazu gekommen, die ebenfalls geschweifte Klammern in den Datenfeldern hat und ich muss mich jetzt vorrangig darum kümmern, dass das funktioniert, der Komfort muss warten.
Ich bin also immer noch dankbar für jeden Hinweis, wie ich es hinbekomme, dass diese Felder mit den geschweiften Klammern in den Datenfelder in Excel auch ankommen bzw. die Felder kommen ja an, nur die Daten nicht.

Y.
Member: emeriks
emeriks Mar 13, 2015 at 07:37:32 (UTC)
Goto Top
Was heißt ...?
"Declare Function" mag VBA nicht
Was funktioniert da nicht?

Alternativ kannst Du es auch direkt über die Registry versuchen. Siehe Bsp. hier
Musste eben bloß im HKCU speichern (statt wie im Bsp. HKLM). Und beachte 32- und 64bit-Varianten von Office.

E.
Member: YotYot
YotYot Mar 13, 2015 at 08:15:38 (UTC)
Goto Top
"Nach einem End Sub darf nur noch xyzirgendwas kommen", erhalte ich als Meldung. Weiß nicht mehr genau, was er da maximal haben will. Es steht nur gar kein End Sub im Weg... :-o
Das sehe ich mir aber mal in Ruhe an, wenn der Zeitdruck weg ist. Nächste Woche oder so.

HKCU - ich habe User, die weit weg sind und vor allem keine Berechtigung auf die Registry haben. Und Ahnung, was sie da machen sollen, haben sie auch nicht.

Es geht hier nicht um das, was ich für mich machen möchte, sondern um das, was meine User können und dürfen und den Aufwand, den ich dafür betreiben möchte, wenn es etwas neues gibt. Wie ich trotz Verbot an einen DSN-Eintrag komme, weiß ich. Oder an die Registry. Da aber die entfernten User keine Rechte auf .reg, .cmd, .vbs uns solche Sachen haben, ich aber nicht für jeden manuell was einrichten will, versuche ich das auf diesem Weg.
Außerdem ist da durchaus der Gedanke, ein paar der Dateien mal weiterzugeben außerhalb meines eigenen Netzwerkes, wo noch wieder andere Sicherheitsrichtlinien gelten.

Klar kann ich mir die Rechte in unserem Netzwerk beschaffen oder mit dem Admin mal einen kleinen Plausch halten. Würde auch funktionieren, dass der mir die Einstellungen per GPO macht. Nächstes Jahr jedenfalls. Aber ich würde eben bei Bedarf auch gerne "mal eben" so ein Ding raushauen können, ohne die große Runde machen zu müssen. Für den Einzelfall ist das immer kein Problem.

Y.
Member: emeriks
Solution emeriks Mar 13, 2015, updated at May 08, 2015 at 06:55:02 (UTC)
Goto Top
Also um HKCU sollte der User alle erforderlichen Rechte haben. Da gibt es nur wenige Schlüssel, welche gesperrt sind. Und in seinem ODBC-Schlüssel darf ein User schreiben.
Ich meinte natürlich auch, dass Du das per VBA in die Registry schreibst!

E.
Member: YotYot
YotYot Mar 13, 2015 at 08:59:54 (UTC)
Goto Top
Per VBA in die Registry - stimmt, das würde auch gehen. Auch ein Ansatz, lauter Zeugs, das ich alles mal testen muss. Ich seh schon, es bestätigt sich mal wieder: jede Antwort bringt neue Fragen auf, mit jedem mal weiß man wieder mehr, was man nicht weiß face-wink

Gib' mir ein paar Tage, ich muss mir die Infos erst zusammensuchen und noch ein paar schlaue Seiten und Bücher lesen. Wenn Du für VBA -> Registry einen guten Link für mich hättest, brauche ich nicht so lange zu suchen face-wink

Y.

Danke übrigens für die Denkanstöße!
Member: YotYot
YotYot May 08, 2015 at 06:54:53 (UTC)
Goto Top
Problem gelöst!

Allerdings anders, als gedacht: Es gibt anscheinend ein Problem mit der Datenverbindung bei Excel, wenn ich die Daten über SQL direkt, also ohne DSN abfrage. Wenn ich das ganze auf die gleiche Weise mit VBA mache, funktioniert es.
Ich erstelle also die Datenverbindung als DSN-lose Verbindung per VBA, nicht wie bisher über den Assistenten. Assistenten können ohnehin nichts. Konnten die noch nie. Wie konnte ich nur auf die Idee kommen, es mir für eine Abfrage auf die Schnelle mal eben einen Assi zur Hand zu nehmen? Schande über mich! face-wink

Danke aber für die Denkanstöße!

Y.