Tabellen in einer Datenbank ermitteln [erledigt]

Hier dreht es sich um den PostGre Server

Moderator: Moderatoren

Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Klaus Schuster »

Moin,

select table_name, table_type from information_schema.tables where table_type = 'BASE TABLE' AND table_schema = 'public' order by table_name

gibt im pgAdmin wie erwartet drei Einträge mit Namen und Typ zurück. In der Anwendung jedoch eine Datei mit drei Datensätzen ohne Felder. Ist dies ein Fehler in XBase? Die Verbindung usw. steht, und ich kann problemlos Tabellen etc. abfragen. Nur dieses Statement bereitet Probleme.
Dateianhänge
image1.jpg
image1.jpg (182.42 KiB) 11456 mal betrachtet
Zuletzt geändert von Klaus Schuster am Di, 28. Apr 2020 6:41, insgesamt 1-mal geändert.
Gruß Klaus
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von ramses »

Hallo Klaus

es geht schon. Aber nicht mit der PGDBE. Ich kann nur vermuten dass es am Datentyp "Name" liegt mit der die PGDBE nichts anfangen kann mit welchem die Abfrage jedoch zurückgegeben wird.

Mit Direktaufruf aus dem XBASE Programme mit den Funktionen aus LIBPQ (native Postgres) ist die Abfrage Problemlos möglich.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Klaus Schuster »

Hallo Carlo,

Danke für Deine schlüssige Antwort. Sie hinterlässt die Frage, ob es nicht sinnvoller ist an den Klassen von xBase vorbei stets direkt über die LIBPQ auf die Datenbank zuzugreifen. Diese Diskussion hast Du glaube ich bereits im Forum mit Werner u.a. geführt. Dessen ungeachtet werde ich das Statment an den Support senden, nachfragen und darüber berichten.
Gruß Klaus
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von ramses »

Hallo Klaus

der Datentype name ist wie folgt definiert:
sqlname.jpg
sqlname.jpg (21.1 KiB) 11419 mal betrachtet
Sie hinterlässt die Frage, ob es nicht sinnvoller ist an den Klassen von xBase vorbei stets direkt über die LIBPQ auf die Datenbank zuzugreifen.
Für mich ist die Antwort definitiv: JA.
Schade für die Zeit welche ich mit der PGDBE verbrannt habe. Besonders die ISAM-Emulation hat mich sehr entäuscht.
Zum Glück habe ich den Weg über die LIBPQ gewählt. MIt den Alaska-spezifischen Datenbanken Felder usw. ist die Nutzung der Datenbanken mit unterschiedlichen Programmen (Hersteller) sowieso nicht möglich. Und genau dies wird immer wichtiger .......
Valar Morghulis

Gruss Carlo
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Marcus Herz »

Hi

Da kommt die Frage auf, wieviele Programmierer jetzt ihre eigene LIBPQ Schnittstelle programmieren (oder schon haben).
Ich hatte ja vor einigen Jahren eine solche schon im Forentreffen vorgestellt.
Wie könnte man hier eine gemeinsame Lösung für alle erstellen?
Ich würde meine Code als Basis zur Verfügung stellen (ist ja für meine Anforderung fertig und produktiv), blos wie bekommt man dann die vielen Köche (= gemeinsame Weiterentwicklung) unter einen Hut?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von ramses »

Hallo Marcus

das ist eine gute Frage!
Ich kann mir gut vorstellen dass schon einige Ihre eigenen Tools zur Nutzung von PG geschrieben haben .....
Und dies sicher auch weiter tun werden weil die PGDBE die Möglichkeiten doch zu sehr einschränkt.

Der Vorteil einer eigen Klasse im Sourcecode ist schon der dass dieser bei Bedarf sofort selbst angepasst und repariert werden kann ohne lange auf ein neues Release von xbase warten zu müssen .......

Klaus könne so z.B. sein Datatyp 19 (Name) selbst einbauen.

Vielleicht sind wir ja wirklich auch einfach die einzigen beiden die wir uns Klassen für PG geschrieben haben und die PGDBE nicht verwenden......

Wenn es jemand Organisiert würde ich bei einer Gemeinsamen Lösung sicher auch mithelfen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Manfred »

ich habe noch zu wenig Ahnung davon, deshalb kann ich sicherlich nicht so viel helfen dabei.
Obwohl, ich könnte jede Menge Fragen stellen.... :badgrin:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Marcus Herz »

