Seite 1 von 1

open Tables oder connected User abfragen [erledigt]

Verfasst: Do, 11. Jan 2018 18:04
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() ?

Re: open Tables oder connected User abfragen

Verfasst: Do, 11. Jan 2018 21:20
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

Re: open Tables oder connected User abfragen

Verfasst: Do, 11. Jan 2018 21:40
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!

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 8:58
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

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 12:32
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.

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 16:14
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%'

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 16:39
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.

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 16:52
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

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 19:24
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.

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 19:38
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++.

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 19:39
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

Re: open Tables oder connected User abfragen

Verfasst: Fr, 12. Jan 2018 19:40
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

Re: open Tables oder connected User abfragen

Verfasst: So, 14. Jan 2018 13:44
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 ;)

Re: open Tables oder connected User abfragen

Verfasst: Mi, 17. Jan 2018 20:08
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.

Re: open Tables oder connected User abfragen

Verfasst: Mi, 17. Jan 2018 20:16
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

Re: open Tables oder connected User abfragen

Verfasst: Mi, 17. Jan 2018 20:29
von UliTs
Genau. Warum erwähnst Du das noch einmal extra?
Uli

Re: open Tables oder connected User abfragen

Verfasst: Mi, 17. Jan 2018 20:30
von UliTs
Mit Sql fragt man ja nicht nur Datenbanken ab ;-) .

Re: open Tables oder connected User abfragen

Verfasst: Mi, 17. Jan 2018 23:48
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?

Re: open Tables oder connected User abfragen

Verfasst: Do, 18. Jan 2018 0:55
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.

Re: open Tables oder connected User abfragen

Verfasst: Do, 18. Jan 2018 17:17
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;)

Re: open Tables oder connected User abfragen

Verfasst: Mo, 22. Jan 2018 4:54
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 :-)

Re: open Tables oder connected User abfragen

Verfasst: Mo, 22. Jan 2018 9:40
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 :-)