ODBC Connect String

Moin,

ich versuche MSAccess als qbe-Tool zu verwenden, geht auch, aber ich wuerde gern dem ODBC-connect-string so etwas einstellen wie “SCHEMA=meinschema;” damit dir Praefixe wegfallen. Gibt es sowas, geht das?

Gruss undd danke schon mal.

PS: Eine bessere QBE-Umgebung als Navicat waere auch willkommen, also mindestens nested views grafisch…

Du könntest das für den User, der sich anmeldet, machen:

alter user foo set search_path=‘bla’;


Andreas

Falls das

alter user foo set search_path=‘bla’;

nicht klappt, hab irgendwo ne routine, die einfach im Batchlauf alle verlinken Tabellen umbenannt (also das prefix entfernt) hat.

Biste dan sowas interessiert?


Grüße

Jochen

Danke Euch beiden, leider ist Access zu dumm, den default zu erkennen. Code habe ich schon, aber das ist mir zu umstaendlich. Ich werde noch ein bisschen basteln, wenn was klappt poste ich es

gruss

Bist Du sicher, das gemacht zu haben, was ich vorschlug?

Andreas

Ja, leider.
show search_path zeigt mir ausserdem:
“$user”,public
Ich bin mit dem richtigen user angemeldet und verbinde auch mit dem richtigen.
Diesen Connect lasse ich vom Access (per Path-through weil bequem) erstellen, um ihn dann in die Selectquery zu pasten: ODBC;DSN=DAILIES_POSTGRES;DATABASE=grsta;SERVER=172.17.129.35;PORT=5433;UID=dailies;PWD=dailies12;CA=d;A6=;A7=100;A8=4096;B0=254;B1=8190;BI=2;C2=dd_;;CX=1b2103ab
Trotzdem sehe ich noch die ganzen Schemanamen vor den Tabellen.

Gruss

Ich bezweifle, daß Du mit ‘alter user’ erfolgreich den search_path eingestellt hast. Mache das alles mal in psql, setze das für den User, beende es, starte neu und prüfe es via

select useconfig from pg_user where usename=‘…’;

Natürlich setzt Du da Deinen User rein, der sich da anmeldet. Das die Schemanamen noch da sind, ist das eine, wenn der search_path aber in das richtige Schema zeigt kann man die weglassen.

Andreas

Bei select useconfig from pg_user where usename=‘dailies’;
kommt heraus:
{search_path=public}
und in public will ich auch rein. Vielleicht ist es aber auch nur ein Missverstaendnis: Ich bekomme die Tabellen mit Praefix, wenn ich das Schema manuell aus dem SQL entferne, funktioniert es.

Gruss

Also ich denke, klarere Begrifflichkeiten würden weiterhelfen :slight_smile:

Ich versuche Dein Problem mal zusammen zu fassen, zumindest den Teil, bevor ich ausgestiegen bin …

Also:
Wenn Du in Access eine SQL-Pass-Through-Abfrage definierst, dann kannst Du die Tabellen ohne Schemanamen abfragen. ja?(sollte auch so sein)

Und wenn Du die Tabellen mittels ODBC Verknüpfen möchtest, dann (aber nur dann) werden in Access (Reiter Tabellen) Tabellen erzeugt , die etwa wiefolgt heissen:

public_tablename

(Ein Name, den Du jederzeit ändern kannst, zum Beispiel in tablename oder tabelle_ohne_namen oder was auch immer)

Und diesen Effekt magst Du nicht, weil (hilfmir), das umbenennen Tabellen auch mittels vba-Funktion zu umständlich ist, ja?

Frage:
Wieso? Ich dachte du wolltest Access als QBE tool nutzen, IDR werden dann die Tabellen doch nur ein einziges Mal verknüft. oder?

Und wenn nicht, wieso schreibst Du dir dann kein vba-Routine um das zu erledigen?

Das hier ^^ versteh ich übrigens in diesem Zusammenhang überhaupt nicht … Aus welchem SQL? Der Pass-through-abfrage?

Klar, den Tabellennamen vergibt ja auch nur der ODBC-Treiber. Die Datenbank kennt diesen Namen ja garnicht …

Muss wohl noch an meinem Ausdruck feilen. Erstmal danke fuer die Geduld. Also:

Ich moechte keine Tabellen in Access einbinden/verknuepfen/importieren, sondern eine neue Abfrage erstellen. Der gebe ich als ODBC-Connect den o.a. String (Passthrough habe ich nur verwendet, um den String bequem zu erstellen). Klick auf das gelbe Plus (Tabellen hinzufuegen) gibt mir die Liste der in PG vorhandenen Tabellen/Views aber alle mit “public_”-Praefix, was ich bei spaeterem copy-paste in den PG-Admin oder anderes Tool nicht gebrauchen kann. Ich kann natuerlich haendisch die Praefixe aus dem von Access erstellten SQL entfernen (oder im QBE-Bereich Aliase festlegen), aber genau das moechte ich umgehen (Faulheit/Effizienzmaximierung). Mache ich da noch etwas falsch?

Gruss und danke

Yo, dachte ich mir so

ALso ich hab nun mal Access angeworfen (2003) … Welche Version verwendest Du?

In meiner Version müssen die Tabellen bereits verknüpft sein, damit ich die mit dem gelben + auswählen kann, ich bekomme also keine Liste der in pg vorhandenen Views/Tabellen sondern eine Liste der bereits verknüpften Tabellen/Views.

Aber das sollte nicht viel zur Sache beitragen, ausser dass ich glaube dass du bereits alle Tabellen/Views vorher verknüpft hast (grüne Weltkugelsymbole)) unter dem Reiter Tabellen.

Andernfalls verwendest Du ein Feature, das ich in 2003 nicht habe …

Ich kann natuerlich haendisch die Praefixe aus dem von Access erstellten SQL entfernen (oder im QBE-Bereich Aliase festlegen), aber genau das moechte ich umgehen (Faulheit/Effizienzmaximierung).

Mache ich da noch etwas falsch?

Ich denke, der Tabellenname public_xxx wird vom ODBC-Treiber erzeugt.
Und wenn dem so sein sollte, hast Du imho keine Möglichkeit, dies zu verhindern.

Also → Tabellen einbinden und rechtsklick umbenennen :wink:

Dann klappt alles so wie du es erwartest

Hab keine andere idee hierzu

Hast Du. Erst den ODBC-String der Query setzen, dann auf das gelbe Plus und schon solltest Du uneingebundene Tabellen und Views direkt aus dem Pg sehen.

Wenn mehr leider nicht geht, muss ich mich wohl damit abfinden. Vielen Dank allen. Weiss jemand irgendein gutes Qbe-Tool, das auch nested Queries vertraegt?

Danke und Gruss

hmm stimmt, mal wieder was neues gekernt.

Aber mir wär dieser weg viel zu umständlich, ich würde das genau anderes herum lösen.

Tabellen einmalig einbinden → tabellen einmal umbenennen ->dann queries in access erstellen (schon mit den richtigen Tabellennamen) → dann diese in pass through umwandeln