- Da müsste jemand eine Umfrage machen. Ich kann das nicht.
- Leider trifft man sich nicht nächste Woche.
- Könnte man vielleicht auf die Tagesordnung im Oktober setzen, wenn Interesse gezeogt wird
- zumindest im kleinen Kreis der Ineteressenten
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln

Beitrag von brandelh »

Jeder der Beiträge erstellen kann, müsste Umfragen starten können, ich meine aber es muss der erste Eintrag sein.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von AUGE_OHR »

hi,
ramses hat geschrieben: Mo, 27. Apr 2020 15:11 Vielleicht sind wir ja wirklich auch einfach die einzigen beiden die wir uns Klassen für PG geschrieben haben und die PGDBE nicht verwenden......
hm ... das Thema hatten wird doch schon ... vor 8 Jahren :!:
gruss by OHR
Jimmy
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von ramses »

AUGE_OHR hat geschrieben: Mo, 27. Apr 2020 18:21 hm ... das Thema hatten wird doch schon ... vor 8 Jahren :!:
War das nicht dein PGu.EXE?
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Werner_Bayern »

Servus Klaus,

also bei mir gibt er das korrekte Ergebnis zurück:
Unbenannt.PNG
Unbenannt.PNG (4.28 KiB) 11346 mal betrachtet
Das ist mein Code dazu:

Code: Alles auswählen

cBefehl := "select table_name, table_type from information_schema.tables where table_type = 'BASE TABLE' AND table_schema = 'public' order by table_name"
oSession:executeQuery(cBefehl, SQL_TABLE2, .f.)
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Werner_Bayern »

Ansonsten versuch es mit einem Cast für die Feldtypen (kommt Dir bekannt vor? 8)):

Code: Alles auswählen

cBefehl := "select table_name::text, table_type::text from information_schema.tables where table_type = 'BASE TABLE' AND table_schema = 'public' order by table_name"
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Klaus Schuster »

Danke Werner, Dein Versuch bestätigt die Antwort vom Support, dass es bei Ihnen ebenfalls gelaufen ist. Wahrscheinlich wurde mit dem 1185er Release diese Baustelle geschlossen. Ich arbeite (noch) mit 1159.
Gruß Klaus
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Klaus Schuster »

@Carlo & Marcus: Ich wäre in Regensburg bei einem Treffen dabei. Bis dahin könnten wir uns Gedanken darüber machen
  • welche Funktionen benötigt werden?
  • welche bereits realisiert wurden?
  • wie wir unsere Teile zusammenfügen können?
Code-Reviewer ist ein Thema, dem ich mich gerne widmen würde.
Gruß Klaus
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Marcus Herz »

Meine Lösungswege sind ja immer gleich:
- Klasse, welche den Zugriff auf DBMS kapselt.
- nach außen hin die üblichen Funktionen als Methoden: fieldget/-put, commit, eof, bof, skip, use, usw.
- die komplexen Kommunikationen mit PG, (refresh, commit, Metadaten) sind für den Anwender nicht relevant.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Klaus Schuster »

Spannend, Marcus, und interessant: Mein Ansatz ist ganz auf SQL ausgerichtet ( :select, :delete, usw.) da ich volständig auf SQL umsteigen und nicht Funktionen aus XBase abilden möchte.
Gruß Klaus
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Marcus Herz »

Das schliesst sich nicht aus, aber auch in einem Select musst du skippen, und Updates/Deletes musst du auch erzeugen. Vielleicht habe ich vergessen zu erwähnen, dass ein :use() ja nichts anderes ist als ein select... öffnen. Aber über Methoden Namen muss man den Konsens finden, das ist ja die Aufgabe. Und nach einem Select musst du ja auch auf die Spalten zugreifen, wissen,. welcher Datentyp, etc. warum nicht die bekannte Xbase Syntax verwenden.

Dein beschriebener Weg ist ja das, was abgedeckt werden soll. Es klingt nur einfacher als es ist. Der Teufel ist ein Eichhörnchen...
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln

Beitrag von Frank Grossheinrich »

Moin ramses,
MIt den Alaska-spezifischen Datenbanken Felder usw. ist die Nutzung der Datenbanken mit unterschiedlichen Programmen (Hersteller) sowieso nicht möglich. Und genau dies wird immer wichtiger .......
Leider falsche Aussage! ... Nein, Gott-sei-Dank, falsche Aussage!
Ja, es es mag immer wichtiger werden, dass man mit unterschiedlichen Programmen, sogar gerne mal mit dem pgAdmin, auf Daten zugreift und diese sogar ändert, aber die PGDBE bekommt das sogar mit! Du kannst also mit pgAdmin Schlüsselfelder ändern und dann mit der PGDBE danach suchen oder navigieren.

