irgendwie stehe ich gerade auf dem Schlauch ...
Kann mir bitte jemand helfen, wie man in IBExpert in einer Procedure eine for Schleife macht?!
Also so was in der Art:
Code: Alles auswählen
for i:=1 to 20 do
begin
....
i:=i +1;
end
anajo
Moderator: SYNERPY
Code: Alles auswählen
for i:=1 to 20 do
begin
....
i:=i +1;
end
Code: Alles auswählen
FOR SELECT [felder] FROM [tabelle] INTO[variablen]
DO BEGIN
END
Code: Alles auswählen
SELECT WERT
FROM BGEM
WHERE Zeile = z
AND Spalte = 1
INTO :wert1;
INSERT INTO BGEMTL (ID,Wert) VALUES (:testtabelle_id, :wert1);
Code: Alles auswählen
INSERT INTO zieltabelle (
feld1,
feld2,
feld3,
....
feldn)
SELECT (
feld1,
feld2,
feld3,
....
feldn)
FROM quelltabelle;
Code: Alles auswählen
FOR SELECT A.ID FROM quelltabelle INTO :quellid
DO BEGIN
INSERT INTO zieltabelle (
feld1,
feld2,
feld3,
....
feldn)
SELECT (
feld1,
feld2,
feld3,
....
feldn)
FROM quelltabelle WHERE quelltabelle.id = :quellid;
END
Code: Alles auswählen
SELECT daten1, daten2, ... FROM P_name INTO variable1, variable2, ...
Code: Alles auswählen
begin
FOR SELECT DATEN1
FROM p_timportdaten(4, 6)
INTO :d1
DO
BEGIN
INSERT INTO testtabelle (
artikelid)
VALUES (
:d1);
END
end
Code: Alles auswählen
CREATE OR ALTER PROCEDURE P_IMP_ENTWSTCKLST(
KOPFNR VARCHAR(20),
NEINLOGID INTEGER,
KONFIG_ID INTEGER)
AS
declare variable daten1 varchar(40);
declare variable daten2 varchar(40);
declare variable bsa_id integer;
declare variable bsas_id integer;
declare variable sja varchar(1);
declare variable snein varchar(1);
declare variable nstep integer;
declare variable maskenkey varchar(10);
BEGIN
/* Protokollieren, dass Aktion hier durchgelaufen ist */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_IMP_ENTWSTCKLST');
/* Logische Kennzeichen für True und False holen */
EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES(:SJA, :SNEIN);
FOR SELECT F_LRTRIM(DATEN1), F_LRTRIM(DATEN2)
FROM P_TIMPORTDATEN(:NEINLOGID, :KONFIG_ID)
INTO :DATEN1, :DATEN2 DO
BEGIN
/* ID DES STÜCKLISTENKOPFES HOLEN */
BSAS_ID = NULL;
SELECT B.ID FROM BSAS B
LEFT OUTER JOIN BSA A ON B.BSA_ID_LINKKEY = A.ID
WHERE (A.MASKENKEY = :KOPFNR) AND (B.KONSTRUKTION_JN = :SJA)
AND (B.KONSTRUKTIONHAUPT_JN = :SJA)
INTO :BSAS_ID;
/* ID des Artikels auf Stücklistenposition holen und Einsatzmengenfaktor setzen */
BSA_ID = NULL;
SELECT A.ID FROM bsa A WHERE (A.MASKENKEY = :DATEN1) INTO :BSA_ID;
/* Laufende Nummer der StüLi Position ermitteln */
NSTEP = 10;
EXECUTE PROCEDURE P_MASKENKEY_LFDNR('BSASTL', :BSAS_ID, :NSTEP, NULL)
RETURNING_VALUES (:MASKENKEY);
/* Datensatz in BSASTL schreiben */
DATEN2 = CAST(DATEN2 AS NUMERIC(15,4));
INSERT INTO BSASTL (
BSAS_ID_LINKKEY,
MASKENKEY,
BSA_ID_ARTNR,
STCKZAHL,
OPTION_JN,
PREIS_JN)
VALUES (:BSAS_ID, :MASKENKEY, :BSA_ID, :DATEN2, :SNEIN, :SJA);
END
DELETE FROM TIMPORT WHERE AKTIV_USER_ID = :NEINLOGID AND KONFIG_ID = :KONFIG_ID;
END
Wie greifst du spezielle auf diese beiden Spalten zu?Die Prozedur basiert darauf, daß in der Importkonfiguration die Spalten 4 (Artikelnummer) und 8 (Menge) der Entwicklungsstückliste aus Excel importiert wurden. Hier werden sie dann weiterverarbeitet.