AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

integer bearbeitung in db

Ein Thema von Matthias-k · begonnen am 8. Jan 2010 · letzter Beitrag vom 10. Jan 2010
Antwort Antwort
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#1

integer bearbeitung in db

  Alt 8. Jan 2010, 16:44
Datenbank: Firebird • Version: 1,5 • Zugriff über: Zeos
hi leutz,

ich hab folgendes problem:

ich verarbeie intern eine rechnungsnummer, beginnend als 10001...

dies hat auch jahre gut funktioniert. jetzt will die firma eine umstellung auf eine andere rechnungsnummer, weis gott, warum...

nur stellt mich das jetzt vor ein problem: entweder, ich stelle das programm und die db komplett auf den kopf, oder ich gaukle beim rechnungsdruck eine scheinnummer vor, also behalte im hintergrund meine laufende nummer.

weil die firma möchte jetzt in der re nummer das jahr mit haben: 10/0001

aber wie könnte ich das dem programm klar machen?

oder lege ich eine spalte dafür an, welche das jahr usw als string reinschmeißt, und ich statt der laufenden re nummer dieses feld auf die rechnung drucke???

wie würdet ihr dies lösen? vieleicht seh ich auch grad den wald vor lauter bäumen nicht...

mfg matthias


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 16:50
Ich mache eigentlich in jede Tabelle eine fortlaufende id (schon damit es eindeutig ist wenn man was löscht) - eine derartige Rechnungsnummer würde ich dann mit 2 Spalten machen (eine Jahr und eine Nummer) und auf beide einen unique-index oder sowas, damit es garantiert keine 2 gleichen rechnungs-nr. gibt.
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#3

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 16:52
also ne mischung aus beidem... progi source umschreiben und db erweitern...

hm, schade halt...

aber lässt sich nwohl nix machen.


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 16:56
du missverstehst mich ^^

Du hast ja bereits so eine fortlaufende nummer wenn ich dich richtig verstanden habe. Ich würde empfehlen, diese neue Rechnungsnr. JJ/XXXX seperat in der Tabelle zu speichern - allerdings nicht als String sondern als 2 Zahlen. Das schon allein aus Gründen der Normalisierung. Und ein Unique-Index ist dann ein weiterer Schritt um Fehlern vorzubeugen aber natürlich nicht notwendig.
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#5

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 17:05
hmmm,

ich schieb mein missverstehen auf freitag, eine stunde vor feierabend...

du hast recht, meine db hat die vortlaufende re nummer, welche auch der eindeutigen nummer gleich kommt. ein löschen oder sonstwas geht nicht in der re tabelle, da nur ein flag gesetzt wird. also 0 für aktive, 1 für gelöscht. hab ich halt so gelöst, das man auch gelöschte re's noch nachvollziehen kann.

mir ist allerdings grad noch eine idee gekommen, welche mir allerdings noch weitere schmerzen in der region bereitet, welche man hirn nennt. und zwar: ich stelle mir die re daten ja in einem view zusammen, wenn ich da per sql das jahr ziehe, einen / einbastle und dann die letzten 4 stellen der re nummer nehme und das als string in eine seperate, zu erzeugende spalte gebe, dann spar ich mir doch eigentlich einen haufen arbeit! oder irre ich mich grad?

nur so als zwischedrin lösungsweg...


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#6

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 17:08
was mir grad noch einfällt: wenn ich eine zusätzliche spalte in der tabelle einfüge, muss ich ja sämtliche sql inserts, selects, updates noch ändern. und was mache ich mit älteren rechnungen? dies führt doch eigentlich zu dem hauptproblem, welches mir im kopf rum schwirrt. weil dann hab ich leere spalten. dies killt mein programm. denke ich zumindest! testen möchte ich dies grad eben nicht...


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 17:17
Zitat von Matthias-k:
ich stelle mir die re daten ja in einem view zusammen, wenn ich da per sql das jahr ziehe, einen / einbastle und dann die letzten 4 stellen der re nummer nehme und das als string in eine seperate, zu erzeugende spalte gebe, dann spar ich mir doch eigentlich einen haufen arbeit! oder irre ich mich grad?
wenn ich da per sql das jahr ziehe
Meinst du per SQL-Funktion? Dann ändert sich das ja - und sowas wie eine Rechnungsnr. sollte doch eigentlich konstant bleiben

und dann die letzten 4 stellen der re nummer nehme
Hört sich zwar nett an, aber mein Bauch fühlt sich unwphl ^^ Was ist z.B. wenn es in einem Jahr mal 10000 Rechnungen gibt? Oder wenn jemand mal die Nummer ändert und sich dann wundert weshalb die Rechnungsnr. sich mitgeändert hat?

Zitat von Matthias-k:
was mir grad noch einfällt: wenn ich eine zusätzliche spalte in der tabelle einfüge, muss ich ja sämtliche sql inserts, selects, updates noch ändern. und was mache ich mit älteren rechnungen? dies führt doch eigentlich zu dem hauptproblem, welches mir im kopf rum schwirrt. weil dann hab ich leere spalten. dies killt mein programm. denke ich zumindest! testen möchte ich dies grad eben nicht...
Wieso musst du die Großartig ändern? wenn du der(n) neuen Spalte(n) einen Defaultwert gibst, z.B. NULL, sollten die alten Queries weiter durchlaufen. Und wenn bei einer alten Rechnung die neue Nr. NULL ist, ist das auch nur logisch. Schließlich hat diese Rechnung keine Nr. nach dem neuen Schema. (Oder werden die auch rückwirkend geändert?)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 18:23
Wenn ich das richtig verstanden habe, dann soll die jeweils erste Rechnungsnummer eines Jahres JJ/00001 sein. Hier ist der Unique also schon einmal nicht falsch, dann gibt's bei doppelten eine fette Fehlermeldung. Bleibt zu fragen, kann in 2009 eine Rechnung für 2010 erstellt werden oder umgekehrt?
Und was spricht gegen eine zusätzliche Spalte Rechnungsnr_2010 (oder so ähnlich)?

Die vorhandenen Rechnungsnummern da hinein kopieren und für neue Datensätze werden sie nach dem neuen Schema generiert / eingegeben.

Diese "hier ein Jahr holen, da eine Nummer holen und kürzen" - Tricksereien, machen Dir nur langfristig das Leben schwer und unnötig kompliziert.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#9

Re: integer bearbeitung in db

  Alt 8. Jan 2010, 23:44
so, hatte noch besprechung und dann einfach nicht mehr den kopf frei dafür. wollte schon eher schreiben.

die re nummer kann niemand ändern, auser er greift dierekt auf die db zu! also nur ich könnte dies machen, ansonsten ist diese nun interne nummer, die vorher die offizielle nummer war, eindeutig. es kann ums verrecken nicht passieren, das eine nummer 2 mal auftaucht! dann fress ich nen besen!

nein, eine rechnung kann nur für das jahr erstellt werden, wo sie geschrieben wurde.

gegen eine zusätzliche spalte steht im grunde genommen nur meine faulheit, den kompletten source, der mit der re tabelle arbeitet, zu ändern.

ich suche ja grad einen einfacheren weg.

es wäre ja so schön einfach, und auch relativ sicher, wenn ich mir das im druck view zusammen bastel.

weil das datum ist eindeutig, weil vom system gezogen. ein zurückstellen des pc datum is nich drin, weil das auf dem server abgeglichen wird. und der ist unter meinem herrschaftsbereich. auch die re nummer ist eindeutig. also was kann da passieren?

ich denke, ich werde auch dabei bleiben, und das im view, wie so schön gesagt wurde, zusammen basteln.

nur da muss ich mich noch bissle einlesen, wenn ihr mir da nicht helft! *wimmer*

merkt man, das ich den chef verfluche? *gg*

mfg matthias


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Matthias-k

Registriert seit: 7. Jul 2005
Ort: Freiberg
75 Beiträge
 
Delphi 7 Professional
 
#10

Re: integer bearbeitung in db

  Alt 10. Jan 2010, 16:58
hi, ich wollte euch nur informieren, das ich das problem folgender maßen
gelöst habe:

ich hab eine dummy db angelegt, wo ich die re nummer mit der neu angelegten rechnungs-datums nummer kombiniert abgelegt habe und ziehe mir im view, der en druck regelt, die nummer zu der zugehörigen re nummer raus. somit musste ich nicht das halbe programm umschreiben.

problem gelöst.


Gebt Trollen keine Chance!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz