Salut
Je voulais savoir comment faire sous IB pour sélectionner par exemple de la ligne 4 à la ligne 10.
Or les fonctions 'limit' et 'top' n'existe pas sous IB.
Cdlt
Salut
Je voulais savoir comment faire sous IB pour sélectionner par exemple de la ligne 4 à la ligne 10.
Or les fonctions 'limit' et 'top' n'existe pas sous IB.
Cdlt
A vue de nez, j'utiliserais une procédure stockée, avec une boucle et une variable incrémentée, du style :
Mais je ne suis pas un pro A tester;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 FOR SELECT <Ma requete> INTO <Mes valeurs à renvoyer> DO BEGIN i = i + 1 IF (i>10) THEN EXIT; IF (I>= 4) THEN SUSPEND; END;
Roland
Roland
Merci pour ta réponse
L'inconviénient de cette méthode c'est que je lis tout de même tous les données de la table ce qui est assé volumineux.
Cdlt
Non, du moins si j'ai bien compris la réponse que Barbibulle m'avait donnée.(cf Sujet : "Tester si une table est vide").
Le For... semble ramener la requête ligne par ligne, et lesort de la procédure après la 10ème ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part IF i>10 THEN EXIT;
Roland
Roland
Aurais-tu un code source de la requête et de son utilisation a m'envoyer car je ne vois pas du tout comment ca pourrais marcher.
Desolé
Cdlt
J'espère ne pas avoir fait (trop) de fautes !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE PROCEDURE EXTRAITLIGNES (Debut INTEGER, Fin INTEGER) RETURNS (Valeur1 INTEGER, Valeur2 VARCHAR (10)) AS DECLARE VARIABLE i INTEGER; BEGIN i = 0; FOR SELECT Champ1, Champ1 FROM MATABLE INTO :Valeur1, :Valeur2 DO BEGIN /* Pour chaque ligne de la requête, les valeurs des champs sont stockées dans les valeurs à retourner*/ i = i + 1; /*i prend le n° de la ligne */ IF i > :Fin THEN EXIT; /* Si mon n° de ligne est supérieur à la limite passée en entrée, on arrête */ IF i >= :Debut THEN SUSPEND;/*Sinon, s'il est au moins égal à la limite inférieurs, je renvoie mes deux champs */ END END
Tu crées ta procédure dans ta base, ensuite, pour l'appeler, comme elle renvoie plusieurs lignes, je crois qu'il faut que tu utilises un composant style TIBQuery, avec une SQL(qqs variantes entre SQL, ISQL, etc voir Aide Interbase.
Code : Sélectionner tout - Visualiser dans une fenêtre à part EXECUTE PROCEDURE EXTRAITLIGNES 4 10 RETURNING_VALUES Valeur1 Valeur2
N.B. : As-tu lu le tutoriel "Procédures stockées" (Annonce un plu plus haut dans le forum) ? Il m'a beaucoup aidé
Essaie et tiens-moi au courant
Cordialement
Roland
Roland
merci beaucoup je vais tester et adapter au php
Je dirais si ca marche
en firebird 1.5, le next et top existent: FIRST et SKIP, Pex:
donnera les 10 premiers enregistrements:
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT FIRST 10 SKIP 10 champ1, champ2, champ3 FROM TaTable
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager