-
Teildateien per SQL auflisten
Hallo Newsgroup.
Gibt es eine Möglichkeit die Teildateien, die zu einer Tabelle gehören, per SQL aufzulisten?
Viele Grüße,
Christian Nennewitz
-
Nein. Das klappt nur über den CL-Befehl DSPFD bzw. über das API QUSLMBR.
Frank Hildebrandt
-
Zitat von Frank Hildebrandt
Nein. Das klappt nur über den CL-Befehl DSPFD bzw. über das API QUSLMBR.
Schade. Aber es hätte ja sein können. :-)
Trotzdem vielen Dank für Deine Antwort.
Viele Grüße,
Christian Nennewitz
-
Per SQL gehts mit ein bisschen Aufwand:
execute "call qcmdexc('dspfd myfile ... outfile(qtemp/mymbr)' 0000000nnn.00000)"
nnn = Länge des Commands mit 10 Vorkomma und 5 Nachkomma
Open "Select * from qtemp/mymbr"
-
Zitat von Fuerchau
Per SQL gehts mit ein bisschen Aufwand:
execute "call qcmdexc('dspfd myfile ... outfile(qtemp/mymbr)' 0000000nnn.00000)"
nnn = Länge des Commands mit 10 Vorkomma und 5 Nachkomma
Open "Select * from qtemp/mymbr"
Hallo.
Ich kenne mich nur mit Access aus und nutze die AS/400 über Pass-Through Abfragen. Ich glaube ich kann das nicht so ganz nachvollziehen. Was muß man da hinschreiben wo die ... stehen? Und was meinst Du mit Länge des Commands?
Ich habe z.B. die Bibliothek GES und eine Tabelle S8 mit Teildateien. Wie kann ich mit Deiner Methode die Teildateien von S8 anzeigen?
Viele Grüße,
Christian Nennewitz
-
Mit Access ist es da etwas schwieriger.
Du musst ein Modul in VBA schreiben und kannst dann mittels ADO den Execute auf der AS/400 ausführen.
Wenn du allerdings die Kommandos der AS/400 nicht kennst, hast du hier Probleme, da ich nicht das ganze Programm hier reinschreiben kann (und schon gar nicht für umsonst ).
-
Zitat von Fuerchau
Mit Access ist es da etwas schwieriger.
Du musst ein Modul in VBA schreiben und kannst dann mittels ADO den Execute auf der AS/400 ausführen.
Wie man SQL-Abfragen an die AS/400 sendet und die Ergebnisse auswertet weiß ich. Ist der Execute keine SQL-Anweisung?
Zitat von Fuerchau
Wenn du allerdings die Kommandos der AS/400 nicht kennst, hast du hier Probleme, da ich nicht das ganze Programm hier reinschreiben kann (und schon gar nicht für umsonst ).
Ich dachte man könnte eine Liste der Teildateien mit einem SQL-Statement abrufen. Wenn dazu AS/400 Kommandos notwendig sind und wenn es so kompliziert ist, daß Du es nicht verraten kannst, dann macht es sowieso keinen Sinn.
Trotzdem vielen Dank für die Antwort. Jetzt weiß ich zumindest mit Sicherheit das es mit SQL nicht geht.
Grüße,
Christian Nennewitz
-
Das ist soweit korrekt.
Execute ist keine SQL-Anweisung sondern eine Methode im VBA zu einem Command-Objekt.
Mittels Execute kann ich per VBA SQL-Befehle absetzen die nicht "select" heißen, also Call, Create, Delete, Update usw.
Mittels OpenRecordset wird dann eine Abfrage per "Select" ausgeführt.
Es geht hier nicht ums verraten, sondern einfach um den Aufwand, da ich hier nie Komplettlösungen einbringe sondern meist nur Wege aufzeige.
Verraten habe ich den Weg ja bereits.
Also nicht böse sein deswegen
-
Zitat von Fuerchau
Mittels Execute kann ich per VBA SQL-Befehle absetzen die nicht "select" heißen, also Call, Create, Delete, Update usw.
Mittels OpenRecordset wird dann eine Abfrage per "Select" ausgeführt.
Mir ist bekannt wie man mit Access SQL-Anweisungen auf der AS400 ausführt. Das es neben SELECT auch sowas wie UPDATE, INSERT INTO, CREATE usw. gibt ist mir auch bekannt. Ob man dazu ADO oder DAO benutzt und ob man das mit Execute oder sonst wie macht ist ja eigentlich egal.
Zitat von Fuerchau
Es geht hier nicht ums verraten, sondern einfach um den Aufwand, da ich hier nie Komplettlösungen einbringe sondern meist nur Wege aufzeige.
Was ist denn jetzt eigentlich Deiner Meinung nach so aufwändig? Das Schreiben des VBA-Codes? Das SQL-Statement? Die mysteriösen Commands? Oder was?
Das Du keine Komplettlösungen mit CD und Handbuch fertig zum Verkauf verpackt an mich lieferst ist mir klar. Das würde ich auch nicht verlangen.
Ich möchte doch nur wissen, wie man mit dem DB/2 SQL Teildateien auflistet. Den nötigen VBA Code kann ich mir selbst basteln.
Wenn in einer Access-Newsgroup jemand fragt, wie man die Felder einer Tabelle per VBA auflistet, dann bin ich gerne bereit das zu erklären. Auch wenn das ganze mal mehr als 3 Programmzeilen in Anspruch nimmt. Wenn hingegen einer fragt: "Wie lautet der Code um eine Finanzbuchhaltung zu entwickeln?" dann ist das was anderes.
Selbstverständlich bin ich nicht böse. Mir ist ja klar das ein Forum oder eine Newsgroup etwas ist, an dem die Leute freiwillig und ohne Bezahlung teilnehmen. Also nix für ungut.
Grüße,
Christian Nennewitz
-
Moin,
ich denke das Fuerchau sagen wollte das, wenn du keinen Plan der Funktionsweise der AS/400 hast das ganze ein bissel schwieriger sein könnte. Falls du es über SQL versuchen willst, solltest du dir das hier mal angucken:
http://www.rlpforen.de/showthread.ph...light=IBMDA400
Alternativ schlage ich dir vor das du das ActiveX-Steuerelement von ClientAccess in einem Access-Forumalt verwendest. Das ist recht simpel zu handlen. Du kann damit einfach diesem Command absetzen.
DSPFD FILE(QRPGLESRC) TYPE(*MBRLIST) OUTPUT(*OUTFILE) FILEATR(*PF) OUTFILE(MYLIB/MYOUTFILE)" aufrufen.
Im Anschluss musst du dann entweder wieder über ADO die Daten lesen oder du arbeitest mit einer eingebundenen Tabelle (ob diese nach dem Überschreiben durch den vorherigen Command allerdings dann sofort richtig ist hängt manchmal so ein bissel von der Laune von Access ab).
Gruß
Sascha
-
Zitat von Fuerchau
execute "call qcmdexc('dspfd myfile ... outfile(qtemp/mymbr)' 0000000nnn.00000)"
nnn = Länge des Commands mit 10 Vorkomma und 5 Nachkomma
Open "Select * from qtemp/mymbr"
Also ich habe jetzt mal versucht die Teildateien der Tabelle GES.S8 in die temporäre Datei GES.KANNWEG auszugeben.
Ich nehme mal an das 'Länge des Commands' bedeutet, wieviel Zeichen zwischen den beiden Hochkomma vorkommen hier also 33. Das "..." habe ich ignoriert.
Mein Versuch war folgender:
CALL QCMDEXC('DSPFD GES.S8 OUTFILE(GES.KANNWEG)' 0000000033.00000)
Alternative habe ich auch die Variante mit / statt . probiert also so:
CALL QCMDEXC('DSPFD GES/S8 OUTFILE(GES/KANNWEG)' 0000000033.00000)
Die AS/400 meint darauf:
[IBM][Client Access Express ODBC-Treiber (32-Bit)][DB2/400 SQL]SQL0104 - Token 000000033.00000 ungültig. Gültige Token: ),.(#-104)
Außerdem habe ich noch statt "000000033.00000" "000000033,00000" probiert. Geht aber auch nicht.
Was mache ich falsch?
Grüße,
Christian Nennewitz
-
Moin,
falsch machst du das du bevor du den eigentlichen Befehl ausführst nicht die Stored Procedure erstellst wie Baldur es beschrieben hat. Du musst dir die SP erstellen
PHP-Code:
CREATE PROCEDURE QTEMP.QCMDEXC
(IN PARM1 CHAR (512), IN PARM2 DEC(15, 5))
LANGUAGE CL NOT DETERMINISTIC NO SQL EXTERNAL
NAME QSYS.QCMDEXC PARAMETER STYLE GENERAL
und im Anschluss kannst du die SP per Call aufrufen. Du übergibst im Parameter 1 deinen richtigen Befehl und dann im Parameter 2 die Länge. Wichtig "/" statt "." im Befehl!
Gruß
Sascha
Similar Threads
-
By svente in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 23-01-07, 09:49
-
By chrisssiie in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 09-01-07, 10:53
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 25-09-06, 08:22
-
By steven_r in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 18-07-06, 09:36
-
By steven_r in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-05-06, 12:40
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks