vertikal Scrollbar Anzeige / relative Position ?

Programmierung mit PostgreSQL (C#, PHP, Perl, Java, ...)

vertikal Scrollbar Anzeige / relative Position ?

Beitragvon Auge_Ohr » Mi 15. Aug 2012, 07:36

hi,

ich möchte eine "grosse" Table als Liste anzeigen. Da nun nicht alles auf eine Seite passt
benötige ich einen vertikalen Scrollbar.

Frage : gibt es die Möglichkeit die "relative" Position in einem "ORDER BY" zu ermitteln ?

es geht darum den vertikalen Scrollbar zu "platzieren" wenn ich per PG_DOWN oder PG_UP navigiere.

Frage : was verwendet ihr, in welcher Programmier-Sprache, um eine "Liste" darzustellen ? ListView ?





mein jetziger Workaround :

ich nutze z.Z. ein Field "__record" ( PRIMARY KEY ) welches bei "INSERT" mit NEXTVAL() inkrementiert wird.
damit fülle ich ein 2-Dim Array : "laufende" Nummer von einem "ORDER BY" und dazu dann "__record"

Code: Alles auswählen
( Xbase++ Syntax )
LOCAL cRecord := "__record"
// nur 1 Field : __record
cQuery := "SELECT " + cRecord + " FROM " + cTable + " ORDER BY " + cOrder

// Query ausführen
oPG2:Exec( cQuery )
iMax := oResult:rows
IF iMax > 0
   FOR i := 1 TO iMax
      //
      // hole aus dem Result Set Ergebnis "__record" für jede Row -> i
      //
      cfieldRecno := Var2Char( oResult:FieldGet( i - 1, 0 ) )
      //
      // 2-Dim Array : [ i , cFieldRecno ]
      //
      AADD( ::aIndex, { i , cfieldRecno } )
   NEXT
   // sort cDBSfield
   ...
ENDIF
später suche ich dann im Array nach der "__record" und habe mit "i" dann die "laufende" Nummer wenn ich mit "ORDER BY" die Sortierung in einer "Liste" ändere.
gruss by OHR
Jimmy
Benutzeravatar
Auge_Ohr
Erfahrener Benutzer
 
Beiträge: 104
Registriert: So 12. Aug 2012, 20:23

Beitragvon akretschmer » Mi 15. Aug 2012, 08:08

Auge_Ohr hat geschrieben:hi,

ich möchte eine "grosse" Table als Liste anzeigen. Da nun nicht alles auf eine Seite passt
benötige ich einen vertikalen Scrollbar.

Frage : gibt es die Möglichkeit die "relative" Position in einem "ORDER BY" zu ermitteln ?


mein jetziger Workaround :

ich nutze z.Z. ein Field "__record" ( PRIMARY KEY ) welches bei "INSERT" mit NEXTVAL() inkrementiert wird.




NEXTVAL() kann durchaus Lücken haben, es können auch Datensätze gelöscht sein. Daher ist halte ich es für FAIL, mittels einer durch nextval() gefüllten Spalte und der Gesamtanzahl des Resultsets die 'aktuelle' Position zu ermitteln. Hint: row_number() wurde bereits erfunden...


Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Auge_Ohr » Do 16. Aug 2012, 07:34

akretschmer hat geschrieben:NEXTVAL() kann durchaus Lücken haben, es können auch Datensätze gelöscht sein. Daher ist halte ich es für FAIL, mittels einer durch nextval() gefüllten Spalte und der Gesamtanzahl des Resultsets die 'aktuelle' Position zu ermitteln.
Ja. besonders im Netzwerk könnten sich die Clients in die Quere kommen. Das "sollte" aber Problem der Client Application sein.

Ich wollte nur das Prinzip des Array darstellen was ich für den Workaround verwende
akretschmer hat geschrieben:Hint: row_number() wurde bereits erfunden...
deine "Nebensätze" finde ich toll, die enthalten meisten das "Stichwort" was mir fehlt.

tatsächlich ist in meinem "German PDF" von 2003 kein Eintrag über "row_number()" ... da muss ich mir mal genauer ansehen. ( 9.19. Window Functions )


ich "befürchte" aber es ist immer noch nicht das was ich meine :
Code: Alles auswählen
ORDER BY Col1
Col1      Col2

AAA      CCC
BBB       LLL      -> hier stehe ich -> __record = 2
CCC      ZZZ
DDD      KKK
EEE       DDD



ORDER BY Col2

AAA      CCC   -> jetzt steh ich hier
EEE       DDD
DDD      KKK   
BBB       LLL    -> und hier will ich hin -> __record = 2
CCC      ZZZ
gruss by OHR
Jimmy
Benutzeravatar
Auge_Ohr
Erfahrener Benutzer
 
Beiträge: 104
Registriert: So 12. Aug 2012, 20:23

Beitragvon akretschmer » Do 16. Aug 2012, 08:10

Auge_Ohr hat geschrieben:Ja. besonders im Netzwerk könnten sich die Clients in die Quere kommen. Das "sollte" aber Problem der Client Application sein.

Ich wollte nur das Prinzip des Array darstellen was ich für den Workaround verwende
deine "Nebensätze" finde ich toll, die enthalten meisten das "Stichwort" was mir fehlt.


Absicht.

tatsächlich ist in meinem "German PDF" von 2003 kein Eintrag über "row_number()" ... da muss ich mir mal genauer ansehen. ( 9.19. Window Functions )


ich "befürchte" aber es ist immer noch nicht das was ich meine :
Code: Alles auswählen
ORDER BY Col1
Col1      Col2

AAA      CCC
BBB       LLL      -> hier stehe ich -> __record = 2
CCC      ZZZ
DDD      KKK
EEE       DDD



ORDER BY Col2

AAA      CCC   -> jetzt steh ich hier
EEE       DDD
DDD      KKK   
BBB       LLL    -> und hier will ich hin -> __record = 2
CCC      ZZZ


Code: Alles auswählen
test=# create table ohr(col1 text, col2 text);
CREATE TABLE
test=*# copy ohr from stdin;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> aaa  ccc
>> bbb  lll
>> ccc  zzz
>> ddd  kkk
>> eee  ddd
>> \.
test=*# commit;
COMMIT
test=# select col1, col2, row_number() over (order by col1) from ohr order by col1;
 col1 | col2 | row_number
------+------+------------
 aaa  | ccc  |          1
 bbb  | lll  |          2
 ccc  | zzz  |          3
 ddd  | kkk  |          4
 eee  | ddd  |          5
(5 rows)

test=*# select col1, col2, row_number() over (order by col1) from ohr order by col2;
 col1 | col2 | row_number
------+------+------------
 aaa  | ccc  |          1
 eee  | ddd  |          5
 ddd  | kkk  |          4
 bbb  | lll  |          2
 ccc  | zzz  |          3
(5 rows)

test=*# select col1, col2, row_number() over (order by col2) from ohr order by col1;
 col1 | col2 | row_number
------+------+------------
 aaa  | ccc  |          1
 bbb  | lll  |          4
 ccc  | zzz  |          5
 ddd  | kkk  |          3
 eee  | ddd  |          2
(5 rows)

test=*# select col1, col2, row_number() over (order by col2) from ohr order by col2;
 col1 | col2 | row_number
------+------+------------
 aaa  | ccc  |          1
 eee  | ddd  |          2
 ddd  | kkk  |          3
 bbb  | lll  |          4
 ccc  | zzz  |          5
(5 rows)



Such Dir aus, was Dir gefällt.

Hint: row_number() kann auch sortieren, nicht nur SELECT.


Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Auge_Ohr » Fr 17. Aug 2012, 21:57

hi,

das sieht doch schon mal gut aus, DANKE !
gruss by OHR
Jimmy
Benutzeravatar
Auge_Ohr
Erfahrener Benutzer
 
Beiträge: 104
Registriert: So 12. Aug 2012, 20:23


Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron