open Tables oder connected User abfragen [erledigt]

Advantage Database Server

Moderator: Moderatoren

Antworten
DelUser01

open Tables oder connected User abfragen [erledigt]

Beitrag von DelUser01 »

ADS 12.x

Hallo

Den ADS benutze ich zwar schon seit Jahrzehnten, aber nur connect und disconnect.
Jetzt hilft es nichts ich muss mich mit den speziellen ADS-Funktionen beschäftigen.

Muss herausfinden, ob Arbeitsplätze angemeldet sind.
Wie z.B. im Advantage Data Architekt angezeigt
Connection Name und/oder Network Address. Schön wäre natürlich auch der Username wie im Feld OS Login, da zeigt er aber immer nur meinen eigenen Namen und die anderen nicht.

FRAGE:
Gibt es irgendwo Xbase++-Beispiele für die Verwendung der ADS-Funktionen?
Freue mich immer riesig wenn es um C-Strukturen geht :-(

Z.B. mit AdsMgGetUserNames() ?
Zuletzt geändert von DelUser01 am Mo, 22. Jan 2018 4:54, insgesamt 1-mal geändert.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

Roland,

es gibt ein Alaska-Sample dazu, das kann ich Dir morgen zusenden. Ich habe auf Basis dieses Beispiels auch eine eigene Funktion daraus gebaut, in der ich alle gelockten Sätze mit Rechenrnamen und angemeldetem User anzeige. Dabei musste ich allerdings feststellen, daß genau diese beiden Daten nicht mir den in der Xbase++-Runtime mitgelieferten dll klappen - die sind vom ADS 7. Du musst dazu die dll aus der aktuellen ADS-Insatallation verwenden. Die Namen schreib ich Dir morgen mit rein.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

Guten Abend Jan
Jan hat geschrieben: Do, 11. Jan 2018 21:20es gibt ein Alaska-Sample dazu, das kann ich Dir morgen zusenden.
...
Du musst dazu die dll aus der aktuellen ADS-Insatallation verwenden. Die Namen schreib ich Dir morgen mit rein...
Prima - Danke!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

Roland,

das Alaska-Beispiel liegt unter \source\samples\adsdbe\console

Die beiden Dateien, die für PC-Namen und angemeldeten User in der aktuellen Version benötigt werden, sind die ace32.dll und die axcws32.dll.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

Hallo Jan

in meinem Archiv habe ich die Samples von Alaska jetzt gefunden, aber nicht mehr an der alten Installations-Stelle.
Kann es sein, dass mit den neuen Updates die Samples nicht mehr mitgeliefert und damit nicht mehr installiert werden?
Habe da vor kurzem schon einmal etwas gelesen dass einer die Samples nach der Neuinstallation der 2.x gesucht hat.
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von nightcrawler »

Also: ich würde dringend empfehlen, einmal eine schöne Klasse für SQL zu bauen. Dann spart man sich das ganze API Gedönse und kann alles sauber im Architect testen, bevor man es in die Applikation einbaut. Das reduziert die komplette Codeänderung auf wenige Zeilen SQL.

Code: Alles auswählen

EXECUTE PROCEDURE sp_mgGetConnectedUsers()
liefert z.B. ein Tabelle aller zum ADS Server verbundenen Benutzer inklusive folgender Felder:

UserName (O) Name of the connected user.
ConnNumber (O) NetWare connection number. (Deprecated)
DictionaryUser (O) Name of user that has authenticated to an Advantage Data Dictionary.
Address (O) IP or IPX address of the connected user.
OSUserLoginName (O) Operating system login name of the connected user.
TSAddress (O) Terminal Server Client IP address if the connection is made from a Terminal Server session.
ApplicationID (O) Application ID for the connected user. See sp_SetApplicationID.
AverageCost (O) The estimated average cost per server request for the connection. If this value is less than or equal to the current threshold (see sp_mgGetActivityInfo), the next request will be placed in the Express Queue.

Wenn man dann nur bestimmte will, oder je Rechner nur einen Eintrag o.ä., dann kann man das SQL einfach erweitern:

Code: Alles auswählen

SELECT UserName FROM
(
  EXECUTE PROCEDURE sp_mgGetConnectedUsers()
) anyalias
WHERE UserName LIKE 'roland%'
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

Hallo Joachim
nightcrawler hat geschrieben: Fr, 12. Jan 2018 16:14Also: ich würde dringend empfehlen, einmal eine schöne Klasse für SQL zu bauen. Dann spart man sich das ganze API Gedönse und kann alles sauber im Architect testen, bevor man es in die Applikation einbaut. Das reduziert die komplette Codeänderung auf wenige Zeilen SQL.
aber ich habe kein SQL - immer noch das gute alte DBF...
...bestimmt ann man aber auch dafür eine schöne Klasse bauen.

Da sind wir aber wieder beim uralten Problem: Unmenge (Xbase++-) Programmierer erfinden das Rad immer wieder neu da es eben (fast) keinen gibt der solche schöne schicke Sachen für alle baut...

Wie lange gibt es jetzt ADS? Und genau so lange Jahre bauen viele Programmierer immer wieder Ihre eigenen Abfragen und fummeln mit den C-Strukturen.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

Roland,

hier geht es um SQL als Abfragesprache. Nicht um Datenbanken. Du kannst von Xbase++ aus eine SQL-Anweisung an den ADS schicken, der Dir die Daten zu den Usern zurück gibt. Auch wenn Du ansonsten mit dbf arbeitest.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

Hallo Jan

vermutlich verstehe ich das nicht ganz.
Mit Xbase per SQL-Befehl auf ADS zugreifen um DBFs abzufragen.
Dann muss ich früher oder später doch die SQL-Befehle verstehen.

Ist das schlussendlich wirklich einfacher als mit den Strukturen?
Die Strukturen ärgern mich zwar immer wieder werden aber immer gebraucht.
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von nightcrawler »

Hallo Roland,
natürlich muss man SQL verstehen, um SQL zu verwenden. Aber es ist einfacher, einmal eine Klasse zu bauen (ich habe eine von Alaska, weiss aber nicht, inwieweit ich die rausgeben darf), welche statt eines Tabellennamens ein Statement aufnimmt und einen Cursor zurückliefert.

Code: Alles auswählen

USE test VIA ADSDBE
BROWSE
vs. SQL

Code: Alles auswählen

   cStmt := "SELECT * FROM test"
   oStmt := AdsStatement():New(cStmt,oSession)
   oStmt:Execute("MYALIAS1")
   Browse()
 
und Du hast das ganze geschachere rund um die verschiedenen Datentypen, Pointer, Speicherplatzallokationen usw bei den APIs nicht mehr.

SQL ist einfach und es können viel mehr helfen, als mit ADS APIs in Xbase++.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

Roland,

Du mißverstehst mich. Das, was Joachim vorschlägt, ist nicht, das Du per SQL Daten aus dbf abfragst. Sondern per SQL ADS-Interne Werte wie die angemeldeten User abfragst.

Was aber natürlich nichts daran ändert, das Du auch per SQL Datena us den dbf abfragen kannst. Auch gemischt mit normalen Db...()-Funktionen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

nightcrawler hat geschrieben: Fr, 12. Jan 2018 19:38ich habe eine von Alaska, weiss aber nicht, inwieweit ich die rausgeben darf
Lt. Steffens persönlicher Ausage auf dem Forentreffen in Osnabrück darfst Du.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von nightcrawler »

Jan hat geschrieben: Fr, 12. Jan 2018 19:40 Lt. Steffens persönlicher Ausage auf dem Forentreffen in Osnabrück darfst Du.
Habe es aber nicht schriftlich (trotz Nachfrage) ... und daher möchte ich es nicht im Internet veröffentlichen ;)
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von UliTs »

