Autor Beitrag
Josef-B
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Mo 05.05.03 16:30 
Hi

Immerhin bin ich jetzt schon bis zur Porgrammierung von Eingabe von Aufträgen gekommen.

Ich hab bei den Auftragsköpfen verschiedene Felder

alles DBedits.

Auftragsnummer
Kundennummer
Zahlungsbedingung
etc

Das Feld Kundennummer fülle ich zunächst mit einer Kundennummer aus
der Kundenauswahl => DBedit1.text := ibdataset1KDNR.asstring

So ähnlich mach ich das mit der Auftragsnummer, die ich mir vorher 'errechnet' habe.

Jetzt das Problem: In den DBEDITS stehen die Werte, wenn ich jetzt auf 'Neuen Datensatz' klicke, schwupp ist alles wieder leer, was muss ich machen, dass die vorherigen Werte stehen bleiben?

Kann man eigentlich auch einen Wert für die Auftragsnummer ganz einfach automatisch vergeben? Ich kenne es bei Access, da gehts von ganz alleine, sozusagen
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 05.05.03 16:49 
Kommt drauf an, welche Datenbank Du verwendest. Bei Interbase machst Du das am besten mit einem Trigger. Wenn Du den Code dafür brauchst, ein melden.

Wenns um BDE geht, kann ich Dir net so viel helfen.

Zum anderen Problem: Du fügst einen neuen Datensatz ein, und willst Standard-Werte drinhaben? Dann musst Du im Datenbank-Layout den Standard-Wert eingeben, dann macht er das rein.
Wenn Du aber die vorherigen Werte behalten willst, musst Du sie zwischenspeichern und nach dem Append; wieder in die Felder eintragen.

Hoffe, das hilft Dir
Josef-B Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 293

2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
BeitragVerfasst: Mo 05.05.03 19:30 
Danke UGrohne,

das mit den Werten zwischenspeichern hab ich verstanden, ich hatte sie ja sozusagen vor dem append reingeschrieben.

Aber geht das dann auch mit dem DB Navigator, bei welchem Ereignis kann ich die Werte denn dann wieder reinschreiben? Ich meine, weil der DB Navigator das ja eigentlich alles automatisch macht.

Den Code für den Trigger hätte ich gern, zumal ich mit Triggern bei Interbase noch nicht gearbeitet habe.

Gruß

Josef
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 05.05.03 19:51 
ja so läuft ein Trigger:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
SET TERM ^ ;


CREATE TRIGGER SET_CUST_NO FOR CUSTOMER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
    new.cust_no = gen_id(cust_no_gen, 1);
END

der hier vergibt automatisch eine Kunden-Nr. bei neuen Kunden.

_________________
Gruß
Hansa
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 05.05.03 20:01 
Da fehlt aber noch der Generator:
ausblenden Quelltext
1:
CREATE GENERATOR cust_no_gen;					


Sonst geht da gar nix :wink:
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 05.05.03 20:09 
ja, das stimmt ! Der Generator ermittelt die freie Zahl für den Trigger. Und der legt dann los. Übrigens kann man dem auch sagen: nehme nur jede zweite Zahl. Das ist die Zahl bei gen_id(blabla,"Abstand zur nächsten Nummer");Hoffe, das genügt.

_________________
Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Di 06.05.03 07:42 
Wenn es gerade schon um Trigger geht, kann ich bei einem Trigger auch noch eine Zahl dazuaddieren ? Beispiel :

Der Trigger gibt mir für den nächsten Datensatz die Zahl 3. Kann ich jetzt noch zum Beispiel das Datum in der Form 060503 dranhängen ? Wenn ja, wo muß ich das machen ?
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 06.05.03 07:50 
Hi,

so ähnlich wie ich es geschrieben habe. "Abstand zur nächsten Nr." Da kann man addieren, was man will. Bedenken muß man aber, daß die Nr. nicht ins unendliche wachsen darf. Bei 2.000.000 ungefähr ist Schluß, dann krachts und das ist nicht der Sinn eines Generators. Was wiederum im Umkehrschluß bedeutet, bei Dir wäre bei 2000 Schluß wegen 7-stelliger Nummern.

_________________
Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Di 06.05.03 07:52 
Addieren war vielleicht das verkehrte Wort. Ich meinte eigentlich, wenn heute der 06.05.03 ist, dass dann als Ergebnis 06050303 herrauskommt.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 06.05.03 07:58 
Warum soll das nicht gehen? Du nimmst den durch den Generator / Trigger erzeugten Wert und hängst ihn hinter Datum. Selbstverständlich kannst Du den trigger auch dazu benutzen, diesen Wert als datenfeld in die Tabelle einzutragen. Geht es allerdings nur um eine Sortierfunktion / Sortierreihenfolge, würde ich diese Redundanz vermeiden.

_________________
Gruß
Hansa
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Di 06.05.03 08:23 
Ok, ich danke Dir für die Antwort, ich werde da mal etwas ausprobieren und wenn ich noch Fragen habe es dann hier posten.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 06.05.03 08:29 
hansa hat folgendes geschrieben:
...bei 2.000.000 ungefähr ist Schluß...

Fehlerteufel hat zugeschlagen 8) Das sollte 2.000.000.000 heißen. Ich hätte besser Verwaltungsbeamter werden sollen. Bei denen spielen die paar Nullen keine Rolle. :lol:

_________________
Gruß
Hansa