Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Update Table rownum (https://www.delphipraxis.net/174756-update-table-rownum.html)

EarlyBird 8. Mai 2013 07:03

Datenbank: Oracle • Version: 10 • Zugriff über: -

Update Table rownum
 
Hallo liebe DP´ler,
ich habe eine einfache Tabelle in der ich eine Tabellenspalte updaten möchte.
Es schien mir eigendlich eine simple Aufgabe, aber irgendwie will es nicht klappen.
Die Tabelle hat 900 Einträge.
Nun möchte ich in einer Spalte in einer bestimmten Reihenfolge die Werte 1 bis 11 eintragen.
immer fortlaufend.
Code:
// Versuch 1
UPDATE view_of_table1 SET PosInGRID = CASE mod(rownum, 11) WHEN 0 THEN 11 ELSE mod(rownum, 11) END CASE;

// Versuch 2
UPDATE Table1 
  SET PosInGRID = (SELECT CASE mod(rownum, 11) WHEN 0 THEN 11 ELSE mod(rownum, 11) END CASE FROM view_of_table1 vT WHERE vT.id = table1.id);
"view_of_table1" ist eine einfache View der "Table1" mit order by, damit rownum in der richtigen Reihenfolge angewandt wird.
Beider Versuche funktionieren nicht.
Könnt Ihr mir einen Tipp geben wie ich es hin bekomme

Furtbichler 8. Mai 2013 07:09

AW: Update Table rownum
 
Die Antwort ist bei SO zu finden:

http://stackoverflow.com/questions/6...rder-by-clause

Mit Google wärst Du selbst drauf gekommen...

Perlsau 8. Mai 2013 08:24

AW: Update Table rownum
 
Zitat:

Zitat von EarlyBird (Beitrag 1214644)
Nun möchte ich in einer Spalte in einer bestimmten Reihenfolge die Werte 1 bis 11 eintragen.

Bei 900 Einträgen kannst du das auch locker mit Delphi realisieren:
Delphi-Quellcode:
procedure TDatenModul.ZiffernEinfuegen(Von, Bis : Integer);
var
   i : Integer
begin
   i := Von;
   SortiereTabelleNach???;
   MyTable.First;
   while not MyTable.Eof DO
   begin
      MyTable.Edit;
      MyTable.FieldByName('Ziffernspalte').AsInteger := i;
      MyTable.Post;
      Inc(i);
      if i > Bis then i := Von;
   end;
   ShowMessage('Ziffern erfolgreich eingetragen ...');
end;

EarlyBird 8. Mai 2013 15:39

AW: Update Table rownum
 
Danke für Eure Unterstützung.

Delphi konnte ich in diesem Fall nicht nutzen es sollte eine gespeicherte Prozedur in der Datenbank werden.

Und Ja, wenn man Google richtig füttert bekommt man auch die richtigen Ergebnisse :oops:

Und wenn mal jemand was ähnliches lieber hier sucht wie bei Google
So klappt es wunderbar
Code:
CREATE OR REPLACE PROCEDURE setRowsCounter (newRowsInGrid number)
AS
BEGIN
  UPDATE table1 
         SET PosInGrid = (Select RowNumber1 from (SELECT ID, CASE mod(rownum, newRowsInGrid) WHEN 0 THEN newRowsInGrid ELSE mod(rownum,newRowsInGrid) END as RowNumber1 FROM
                                                     (SELECT ID, FROM table1 order BY ort)) dt
        WHERE dt.ID = table1.ID);
END;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 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