Jan hat geschrieben: Fr, 12. Jan 2018 16:52 Roland,
hier geht es um SQL als Abfragesprache. Nicht um Datenbanken. Du kannst von Xbase++ aus eine SQL-Anweisung an den ADS schicken, der Dir die Daten zu den Usern zurück gibt. Auch wenn Du ansonsten mit dbf arbeitest.
Jan
Dann musst Du aber weiterhin mit Alias-Bereichen arbeiten...
Mit einer Klasse ist das -wenn man sie einmal hat- viel besser.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von Jan »

Uli,

hier geht es ja um zwei komplett unterschiedliche Dinge. Nicht um SQL, mit dem man Daten aus Tabellen abfragt, was man sonst unter Xbase++ mit den Db...()-Funktionen machen würde. Sondern um SQL um Konfigurations- oder Zustandsdaten abzufragen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von UliTs »

Genau. Warum erwähnst Du das noch einmal extra?
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von UliTs »

Mit Sql fragt man ja nicht nur Datenbanken ab ;-) .
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

irgendwie verstehe ich das schenbar nicht richtig.
Mit SQL kann ich also ganz einfach über ADS Dinge abfragen wo ich bei Xbase++ die C-Strukturen brauche?
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von UliTs »

DelUser01 hat geschrieben: Mi, 17. Jan 2018 23:48 irgendwie verstehe ich das schenbar nicht richtig.
Mit SQL kann ich also ganz einfach über ADS Dinge abfragen wo ich bei Xbase++ die C-Strukturen brauche?
Hallo Roland,
Bei SQL gibt es viele Vordefinierte Stored procedures und functions und auch vordefinierte Tabellen innerhalb Data Dictionaries. Damit kannst du alles mögliche machen. Zum Beispiel Tabellenstrukturen abfragen, ändern oder löschen, abfragen, welche User welche Tabellen geöffnet haben etc.
Das kann man alles mit xBase abrufen. Die Frage ist nur wie :-) .
Der Vortrag von Joachim beim Forentreffen wird bestimmt hochinteressant.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von nightcrawler »

UliTs hat geschrieben: Do, 18. Jan 2018 0:55 Der Vortrag von Joachim beim Forentreffen wird bestimmt hochinteressant.
Der macht aber dieses Mal etwas komplett anderes ... nämlich ISO27001 - Informationssicherheitsmanagementsystem aus SW Entwickler Sicht;)
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
DelUser01

Re: open Tables oder connected User abfragen

Beitrag von DelUser01 »

Hallo Jan

mit den ADS-Samples habe ich die Sache realisieren können.

Leider mit DLL - hätte lieber rausbekommen wie die das mit den C-Strukturen gemacht haben :-)
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: open Tables oder connected User abfragen

Beitrag von UliTs »

nightcrawler hat geschrieben: Do, 18. Jan 2018 17:17
UliTs hat geschrieben: Do, 18. Jan 2018 0:55 Der Vortrag von Joachim beim Forentreffen wird bestimmt hochinteressant.
Der macht aber dieses Mal etwas komplett anderes ... nämlich ISO27001 - Informationssicherheitsmanagementsystem aus SW Entwickler Sicht;)
Ups...
Bestimmt auch interessant :-)
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten