Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Position oder Copy in Intrasys Datenbank

Position oder Copy in Intrasys Datenbank
20.07.2020 14:50:50
Timo
Hallo liebe Excel Freunde,
ich habe ein mittelschweres Problem in meiner Datenabfrage. Ich bediene über meine Excel Datei ein uraltes System, welches über Intra-SYS All in One von IBM angezeigt wird. Am Ende verbirgt sich dahinter aber nur eine alte Datenbank. In meiner Excelmappe habe ich z.B. den folgenden Befehl, der einwandfrei funktioniert:
Public Function isyGetFromIntraSys(ByVal position As Integer, ByVal laenge As Integer, Optional  _
ByVal Session As String = "") As String
On Error GoTo isyGetFromIntraSys_err
Dim sCol As Long, sRow As Long
sRow = 1
Do While position > 80
sRow = sRow + 1
position = position - 80
Loop
sCol = position
isyGetFromIntraSys = IsyGetScreen(True, Session).getstring(sRow, sCol, laenge)
Exit Function
isyGetFromIntraSys_err:
isyGetFromIntraSys = ""
End Function
Mit diesem kann ich über den Befehl "Call isyGetFromIntraSys(899, 7)" eine Abfrage machen und bekomme die 7 Stellen an Position 899 heraus. Das System hat 24 Zeilen und jeweils 80 Spalten, also steht der Wert genauer an Position Zeile 12, Spalte 19 und er gibt mir ab da die nächsten 7 Stellen in der Zeile als Ausgabe.
Nun zu meinem genauen Problem:
Ich müsste in einem Fall wissen, an welcher Position der Curser ist oder was eben genau dort steht, wo der Curser sich befindet. Visuell kann ich einfach unten die Curserposition ablesen, allerdings liegt diese Anzeige außerhalb des 24x 80 Rasters und ist damit nicht einfach so auszulesen.
Hat jemand eine Idee oder auch nur eine Ahnung, was mein Problem ist oder wie ich es besser beschreiben kann?
Bin echt etwas am verzweifeln... Probiere mich aber auch erst seit 5 Stunden daran ;P
VG Timo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position oder Copy in Intrasys Datenbank
20.07.2020 19:54:45
ChrisL
Hi Timo
Die VBA-Funktion spricht ja nur die nächste Funktion an.
IsyGetScreen(True, Session).getstring(sRow, sCol, laenge)
Solche Rasterbilder (24x80) sind i.d.R. sehr schön strukturiert (z.B. am Bildrand ein Kürzel als Seiten-Identifikation). Die Position der Eingabefelder ändert sich m.W. je Seite nicht.
Wie tätigst du die Eingaben und wie bewegst du den Cursor (SendKeys?)
Ich frage mich, welche Schnittstelle (API) konkret benutzt wird, denn dann könnte man mal einen Blick in die Spezifikationen riskieren. Ich kenne mich damit nur wenig aus, aber entweder gibt es ein IBM Handbuch oder vielleicht wurde eine allgemeine Schnittstelle verwendet.
Könnte evtl. dieser Katalog sein:
http://docs.attachmate.com/extra/x-treme/apis/com/index.htm#getstringmethod_con.htm
cu
Chris
Anzeige
AW: Position oder Copy in Intrasys Datenbank
21.07.2020 09:35:28
Timo
Hallo Chris,
genau, die aufgerufene Funktion sieht dann so aus:
Public Function IsyGetScreen(Optional ShowError As Boolean = False, Optional sessionID As  _
String = "") As Object
On Error GoTo IsyGetScreen_err
Dim isySystem As Object
Dim isySession As Object
Dim isySessions As Object
Set isySystem = CreateObject("Allin1.System")
isySystem.TimeoutValue = 50000
Set isySessions = isySystem.Sessions
If sessionID = "" Then
Set isySession = isySystem.ActiveSession
Else
Select Case sessionID
Case Is = "A"
Set isySession = isySessions.Item(1)
Case Is = "B"
Set isySession = isySessions.Item(2)
Case Is = "C"
Set isySession = isySessions.Item(3)
Case Is = "D"
Set isySession = isySessions.Item(4)
Case Is = "E"
Set isySession = isySessions.Item(5)
Case Else
Set isySession = isySystem.ActiveSession
End Select
End If
Set IsyGetScreen = isySession.Screen
Exit Function
IsyGetScreen_err:
If ShowError = True Then
MsgBox "Fehler bei der Verbindung zu Intrasys.", vbOKOnly + vbExclamation, "Fehler"
End If
Set IsyGetScreen = Nothing
End Function
Eingaben werden mit Sendkeys durchgeführt.
Wie finde ich die API heraus?
VG Timo
Anzeige
AW: Position oder Copy in Intrasys Datenbank
21.07.2020 09:57:38
ChrisL
Hi Timo
Hiermit wird das Objekt erzeugt, aber das System kenne ich nicht:
CreateObject("Allin1.System")
Mehr kann ich dazu auch nicht sagen, da ich mich zu wenig mit dieser Thematik auskenne.
Aber brauchst du wirklich die Cursor-Position? Kannst du da nicht mit SendKeys Tab... Tab... Enter durch die Felder springen? Vorausgesetzt du bist auf der richtigen Seite (Seiten-ID prüfen), dann sollte die Anzahl benötigter Tabs statisch sein. Kannst zur Sicherheit auch mit Home-Taste den Cursor erstmal an den Anfang setzen.
cu
Chris
AW: Position oder Copy in Intrasys Datenbank
21.07.2020 10:37:36
Timo
Du liegst verdammt richtig, in kann mit Tab in das nächste beschreibbare Feld und mit der Pos1 auf das erste beschriebbare Feld wechseln.
in meinem Fall ist es so, dass nach einer Enter Eingabe der Cursor springt (in den nicht beschreibbaren Bereich) und wenn er das tut, würde nach der nächsten Eingabe ein Fehler auftauchen.
Um diesen Fehler zu verhindern müsste ich die Position des Cursors oder den Text an der Stelle des Cursors kennen. - So zumindest meine Überlegung :)
Selbst wenn ich mit Tab in das nächste Feld springe, weiß ich immer noch nicht, in welchem Feld der Cursor gerade ist...
Keine Ahnung, ob man das verstehen kann!
VG Timo
Anzeige
AW: Position oder Copy in Intrasys Datenbank
21.07.2020 12:31:09
ChrisL
Hi Timo
Bei meiner "Mainframe-Applikation" kann ich mit Home an den Anfang springen und mit Tab wird nur durch die beschreibbaren Eingabefelder gehüpft.
Insofern kann ich das Problem noch nicht ganz nachvollziehen, aber wir verwenden auch nicht die gleiche Applikation.
Nur eine Idee, aber allenfalls kann man in den Bearbeitungsoptionen vom IBM Client das Cursor-Verhalten anpassen. Mein Default:
Userbild
cu
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige