Sachmerkmale

Alles, was den Programmierer beschäftigt

Moderator: SYNERPY

Antworten
Zwitsch

Sachmerkmale

Beitrag von Zwitsch »

Hallo Zusammen,

ich habe eine Frage zu der Programmierung im Zusammenhang mit den Sachmerkmalen.

Im Artikelstamm gibt es 2 Sachmerkmale (Ausrüstungsverlust und Verschnitt). Mit diesen numerischen Variablen möchte ich etwas berechnen.

Wie kann man diese Variablen in einem Programm ansprechen? Die Beschreibung in der Programmierdoku
Sachmerkmale(WasTun, SParent:string;o_Owner:TComponent) bringt mich nicht wirklich weiter. Und die beiden Programme u_utils.pas bzw. fbsaprop.pas kann ich nicht finden.

Ich bräuchte ein kleines Beispiel, wie ich den Inhalt eines Sachmerkmals (Bspw. Verschnitt) einer bestimmten Artikelnummer in einem Programm auslesen kann. Mit diesen Werten möchte ich die Fertigungsmengen erhöhen.

Vielen Dank
Zwitsch

Sachmerkmale

Beitrag von Zwitsch »

Diese Sachmerkmale habe ich im Artikelstamm selbst definiert. In meiner ersten Mail habe ich das etwas zweideutig geschrieben...
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

CREATE PROCEDURE P_BPROPBSA_LESEN(
BSA_ID INTEGER,
BPROP_ID INTEGER,
WERTART SMALLINT)
RETURNS (
INHALT VARCHAR(100))
AS
DECLARE VARIABLE nStart INTEGER;
DECLARE VARIABLE sWertTrenner VARCHAR(1);
DECLARE VARIABLE AUSWAHL VARCHAR(1000);
BEGIN
/* LETZTER STAND: 16.07.2003 14:24:19 GK */

/* Inhalt bzw. Teil eines Inhalts eines Sachmerkmale lesen
z.B. wenn Inhalt: 020=130/225 ist */

/* PROTOKOLLIEREN, DAS AKTION HIER DURCHGELAUFEN IST */
IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BPROPBSA_LESEN');

INHALT = NULL;
IF ((BSA_ID IS NULL) OR (BPROP_ID IS NULL)) THEN
BEGIN
SUSPEND;
EXIT;
END
IF (WERTART IS NULL) THEN WERTART = 0;

/* Trenner momentan fest - später aus BPROP auslesen */
IF (BPROP_ID = 2) THEN
sWertTrenner = '/';
ELSE
sWertTrenner = '';

SELECT VA.INHALT
FROM BPROPBSA VA
WHERE VA.BSA_ID_LINKKEY = :BSA_ID AND VA.BPROP_ID = :BPROP_ID
INTO :INHALT;


AUSWAHL = NULL;
SELECT F_STRINGLISTITEM(VB.AUSWAHL,:INHALT)
FROM BPROP VB
WHERE VB.ID = :BPROP_ID AND VB.AUSWAHL IS NOT NULL
INTO :AUSWAHL;
IF (AUSWAHL IS NOT NULL) THEN
INHALT = AUSWAHL;

/* ACHTUNG F_SUBSTR fängt bei 0 an zu zählen */

IF (WERTART IN (1,2,3,4)) THEN
nStart = F_SUBSTR('=',INHALT);
ELSE
nStart = -1;

IF ((nStart > 0) AND (WERTART IN (2,3,4))) THEN
nStart = nStart + 1;


IF (nStart > 0) THEN
IF (WERTART = 1) THEN
/* linken Teil = Names zurückgeben */
INHALT = F_LEFT(INHALT,nStart);
ELSE
IF (WERTART = 2) THEN
/* rechten Teil komplett = Values zurückgeben */
INHALT = F_MID(INHALT,nStart,100);
ELSE
IF ((WERTART = 3) AND (sWertTrenner <> '')) THEN
BEGIN
/* Nur linken Teil von Value zurückgeben
momentan fest programmiert - später aus Tabelle BPROP auslesen */
INHALT = F_MID(INHALT,nStart,100);
nStart = F_SUBSTR(sWertTrenner,INHALT);
IF (nStart > 0) THEN
INHALT = F_LEFT(INHALT,nStart);
END
ELSE
IF ((WERTART = 4) AND (sWertTrenner <> '')) THEN
BEGIN
/* Nur rechten Teil von Value zurückgeben
momentan fest programmiert - später aus Tabelle BPROP auslesen */
INHALT = F_MID(INHALT,nStart,100);
nStart = F_SUBSTR(sWertTrenner,INHALT)+1;
IF (nStart > 2) THEN
INHALT = F_MID(INHALT,nStart,100);
END

SUSPEND;
END
Zwitsch

Beitrag von Zwitsch »

Vielen Dank,

das bringt endlich Licht ins die dunkle Seite des Nichtwissens....

Was läßt sich denn mit der Funktion Sachmerkmale(...) alles anstellen. Gibts im Doku-Update dann eine genauere Beschreibung, speziell der Parameter ?
Antworten