Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
21.05.2012, 12:48:14
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  Reihenfolge der Datensätze ändern?!?
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Reihenfolge der Datensätze ändern?!?  (Gelesen 2252 mal)
MAVERIK
Jr. Member
**
Offline Offline

Beiträge: 61



« am: 27.03.2002, 16:05:02 »

Hallo!

Möchte in meiner Paradox-Datenbank die Reihenfolge der Datensätze beliebig verändern. Hab dafür extra ein Feld ('DBPos') angelegt, in das ich einen Integer-Wert eingeben kann. Die Datenbank wird dann nach diesen Nummern sortiert. Ist aber ziemlich umständlich! Gib es das vielleicht auch ne andere Möglichkeit bzw. hat jemand dafür vielleicht schon ein bißchen Source geschrieben???
Hoffe ich habs verständlich erklärt???

THANX
Gespeichert

Manchmal verliert man und machmal gewinnen die Anderen... *g*
katjah
Sr. Member
****
Offline Offline

Beiträge: 280


129345904
WWW
« Antworten #1 am: 27.03.2002, 16:20:40 »

Wozu brauchst Du das denn (physikalisch in der Datenbank) ?
Reicht es nicht, die Daten entsprechend sortiert aus der Datenbank zu lesen?
Gespeichert

Gruss Katja
MAVERIK
Jr. Member
**
Offline Offline

Beiträge: 61



« Antworten #2 am: 27.03.2002, 16:24:09 »

Na, es handelt sich dabei um ne Steuerungssoftware, die aus der Datenbank Adressen ausliest und diese dann per ASM an eine Hardware-Schnittstelle übergibt. Und der User soll die Reihenfolge der Adressen in der Datenbank individuell verändern können. Dazu muss er wohl die Werte im Feld DBPos verändern, um die Reihenfolge zu beeinflussen!

THAT'S IT!
Gespeichert

Manchmal verliert man und machmal gewinnen die Anderen... *g*
Elias Zurschmiede
Global Moderator
Sr. Member
*****
Offline Offline

Beiträge: 411



WWW
« Antworten #3 am: 27.03.2002, 16:52:09 »

Hallo

Die physikalische Reihenfolge der Datensätze muss Dich nicht kümmern.

Definiere in der Abfrage die Sortierung der Datensätze.

Bsp.
  select * from table order by DBPos
Gespeichert

delight software gmbh
http://www.delight.ch
MAVERIK
Jr. Member
**
Offline Offline

Beiträge: 61



« Antworten #4 am: 27.03.2002, 17:14:14 »

Folgendes:

Mein Problem ist, dass wenn ich einen Datensatz auswähle und dem Programm dann sage, dass er diesen gegen den darüberliegenden tauschen soll (Die Werte in DBPos sind eindeutig), d.h. die beiden Werte aus DBPos der entsprechenden Datensätze "einfach nur" vertauschen soll, dann klappt das nicht, weil beim Wechsel zwischen Datensätzen die Tabelle aktualisiert wird. Also der zweite Wert verschiebt sich dann, und die falsche Zeile erhält den Wert! Verständlich??? Eigenschaft AutoUpdate ist auf false!
Gespeichert

Manchmal verliert man und machmal gewinnen die Anderen... *g*
Schuggi
Full Member
***
Offline Offline

Beiträge: 179



« Antworten #5 am: 27.03.2002, 19:19:47 »

Ich geh mal davon aus, das du das Tauschen der Datensätze machst, indem du die Nummer der Pos wechselst. Du musst aufpassen, das nach dem Ändern des ersten Datensatzes nicht zwei Datensätze mit der gleichen Nummer entstehen, da dann die physikalische Reihenfolge dafür sorgen kann, das auch die beiden Datensätze getauscht werden und du dann beim zweiten Zugriff nochmal auf den gleichen Datensatz zugreifst.

Wenn du deinen Code mit dem du die Datensätze tauscht hier zeigst, könnte ich dir vieleicht sagen was du anders machen musst.

Gruß
  Schuggi
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #6 am: 27.03.2002, 20:03:14 »

Angenommen, nicht mehrere User können gleichzeitig die Daten ändern...
und es gilt zunächst:
    [*]Item1 - Pos 1

    [*]Item2 - Pos 2

    [*]Item3 - Pos 3

    [*]Item4 - Pos 4
      und Du willst Item2 und Item3 vertauschen...
      dann:
      PlatzhalterA bekommt die Posnummer von Item2 also "2"

    [*]PlatzhalterB bekommt die Posnummer von Item3 also "3"

    [*]Item2 bekommt die Pos "9999" + POST

    [*]Item3 bekommt die Pos aus "PlatzhalterA" + POST

    [*]Item2 bekommt die Pos aus "PlatzhalterB" + POST
      Voilà :o)

      Gruß,
    Gespeichert

    Prof.Y
    Arpoon
    MAVERIK
    Jr. Member
    **
    Offline Offline

    Beiträge: 61



    « Antworten #7 am: 28.03.2002, 11:00:59 »

    Hab den Kram jetzt so gelöst:

    [font  size=2 face="Courier New" color="#000000"]procedure TSetupChart.PosUpBtnClick(Sender: TObject);
    var
      
    sPlatzhalterA: string;
      sPlatzhalterB: string;
      sPlatzhalterA2: string;
      sPlatzhalterB2: string;
    begin
      
    ASMTable.IndexName := 'Num';
      sPlatzhalterA  := ASMTableSortID.Text;
      sPlatzhalterA2 := ASMTableNr.Text;
      ASMTable.Prior;
      sPlatzhalterB  := ASMTableSortID.Text;
      sPlatzhalterB2 := ASMTableNr.Text;
      ASMTable.FindNearest([SPlatzhalterA2]);
      ASMTable.Edit;
      ASMTableSortID.Text := sPlatzhalterB;
      ASMTable.FindNearest([SPlatzhalterB2]);
      ASMTable.Edit;
      ASMTableSortID.Text := sPlatzhalterA;
      ASMTable.Post;
    end;

    procedure TSetupChart.PosDownBtnClick(Sender: TObject);
    var
      
    sPlatzhalterA: string;
      sPlatzhalterB: string;
      sPlatzhalterA2: string;
      sPlatzhalterB2: string;
    begin
      
    ASMTable.IndexName := 'Num';
      sPlatzhalterA  := ASMTableSortID.Text;
      sPlatzhalterA2 := ASMTableNr.Text;
      ASMTable.Next;
      sPlatzhalterB  := ASMTableSortID.Text;
      sPlatzhalterB2 := ASMTableNr.Text;
      ASMTable.FindNearest([SPlatzhalterA2]);
      ASMTable.Edit;
      ASMTableSortID.Text := sPlatzhalterB;
      ASMTable.FindNearest([SPlatzhalterB2]);
      ASMTable.Edit;
      ASMTableSortID.Text := sPlatzhalterA;
      ASMTable.Post;
    end;
    [/font]

    Da die Datenbank ja noch ein Feld mit der Eindeutigen Datensatznummer enthält (Nr), merkt sich die Routine diese, und sucht sie dann wieder heraus um die Werte im Feld SortID zu ändern! Funktioniert ohne Probs!
    Schönen dank für Eure Postings, sonst hätte es wahrscheinlich noch länger gedauert!
    Gespeichert

    Manchmal verliert man und machmal gewinnen die Anderen... *g*
    Seiten: [1] Drucken 
    « vorheriges nächstes »
    Gehe zu:  


    Einloggen mit Benutzername, Passwort und Sitzungslänge

    Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS