AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi nächste "freie" Zahl finden
Thema durchsuchen
Ansicht
Themen-Optionen

nächste "freie" Zahl finden

Ein Thema von Hansi · begonnen am 25. Apr 2005 · letzter Beitrag vom 26. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#1

nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:20
Hey,

Ich möchte ganzzahlige Nummern für Artikel vergeben; Nun soll über eine Schleife so lange gesucht werden bis die nächste noch nicht vergeben Nummer gefunden ist und diese dann dem nächsten Artikel als Artikelnummer vorschlagen.

Wie bekomme ich das mit der Schleife hin, dass er über prüft ob die Nummer in der DB nicht schon vergeben ist?
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:30
Hallo,
in dem Du das Feld in der Datenbank als UNIQUE deklarierst.
Dann kommt bei Versuch die Nummern einzutragen eine Exception.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:31
in datenbanken gibt es dafür eigentlich die Eigenschaft "AutoIncrement" (kann man den Feldern zuordnen). Damit spaarst du dir das manuelle heraussuchen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#4

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:39
Das Autoincrement kenne ich schon nur möchte ich nicht, dass die Artikelnummer gleich dem Zähler ist. Ich möchte auch selber die Artikelnummer eingeben können.

Könnt Ihr mir ein kleines Bsp für die Schleife geben?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:39
Zitat von SirThornberry:
in datenbanken gibt es dafür eigentlich die Eigenschaft "AutoIncrement" (kann man den Feldern zuordnen). Damit spaarst du dir das manuelle heraussuchen.
Das gibt es eigentlich nur im SQL Server, alle andere "Programme", die diese (ungemein unflexible) Lösung verwenden sind ja eigentlich nur Desktop spielzeuge.

@Hansi, du hast hier eindeutig einen Thread für die Sparte "Datenbanken" erstellt. Wenn du auf das "!" rechts oben klickst kannst du damit einen Mod fragen, ober er den Thread dahin verschiebt.

Wenn er dann dort angekommen ist, solltest du in die speziellen Felder eintragen welche DB du nutzt und wie du darauf zugreifst.

In deinem Fall würde es nämlich davon abhängen, ob du dir einen Wert aus einem Generator, einer Sequence oder vom Bäcker nebenan holen musst.
Ohne die DB zu kennen können wir das nicht wissen.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:41
Wie wäre es mit
Code:
while (Artikelnummer in DB) do Inc (Artikelnummer);
Ob die Nummer vorhanden ist, kann man z.B. mit einem Select (oder so) herausfinden
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#7

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 20:42
Jo, allerdings sollgtest du dich daran gewöhnen mit hohen Zahlen zu leben udn ein Primärschlussel zu verwenden. Mir war das am Anfang auch suspekt, aber stell dir mal vor, du verkaufts einen Artikel und später, nimmst du den Artikel aus dem Sortiement. Aus irgendeinem Grund willst du zu der Artikelnummer, die mittlerweile gelöscht ist nochwas nachschauen. Da die Artikelnummer aber mitllerweile von einem anderen Artikel übernommen wurde, findest du die unpassenden Informationenn und das kann führ verwirrung in automatisch verarbeitenden Skripten führen.
Was ja mal interessant wäre, ist, wie sich ein DB verhält, wenn der Primärschlüsselbereich ausgeschöpft ist. Also unter der Vorraussetzung, dass massenhaft "slots" mit kleinerer Id frei sind. Fängt die dann wieder unten ann aufzufüllen?
Naja, ich glaube das probioere ich demnächst mal rauszufinden...
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 21:04
Ich rate von dem Verfahren dringend ab.
Mir fallen ad hoc nur zwei Möglichkeiten, sowas zu realisieren.
1. Mit jeder Zahl prüfen, ob diese schon in der Tabelle existiert.
2. Eine Verwaltungstabelle zu führen, die beinhalten, von wo bis wo freie Bereiche verfügbar sind.

zu 1.
Im schlimmsten Fall hast du so viele DB-Zugriffe, wie du Datensätze hast. Wenig sinnvoll.
zu 2.
Willst du wirklich soviel Aufwand treiben?

Das andere Problem, mit schon mal verwendeten Nummern ist auch zu berücksichtigen. Glaub mir, das ist sehr problematisch. Ich hatte mal eine Anwendung, in der die Anwender Kundennummern immer wieder neu belegen konnten (der Anwender bestand darauf). Die Statistiken über die Kunden waren dann irgendwann sehr interessant. Ein neuer Kunde hatte plötzlich Umsätze über mehrere Jahre in seiner Statistik. Ähnliche Probleme dürftest du mit deinen Artikeln bekommen.
Peter
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 21:11
@Peter
klingt übel...
Warum hast du nicht intern einen konsistenten Schlüssel benutzt? Die können in ihrer Maske irgendeine Nummer eingeben...
Wenn du aber einen konsistenten, somit von sämtlichen Daten unabhängigen, stur hochzählenden Schlüssel benutzt, sehen sie vielelicht 5-mal die gleiche Nummer. Aber die Verknüpfungen wären weiterhin konsistent. (Der User sollte den PK eh nie zu Gesicht bekommen.. wofür auch? )
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#10

Re: nächste "freie" Zahl finden

  Alt 25. Apr 2005, 21:21
@Jasocul

genau Variante 1 hatte ich vor. Bin gerade am überlegen nicht meine Artikelnummern einfacher zu machen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:21 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