| Autor |
Beitrag |
Josef-B
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: 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
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: 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 
      
Beiträge: 293
2003 Server, Win7, Win8
Delphi 2010 Pro, Firebird 2.5
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 05.05.03 19:51
ja so läuft ein Trigger:
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
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 05.05.03 20:01
Da fehlt aber noch der Generator:
Quelltext 1:
| CREATE GENERATOR cust_no_gen; |
Sonst geht da gar nix 
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: 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
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: 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
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 06.05.03 08:29
| hansa hat folgendes geschrieben: | | ...bei 2.000.000 ungefähr ist Schluß... |
Fehlerteufel hat zugeschlagen  Das sollte 2.000.000.000 heißen. Ich hätte besser Verwaltungsbeamter werden sollen. Bei denen spielen die paar Nullen keine Rolle. 
_________________ Gruß
Hansa
|
|