![]() |
Re: Ändern von Datenmengen
Das riecht mir sehr danach, dass Du vergisst die Transaktion zu committen.
|
Re: Ändern von Datenmengen
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:
Ich fang gleich an zu heulen.. Ich lad mal die ganzen Eigenschaften der Komponenten hoch, vielleicht erkennt jemand den Fehler.. |
Re: Ändern von Datenmengen
Zitat:
Poste doch mal bitte das SQL Statement... Übrigens, wieso heissen Deine Zeos Komponenten alle TZZirgendwas? Meine heissen TZirgendwas...Welche Version der ZEOS benutzt Du denn? |
Re: Ändern von Datenmengen
Liste der Anhänge anzeigen (Anzahl: 1)
Hai davar,
ich habe in dem WaWi das ich mal geschrieben habe für die "Vorgangserfassung" immer eine Grid (eigentlich VirtualStringTree) für die Positions anzeige und einfache Edits für die Dateneingabe verwendet (siehe Bild). Ausserdem habe ich das in der DB anders eingetragen als Du. Ich habe nur eine Tabelle für die Vorgänge gehabt. Uff... jetzt wird es etwas OT aber ich hoffe man verzeiht mir wenn ich einen allgemeinen Tip geben? Wie ist denn der "normale" Ablauf eines Verkaufes:
Für jede Aktion muss ein Datensatz in der Vorgangstabelle erzeugt werden. Man braucht also ersteinmal eine Tabelle in der die Vorgänge gespeichert werden.
Code:
Bei den Vorgangspositionen müssen natürlich noch alle anderen Felder rein.
tbl_vorgangsarten
----------------- id : PK bezeichnung : (Angebot, Auftragsbestätigung, Lieferschein, Rechnung) tbl_projekt ----------- id : PK bezeichnung : Ein Text oder eine Vorgangsnummer fk_adress_id : Verknüpfung zur Adressentabelle tbl_vorgang ------------- id : PK fk_projekt_id : Verknüpfung zu tbl_projekt fk_vorgangsart_id : Die Vorgangsart datum : Naja, das Datum halt tbl_vorgangpos -------------- id : PK fk_vorgang_id : Verknüpfung mit den einzelnen Vorgängen pos : Position fk_arktikel_id : Verknüpfung mit den Artikeln in dem Vorgang preis : Preis des Artikels menge : Menge Wenn jetzt ein neuer "Verkauf" beginnt wird als erstes ein neues Projekt erzeugt. Beim Vorgang (Angebot, AB, Rechnung) wird die Referenz zum Projekt hinterlegt. Du kannst also zu einem Projekt mehrere Angebote haben welche sich in ihren Positionen unterscheiden. Jedes dieser Angebote kann nun in eine Auftragsbestätigung gewandelt werden. Dafür wird einfach ein neuer Eintrag in der tbl_vorgang erzeugt und die Positionen werden kopiert. Das ganze ist auf den ersten Blick zwar ein unnötiger Aufwand; aber Du wirst dich darüber freuen wenn dein Programm einmal komplexer wird. So siehst Du zum Beispiel auf einen Blick alle Angebote die zu einem Projekt erstellt wurden. Auf den Ausdrucken für den Kunden steht neben der Angebots-, AB-, Lieferschein- und Rechnungsnummer immer die Projektnummer dabei. Dadurch kann man alles in der DB finden. Ach ja, noch etwas zu den Verkaufspreisen. Speichere diese nicht in der Tabelle der Artikel sondern wieder in einer eigenen.
Code:
So hast Du ganz nebenbei eine History eurer VKs.
tbl_artikel
----------- id : PK nummer : Artikelnummer bezeichnung : Artikelbezeichnung tbl_artikel_preise ------------------ id : PK fk_artikel_id : Verknüpfung zum Artikel preis : Artikelpreis datum : Datum ab wann de Preis gültig ist Bei den Vorgangspositionen ist es eventuell noch Sinnvoll eine Spalte zu haben in der ein Flag darüber auskunft gibt ob der Preis für diese Position vom Standardpreis abweicht. Dies kannst Du aber auch über eine Abfrage der Preistabelle ermitteln. Wichtig ist es aber auf den Ausdrucken für den Kunden zu vermerken das es sich um einen Sonderpreis handelt. So, das ist jetzt nur einmal schnell runtergeschrieben (Sonntags, halb zehn in Deutschland *g*). Wenn Du noch genauer darüber reden möchtest sage mir bitte bescheid. Dann löse ich dieses Posting aus dem Thread und mache dafür einen eigenen auf! |
Re: Ändern von Datenmengen
Zitat:
Also das SQL Statement sieht so aus:
Delphi-Quellcode:
und "verbinden" in der unit "DBs" so:
DBs.verbinden;
DBs.query.SQL.text:= 'SELECT * FROM `kundendaten_stamm`'; DBs.query.Open;
Delphi-Quellcode:
procedure TDBs.verbinden;
begin db.Host:= 'localhost'; db.Login:= 'root'; db.Password:= ''; db.Database:= 'daten'; db.Connected:= True; end; MfG davar |
Re: Ändern von Datenmengen
"kundendaten_stamm" ist die Tabelle selbst und nicht eine view, richtig?
Doof, jetzt fällt mir erstmal auch nix mehr ein, musst Du einfach mal ein bißchen rumprobieren: - Kannst Du die TZransaction-Komponente einfach mal weglassen? - Statt der ZQuery mal eine ZTable versuchen? - Statt "SELECT *" mal ein "SELECT feld, feld, feld" ausführen? - Mal ein ZUpdate an die Query hängen? - Mal ausprobieren, ob Du überhaupt irgendwie was in die DB schreiben kannst (mit Delphi)? Oder fängst Du irgendwo alle Exceptions ab, indem Du z. B. sowas machst, und dehalb merkst Du nicht, dass was schiefgeht:
Delphi-Quellcode:
Oder änderst Du in den Datensätzen beim Editieren vielleicht den Wert des Primärschlüssels und deswegen geht was schief?
try
ZQuery1.Post; except end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz