AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze nach Buchstaben einfügen

Datensätze nach Buchstaben einfügen

Ein Thema von needatip · begonnen am 16. Feb 2007 · letzter Beitrag vom 21. Feb 2007
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datensätze nach Buchstaben einfügen

  Alt 16. Feb 2007, 16:55
Datenbank: MS SQL Server • Version: 2000 • Zugriff über: ADO
ich habe in einer Datenbank folgende Felder:

Positionsnummer : Integer
A_Position : varchar(1)

Die einzelnen Positionen können z. B. folgende Werte annehmen: (Positionsnummer) beliebige Zahl; (A_Position) Buchstabe a-z
z.B.

1
2
3
3a
4
4a
4b
5
6
7
7a
8
9
10g

wenn der Datensatzcursor nun auf irgendeiner Zeile steht, soll geprüft werden ob hier noch eine Position im Zusammenhang mit einem Buchstaben (Feld A_Position) eingefügt werden kann !
(Beispiele anhand der o.g. Auflistung)
DSCursor steht auf 2 - Einfügen 2a
DSCursor steht auf 4a - Einfügen 4c (da es 4b ja schon gibt)
DSCursor steht auf 7a - Einfügen 7b
DSCursor steht auf 10g - Einfügen 10a
Also immer der nächstmöglich freie Buchstabe !
Wer kann mir bei der Problemlösung helfen?
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: Datensätze nach Buchstaben einfügen

  Alt 16. Feb 2007, 17:26
Das müsste mit einer Stored Procedure mit if-Abfragen möglich sein. 1. Schritt:
SQL-Code:
SELECT COUNT(*) FROM Tabelle
 WHERE Positionsnummer = @NeuePosition
   AND A_Position <> ' '
INTO @Anzahl
2. Schritt:
SQL-Code:
IF (@Anzahl = 0)
THEN A_Position = 'a';
ELSE BEGIN
  /* suche im String 'abcde...z' den kleinsten noch nicht benutzten Buchstaben */
END
Du musst die Art der Variablen natürlich an Deinen SQL-Dialekt anpassen. Vielleicht ist es auch für Dich einfacher, das im Programm zu erledigen; deshalb verzichte ich auch darauf, den letzten Teil zu skizzieren, weil es dafür mehrere Wege gibt, und der günstigste hängt eben von dem Dir Möglichen ab.

Viel Erfolg! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datensätze nach Buchstaben einfügen

  Alt 16. Feb 2007, 17:35
Danke für den Tip,
ich wollte das aber nicht mit einer Stored Procedure lösen !
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

Re: Datensätze nach Buchstaben einfügen

  Alt 16. Feb 2007, 18:17
SP war nur ein Vorschlag; aber das, was ich so skizziert habe, kannst Du genauso auch direkt im Programm erledigen. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Datensätze nach Buchstaben einfügen

  Alt 16. Feb 2007, 19:18
Hallo,

die Beispiele in Beitrag #1 scheinen mir nicht konsistent zu sein. Ich hätte erwartet, dass bei Cursor auf (10, 'g') nicht (10, 'a') sondern (10, ' ') eingefügt würde. Vor allen Dingen würde ich bei der alpha-position keinen NULL-Wert oder Leerstring zulassen. Ein Blank wäre okay, der Feldtyp sollte dann von varchar(1) auf char(1) geändert werden. Mit diesen Korrekturen und einer Lookup-Tabelle LETTERS (LETTER), welche alle gültigen alpha-position Werte enthält, lässt sich der "nächste" Buchstabe leicht ermitteln:

SQL-Code:
select min(letter)
  from letters
  where letter not in (select alphapos from items where numpos = 10)
Der Code könnte entsprechend angepasst gut in einem Trigger untergebracht werden. Es gibt aber sicher noch andere Wege.

Grüße vom marabu
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Datensätze nach Buchstaben einfügen

  Alt 21. Feb 2007, 10:10
Gute Lösungsvorschläge.
Hab den Feldtyp auch auf Char(1) geändert.
Besonders die Lösung von Marabu hat mich auf weitere Ideen gebracht.
Vielen Dank nochmal.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:02 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