ArtikelNr. - ZeichnungsNr.
Moderator: SYNERPY
-
rheotest
- Beiträge: 56
- Registriert: Mo Mai 23, 2005 9:44 am
- Wohnort: Ottendorf-Okrilla
ArtikelNr. - ZeichnungsNr.
Hallo,
Ich habe für die Artikel.Nr. die sprechende Form gewählt z.B.
BG-ZeichnungNr. oder KT-laufendeNr usw. Nun möchte ich aus der ArtikelNr. nur den Teil ZeichnungsNr. in das Feld Zeichnungs.Nr. übertragen.
Unsere Zeichnungsnr hat folgende Struktur 1111.2.33333
Wie kann man das ohne größeren Aufwand tun? und kann man im gleichem Atemzug diese Artikel.Nr. ändern in BG-laufendeNr. wobei die laufendeNr 6-stellig sein soll und hochgezählt wird.
Weil das umfangreich ist, sollte ein Skript erstellt werden. Mit welchem Programm kann man das tun und testen?
Wie man erkennt, habe ich wenig Ahnung zur Programmierung der Datenbank. Vielleicht hilft trotzdem jemand.
Danke
Harry
Ich habe für die Artikel.Nr. die sprechende Form gewählt z.B.
BG-ZeichnungNr. oder KT-laufendeNr usw. Nun möchte ich aus der ArtikelNr. nur den Teil ZeichnungsNr. in das Feld Zeichnungs.Nr. übertragen.
Unsere Zeichnungsnr hat folgende Struktur 1111.2.33333
Wie kann man das ohne größeren Aufwand tun? und kann man im gleichem Atemzug diese Artikel.Nr. ändern in BG-laufendeNr. wobei die laufendeNr 6-stellig sein soll und hochgezählt wird.
Weil das umfangreich ist, sollte ein Skript erstellt werden. Mit welchem Programm kann man das tun und testen?
Wie man erkennt, habe ich wenig Ahnung zur Programmierung der Datenbank. Vielleicht hilft trotzdem jemand.
Danke
Harry
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth
Immer mit dem IBExpert arbeiten.
Aus Ihrem Post geht nicht so wirklich hervor, welchen Teil der Artikelnummer die Zeichnungsnummer bildet.
In den Triggern des Artikelstamms (BSA_BI2 bzw. BSA_BU0) könnten Sie beispielsweise eine Zeile
bzw.
einfügen. Die "5" gibt die Anzahl der Stellen der Artikelnummer an, die die Zeichnungsnummer von rechts bzw. links gelesen ergibt (F_LEFT('123456789', 5) bringt daher '12345' als Ergebnis).
Ich würde das unter die Zeile
schreiben.
Für das Generieren der Artikelnummer können Sie eine Warengruppe "BG" und eine Warengruppe "KT" anlegen und dann anhand dieser in den Nummernkreisen die entsprechende automatische Generierung einstellen (Direktaufruf: BNUM).
Noch eine kleine Anmerkung: Derart sprechende Artikelnummern sind übrigens nicht die beste Idee. Entscheidet man sich nach einer Zeit einen Artikel nicht mehr einzukaufen, sondern zu fertigen bzw. umgekehrt, dann läuft man in ein Problem...
Aus Ihrem Post geht nicht so wirklich hervor, welchen Teil der Artikelnummer die Zeichnungsnummer bildet.
In den Triggern des Artikelstamms (BSA_BI2 bzw. BSA_BU0) könnten Sie beispielsweise eine Zeile
Code: Alles auswählen
NEW.ZEICHNR = F_LEFT(NEW.MASKENKEY, 5);
Code: Alles auswählen
NEW.ZEICHNR = F_RIGHT(NEW.MASKENKEY, 5);
Ich würde das unter die Zeile
Code: Alles auswählen
IF (NEW.AKTIV_JN = 'A') THEN
NEW.BESTELLEN = :sNEIN;
Für das Generieren der Artikelnummer können Sie eine Warengruppe "BG" und eine Warengruppe "KT" anlegen und dann anhand dieser in den Nummernkreisen die entsprechende automatische Generierung einstellen (Direktaufruf: BNUM).
Noch eine kleine Anmerkung: Derart sprechende Artikelnummern sind übrigens nicht die beste Idee. Entscheidet man sich nach einer Zeit einen Artikel nicht mehr einzukaufen, sondern zu fertigen bzw. umgekehrt, dann läuft man in ein Problem...
-
rheotest
- Beiträge: 56
- Registriert: Mo Mai 23, 2005 9:44 am
- Wohnort: Ottendorf-Okrilla
Das Handling ist mir nicht geläufig. Ich dachte eher an einen anderen Weg mit UPDATE für den bereits eingegebenen Artikelstamm. Eventuell auch in mehreren Teilschritten.
ZAHL AS INTEGER
NEUEZAHL AS STRING
ZAHL = 0
UPDATE BSA
SET ZEICHNR = RIGHT(TRIM(MASKENKEY),11)
NEUEZAHL = STRING(6 - LEN(CSTR(ZAHL)),"0") & ZAHL
SET MASKENKEY = LEFT(MASKENKEY,3) & NEUEZAHL
ZAHL = ZAHL + 1
WHERE LEFT(MASKENKEY,3) = "BG-"
Wenn das funktionieren könnte, wo und wie wird das umgesetzt?
Viele Grüße Harry
ZAHL AS INTEGER
NEUEZAHL AS STRING
ZAHL = 0
UPDATE BSA
SET ZEICHNR = RIGHT(TRIM(MASKENKEY),11)
NEUEZAHL = STRING(6 - LEN(CSTR(ZAHL)),"0") & ZAHL
SET MASKENKEY = LEFT(MASKENKEY,3) & NEUEZAHL
ZAHL = ZAHL + 1
WHERE LEFT(MASKENKEY,3) = "BG-"
Wenn das funktionieren könnte, wo und wie wird das umgesetzt?
Viele Grüße Harry
-
rheotest
- Beiträge: 56
- Registriert: Mo Mai 23, 2005 9:44 am
- Wohnort: Ottendorf-Okrilla
ich habe begonnen mich eingehender mit IBExpert zu beschäftigen, habe aber keine Möglichkeiten gefunden mit einem Update-Befehl Teile eines Feldeintrages >SubString(Maskenkey,4,11)< in ein anderes Feld zu übertragen. Wie formuliert man den Befehl, so dass es funktioniert?
Update BSA
Set ZEICHNR=Substring(MASKENKEY,4,11)
Where
MASKENKEY like 'R_-%'
wenn das nicht geht, wie kann ich in einem mit select ausgewälten Feld die ersten 3 Zeichen ändern(löschen)?
oder wie kann ich in IBExpert eine angelegte Tabelle auslesen, extern mit einem anderen Programm ändern und wieder einlesen?
Danke für die Tipps
Harry
Update BSA
Set ZEICHNR=Substring(MASKENKEY,4,11)
Where
MASKENKEY like 'R_-%'
wenn das nicht geht, wie kann ich in einem mit select ausgewälten Feld die ersten 3 Zeichen ändern(löschen)?
oder wie kann ich in IBExpert eine angelegte Tabelle auslesen, extern mit einem anderen Programm ändern und wieder einlesen?
Danke für die Tipps
Harry
-
miboe
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
Hier mal ein Vorschlag:
Wenn Du es für Neuanlagen im Trigger machen willst würde ich den AFTER INSERT vorschlagen und hier folgenden Code einfügen
Gruß
Michael
Code: Alles auswählen
UPDATE BSA A
SET A.ZEICHNR = F_MID(A.MASKENKEY,4,11)
WHERE A.MASKENKEY STARTING 'R_-'Code: Alles auswählen
NEW.ZEICHNR = F_MID(NEW.MASKENKEY,4,11)Michael
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
miboe
- Beiträge: 1295
- Registriert: Fr Jul 28, 2006 9:13 am
Dann halt im Before Insert
... allerdings muß das dann definitiv hinter der Erzeugung des Maskenkey's stehen und der wird bei BSA ja nicht im Trigger sondern in der Maske erzeugt. Also doch in die Maske programmieren ...
Nur wer das Unmögliche versucht, wird das Machbare erreichen!
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
--
Datenbank: 2012-A02
Programm: 4.2.5.65
OS: Win 7 Pro / Ubuntu 10.04.3
-
admin
- Site Admin
- Beiträge: 2673
- Registriert: Di Feb 10, 2004 5:48 am
- Wohnort: Bayreuth