WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   ms-sql/vb.net dataset/repeater splitten oder limitieren (http://www.wcm.at/forum/showthread.php?t=153110)

T.dot 14.12.2004 08:50

ms-sql/vb.net dataset/repeater splitten oder limitieren
 
Morgen!

Also ganz einfach, ich lese per stored procedure aus einer Tabelle am SQL-Server Daten in ein Dataset ein. Diese gebe ich dann mit einem Repeater in einer Webform aus.

Jetz möchte ich aber nur zb. jeweils 10 Einträge pro Seite haben, also muss ich entweder:
- per SQL Statement limitieren
- das Dataset verkleinern
- oder den Repeater ein Start und Endwert beibringen

Fragt sich nur, wie ich das mache ;)

Meine bisherigen Ideen:
Ich kann ein pseudo limit in sql basteln (SELECT top 10 * FROM bla WHERE id not in (SELECT top 10 id FROM bla) - gefällt mir einerseits nicht, anderseits brauch ich ein paar Daten aus der ersten Zeile der Tabelle (gut, die liesen sich auch anders auslesen).
Ich kann im Dataset alle Reihen einzeln löschen, die ich nicht haben will.

Ja, mehr ist mir leider nicht eingefallen. Am liebsten wärs mir ein Resize vom Dataset zu machen zb von Wert 10-20, alle anderen wegwerfen oder dem Repeater eine Start- und Endposition angeben - nur geht das? und wie?

Hoffe, dass mich irgendjemand versteht ;) und mir sagen kann was da am schnellsten, sinnvollsten, (besten) ist..

mfg Thomas

JackLemon 14.12.2004 11:23

nö nö, besser das problem an der wurzel anpacken. mysql kann das ohnehin vorbildlich: SELECT x FROM y WHERE z LIMIT offset, rowcount. und offset bzw. rowcount kannst du der stored procedure ja als parameter übergeben.

T.dot 14.12.2004 11:28

ja mysql kann das, nur ms-sql nicht :motz: wollt ich ursprünglich so machen, aber des geht so nicht - nur über den umweg
SELECT top 10 * FROM bla
WHERE id not in (SELECT top 10 id FROM bla)

werds wahrscheinlich aber eh so machen (müssen)...

mfg Thomas

JoergStueger 14.12.2004 16:58

Lässt sich leider nicht anders lösen ...

Siehe hier http://www.aspheute.com/artikel/20000403.htm

ist zwar classic asp, aber vergleichbar...

LG
Joerg

JackLemon 16.12.2004 12:12

sorry, nicht genau gelesen. beim MS SQL nehm ich immer

SET ROWCOUNT 100;

aber das ist natürlich auch nicht besser oder schlechter als TOP.

T.dot 16.12.2004 13:19

nachdem es bei dem Geschichtl um Beiträge/Seite (ala Forum) ging, hab ich das über ein blätterbares Datagrid gelöst - mal schaun wie lang sich das bewährt ;)

mfg Thomas

Biri 16.12.2004 22:12

am besten, wie von den vorpostern direkt im sql statement lösen - geht zwar auch, dass man bei der fill-methode des dataset objects eine anzahl angibt, sollte man aber nicht verwenden, da hier erst clientseitig eine einschränkung gemacht wird.
also z.b. 100 sätze übertragen, aber dann nur 10 angezeigt.

bevorzugte lösung kommt halt auch immer auf die datenmenge an, mit der du zu tun hast.

fg
-hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag