PDA

View Full Version : Datenstruktur dqData incwbx.dll



Seiten : [1] 2

kazamm
15-05-03, 12:30
Hallo zusammen,

Seit ein paar Tagen will ich per VB auf die AS 400 zugreifen. Dazu bietet sich die mit Client Express mitinstallierte cwbx.dll an, da dort die ganzen Methoden definiert sind. Anmelden funktioniert auch wunderbar, nur leider kann ich keinen Beitrag in eine Dataqueue schreiben, weil man dazu den Datentyp dqData benötigt. Der ist aber leider nicht definiert. Wo bekomme ich den her oder wie sieht der in VB aus?

Danke für jede Hilfe.

Fuerchau
15-05-03, 16:01
Verwende diese DLL nicht direkt, da dies nur in C++ möglich ist.

Wähle in den Steuerelementen "Rechte Maustastet->Komponenten..." in der Liste die "ClientAccess ControlLibrary" aus.
Du erhältst dann ein Steuerelement "cwbDataQueueTextBox" über die du dann alles steuern kannst.
Wenn du das für den Anwender verbergen willst, da setze die Eigenschaft
Visible=false.
Sogar die F1-Hilfe funktioniert.

kazamm
23-05-03, 14:09
War einige Zeit weg, daher die späte Reaktion.

Erst mal Danke für den Tip, unter VB hat es auch funktioniert. Leider muss das ganze auch unter ASP klappen, also in VB als COM+ Objekt erstellt und dann unter ASP mit CreateObject aufgerufen, und genau da funktioniert es nicht mehr. Hat noch irgendjemand einen Tip? Kriegt auch ein Bussi von mir :-)))))

Fuerchau
23-05-03, 14:37
Als erstellbare Objekte gibts dann noch die Lib "cwbautsv" mit dem Objekt "cwbDataQueue".
Diese kannst du mittels CreateObjekt erstellen.

Probiers vorher per VB aus in dem du den Projekt-Verweis "Client-Access Object Library" verwendest.
Es wird ein wenig komplizierter.

kazamm
26-05-03, 15:18
Danke für die Hilfe bis jetzt, leider komme ich nicht weiter.

Wenn ich in cwbautsv die Klasse cwbDataQueue instantiiere, dann kann z.B. cwbdqRead trotzdem nicht aufrufen, weil z.B. "data as Object" als ein Parameter darin auftaucht. Da kann ich nur sagen "hä?" Wo finde ich so ein Objekt, wie es offensichtlich der Parameter data sein muß? Der Typ von data Buffer wird garnicht angegeben. Irgendwie komme ich nicht vorwärts. Gibt es irgendwo nen Link wo ich weiterlesen kann? Bei IBM habe ich zwar schon nachgesehen bevor ich hier gepostet habe, aber man kann ja nie wissen.

Fuerchau
26-05-03, 16:48
Versuche es mit http://www-1.ibm.com/servers/eserver/iseries/access/toolkit/data_queues.htm

kazamm
26-05-03, 17:41
Vielen Dank für die geduldige Hilfe :-))

Den Link habe ich sowohl gelesen als auch ausprobiert, CWBCTRL gekapselt als VB-DLL so dass ich von einem anderen VB-Programm darauf zugreifen kann. Funktioniert wunderbar, aber ASP funktioniert mit dieser DLL nicht. Es wird nur die ASP-Seite angezeigt mit HTML-Inhalt, die VB-DLL kann auch als Object eingebunden werden (CreateObject), aber wenn ich Methoden der DLL aufrufen will, dann werden die einfach ignoriert. Mit einer Test-DLL ohne CWBCTRL klappt es wunderbar.

Gibt es noch andere Möglichkeiten von ASP aus auf eine AS400 DataQueue zuzugreifen bzw. RemoteCommands auszuführen? Anyone?

Fuerchau
30-05-03, 12:22
Der Fehler liegt darin, dass die ASP auf dem Client läuft, d.h., die Erstellung von Objekten zur Laufzeit sowie der Zugriff auf die AS/400 erfolgt vom Client.
Das bedeutet wiederum eine Installation von CA/400 auf dem Client !
Das ist bestimmt nicht in deinem Sinne, dass der Client Zugriff auf deine AS/400 erhält.

Du mußt die Funktion auf den Server verlegen, der wiederum die AS/400-Verbindung sowie eine Default-Anmeldung durchführt (CWBLOGON).
Die ASP führt dann einen Serverzugriff aus, der dann die Datenübertragung von/zur AS/400 durchführt.

kazamm
02-06-03, 08:22
ASP läuft nie auf dem Client, da es unabdingbar auf den IIS angewiesen ist. Es wäre sicherlich in MS Interesse, wenn jeder der im Web surft einen IIS installiert haben muss :-) aber zum Glück ist das nicht der Fall. Mein "Versuchsaufbau" ist ein IIS Server, auf dem selben Rechner ist Client Access Express installiert. Dort werden auch die ASP-Scripts ausgefüht, wenn eine Seite abgerufen wird. Dieses ASP-Script soll dann die DLL aufrufen, die ich in VB gestrickt habe. Macht es aber nicht. Falls ich noch auf eine Idee kommen sollte (muss ich eigentlich sogar, weil sonst der Kunde weint) werde ich sie hier posten. Aber vielen Dank für die vielen guten Tips und die Hilfsbereitschaft.

Fuerchau
02-06-03, 15:18
Vielleicht mußt du doch etwas tiefer boren.
Die CWBCTRL benötigt ja ein FORM-Objekt um zu funktionieren. Vielleicht verhindert ja ASP das Erstellen von Fenstern ?!

Die CWBAUTSV benötigt das nicht. Schau dir noch einmal das Beispiel vballobj.exe und da den Code von vballobj.frm an.
Hier wird mit der Bibliothek cwbx gearbeitet. Das ist zwar ungleich komplizierter, kann aber direkt aus den entsprechenden Scripts erstellt werden:

Dim myas400
Dim mydtaq
Dim myConv
Dim myData

Set myas400 = CreateObject("cwbx.As400system")
Set mydtaq = CreateObject("cwbx.DataQueue")
Set myConv = CreateObject("cwbx.StringConverter")

myas400.Define "MYSYS"
myas400.Connect 6 'cwbcoServiceDataQueues

mydtaq.LibraryName = "MYLIB"
mydtaq.QueueName = "MYDTAQ"
Set mydtaq.System = myas400
mydtaq.Write myConv.ToBytes("Testdaten"), True ' Schreiben + ggf. Fehlermeldung
myData = myConv.FromBytes(mydtaq.Read)

Sollen die Daten noch in Ebcdic umgesetzt werden (lesbar für AS/400) muss noch das Objekt "CodePageConverter" verwendet werden.