@Klaus: Danke, dass du dich an den Support gewendet hast.

Gruß, Frank
We love Xbase++, and you?
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Manfred »

wobei mich jetzt mal interessieren würde, warum das auch nicht gehen soll? Die PgDbe sorgt doch nur für eine Verbindung zur Datenbank und speichert doch nichts zwischen. Wäre doch genauso, als wenn man mit einem DBF Editor was ändern würde und die DBFDBE würde es nicht merken, oder? Das ist doch auch nicht der Fall.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Marcus Herz »

Hallo Frank
Ist das neu?. Ich habe im Februar 20 noch intensive Tests mit der PGDBE durchgeführt. Aber es wurden vom Upsize Tool keine Trigger für die __Ord Felder angelegt. Was ja die Vorraussetzung für deine Aussage ist.
Ich habe in den Update Informationen auch keine Hinweise darauf gefunden.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln

Beitrag von ramses »

Hallo Frank
Frank Grossheinrich hat geschrieben: Di, 28. Apr 2020 11:15 Leider falsche Aussage! ... Nein, Gott-sei-Dank, falsche Aussage!
ich habe damit gemeint dass es mit den Xbase Versionen die mir zur Verfügung stehen nicht gelungen / möglich ist mit der PGDBE im DBF Modus (ISAM) auf Datenbank zuzugreifen, also zu Arbeiten, die von anderen Programmen (keine XBase Apps) bereitgestellt werden.

Wenn dies wie du schreibst doch möglich ist wäre eine Anleitung von deiner/eurer Seite wirklich sehr sehr hilfreich.

Sicher im SQL Modus geht es. Pass-Through SQL oder Universal-Sql oder wie immer du das nennst. TBD steht da in der Hilfe.

Aber das geht auch mit den Phil Ide Tools von 2004 oder denen von Pablo ....

Von der PGDBE hätte ich mir eigentlich gewünscht dass Sie wie die ADSDBE funktioniert. Wenn ich an PGDBE denke verbinde ich damit immer eine Funktionsweise wie wir dies von der DBFNTX seit langem kennen. ..... go top, skip, set filter, index on usw.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Tom »

Was geht: SQL in allen Varianten direkt oder eine andere Software, die auch die PGDBE verwendet. Was willst Du gleich noch zusätzlich, Carlo? Dass der Server weiß, was die PGDBE macht, und das sozusagen transparent an Programme durchreicht, die sie nicht verwenden? Wow. Wozu? Und wie zur Hölle sollte das gehen?
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von ramses »

Hallo Tom

ich will gar nichts!! Ich bin mit dem aktuellen Funktionsumfang meines Toolsets mehr als zufrieden.

Frank hat eine ungenaue Äusserung von mir aufgegriffen. Darauf habe ich vermutlich wieder ungenau geantwortet.

Vielleicht gehts so besser: Mit PGDBE kann im ISAM Mode nur mit speziell erstellten Datenbanken gearbeitet werden.

Entschuldige: Deutsch ist nicht meine Sprache.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Frank Grossheinrich
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 142
Registriert: Fr, 31. Mär 2017 15:06
Wohnort: Eschborn
Hat sich bedankt: 5 Mal
Danksagung erhalten: 81 Mal
Kontaktdaten:

Re: Tabellen in einer Datenbank ermitteln [erledigt]

Beitrag von Frank Grossheinrich »

Hey ramses,
Vielleicht gehts so besser: Mit PGDBE kann im ISAM Mode nur mit speziell erstellten Datenbanken gearbeitet werden.
Ich versuche mich auch mal mit Deutsch:

PGDBE kann nur ISAM, wenn die Datenbank von DBF nach Postgres migriert (upsized) wurde. PGDBE kann ISAM nur mit den beim Upsize Prozess "beigemischten" Meta-Informationen. Diese werden für ISAM zwingend benötigt.

ISAM ohne diese Meta-Information geht nicht. Deshalb kann man auch nicht per ISAM auf Datenbanken zugreifen, die nicht durch den Upsize Prozess gelaufen sind. ISAM auf eine normale Datenbank von einer beliebigen Quelle/Software ist sogar für Xbase++ unmöglich.

Ein upsiszte Datenbank (mit allen Meta-Informationen) kann aber wiederum - und deshalb habe ich dir widersprochen - von jeder beliebigen Software gelesen und sogar manipuliert werden. Das schadet der ISAM Emulation nicht.

Konnte ich mich ausdrücken?

Gruß, Frank
We love Xbase++, and you?
Antworten