Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Défis
Défis Ce forum est celui des défis et challenges Office. Prêts à relever le gant ? C'est parti !
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/02/2008, 22h24   #21
En attente de confirmation mail
 
Inscription : janvier 2008
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : janvier 2008
Messages : 107
Points : 62
Points : 62
Envoyer un message via MSN à Friedrick
Je vais poster ma réponse plus tard mais je crois qu'il y a moyen de rendre encore plus général ton idée. Je vais créer quelque chose mais je ne sais pas du tout si cela sera bien
Friedrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2008, 11h26   #22
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Citation:
tous les coups sont permis!
même les tordus à partir du moment que ca marche.
Si TOUS les coups sont permis...
Code :
1
2
 
ALTER TABLE table DROP COLUMN n
Code :
ALTER TABLE table ADD COLUMN n COUNTER
Code :
1
2
3
4
 
SELECT table.*, iif([n]=4,6,iif([n]=6,4,[n])) As NewOrder
FROM table
ORDER BY NewOrder
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2008, 19h20   #23
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 897
Points : 3 897
Friedrick> bienvenu. on attend ta création.

Maxence HUBICHE> he bien voilà, on se rapproche.

on peut dire que c'est une semi-solution:
tu fais un prétraitement sql avant de lancer la requete ce qui n'empêchera pas à jpcheck d'en faire autant en vba et sur lequel il pourra rajouter une requete.
cette solution étant facile c'est pour cela que je disais:
Citation:
Envoyé par defi
je voudrais une requete...
et en fait qu'une seul.

le pb dans cette solus c'est que l' 'alter table' ne pourras pas se faire à l'intérieur d'une requete.
elle est aussi restictif: on ne peut créer de numéro automatique que sur les tables et pas sur les requetes. (c'est vrai, cela fait pas parti des restrictions de l'énoncé)

mais l'idée est là! pouvoir utiliser un truc de ce genre:
Citation:
Envoyé par Maxence HUBICHE
Code :
1
2
3
SELECT table.*, iif([n]=4,6,iif([n]=6,4,[n])) As NewOrder
FROM table
ORDER BY NewOrder
j'imaginais moi une fonction IndiceAuto() qui pourrait s'utiliser comme ca:
Code SQL :
1
2
SELECT laTable.champ, IndiceAuto() AS indice
FROM laTable
(j'ai biensur des paramètres dans IndiceAuto car il est difficile de s'en passer).
à défaut de trouver du 100% sql.

ce qui donne dans la solus de Maxence pour ce pb:
Code SQL :
1
2
3
SELECT TABLE.*
FROM TABLE
ORDER BY iif(IndiceAuto()=4,6,iif(IndiceAuto()=6,4,IndiceAuto()))

mais comme je l'ai dit si j'avais cette solus, on en discuterait pas là, j'aurais posté en contribution.

toutefois j'ai un embryon qui peut, peut-être, rendre service ou ouvrir une piste vers la vrai solution de IndiceAuto().
mais qui sait? vous allez peut être trouver vous le truc?
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 18h35   #24
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Citation:
Envoyé par vodiem Voir le message
Friedrick> bienvenu. on attend ta création.
Et nous la tienne !
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 23h25   #25
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 897
Points : 3 897
bon, je rappel: c'est pas l'idéal, mais ca peut marcher

gard à vous! je lache l'embryon:

pour avoir l'indice des enregistrements:
Code :
1
2
3
4
5
6
7
Public monIndice As Variant
 
Public Function IndiceAuto(Vmax, v As Variant) As Variant
monIndice = IIf(IsEmpty(monIndice), 1, monIndice + 1)
IndiceAuto = monIndice
If monIndice >= Vmax Then monIndice = Empty
End Function
avec le sql:
Code SQL :
1
2
SELECT laTable.champ, IndiceAuto(DCount("*","laTable"),[champ]) AS Indice
FROM laTable;
comme c'est un embryon: on touche qu'avec les yeux...
et pour ceux qui n'ont pas écouté l'avertissement: (à exécuter) je n'ai pas testé en requête action mais cela ne devrait pas poser de pb.
si vous le protégez en le verrouillant dans un form ca marche aussi : principe du: "touche pas à mon ..." embryon.

donc puisque la fonction ne peut être appelée deux fois pour le même champ:
Code :
1
2
3
SELECT TABLE.*
FROM TABLE
ORDER BY iif(IndiceAuto()=4,6,iif(IndiceAuto()=6,4,IndiceAuto()))
ne marche pas et donc pour résoudre le pb de martine (qui n'a aucun intérêt: je la connais même pas )
Code SQL :
1
2
3
SELECT t1.champ
FROM laTable AS t1
ORDER BY IndiceAutolaTable(DCount("*","laTable"),[champ]);
avec pour fonction:
Code :
1
2
3
4
5
6
7
8
9
10
Public Function IndiceAutolaTable(Vmax, v As Variant) As Variant
monIndice = IIf(IsEmpty(monIndice), 1, monIndice + 1)
Select Case monIndice
    Case 4: IndiceAutolaTable = 6
    Case 6: IndiceAutolaTable = 4
    Case Else
    IndiceAutolaTable = monIndice
End Select
If monIndice >= Vmax Then monIndice = Empty
End Function
vous remarquerez que [champ]=v dans la fonction ne sert à rien que de déclencher la fonction.
le compte dcount n'est là que pour avoir une relative stabilité.
dans le cas de martine vous remarquerez que vous avez le droit d'y toucher avec vos doigts puisque l'indice n'est pas visible. (l'embryon est caché )

j'ai essayé d'avoir un ordre par le temps mais sans succés: pas assez précis (peut être avec le code donné par LedZeppII ici ?)
si j'ai qq idées tordues qui pourrait peut-être rendre cela plus stable, je voulais vous défiez de trouver mieux...

donc: qui dit mieux ?
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 09h02   #26
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 301
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 301
Points : 7 940
Points : 7 940
Citation:
Envoyé par vodiem Voir le message
j'aime bien ton truc random,

je disais entre 6 et 4 pour simplifier mais je reste indécis sur les valeurs et sur le nombre de personnes.

une requete un peu plus "généraliste" quoi, tu me trouve un truc comme ca?
Heu pourtant tu mets 4 et 6 en dur dans ta solution...

De plus tu demandes une requête et une seule, .... mais tu ajoutes du code

Donc on n'a pas le droit à plusieurs requêtes mais on a droit à mettre du VBA; les règles ont l'air d'évoluer en fonction de ta solution.

Et de toute façon je n'ai toujours pas compris l'énoncé dui problème qui évolue à chaque message.
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 09h10   #27
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Citation:
Envoyé par Arkham46 Voir le message
Donc on n'a pas le droit à plusieurs requêtes mais on a droit à mettre du VBA; les règles ont l'air d'évoluer en fonction de ta solution.
Nope !
On n'a pas le droit de mettre du VBA, puisue la solution VBA a été rejetée !
Citation:
Envoyé par vodiem Voir le message
Maxence HUBICHE> he bien voilà, on se rapproche.
<<snip>>et en fait qu'une seul.

le pb dans cette solus c'est que l' 'alter table' ne pourras pas se faire à l'intérieur d'une requete.
D'autre part, comme tu n'as pas précisé que cela devait se faire dans un MDB, je fais un ADP, et je fais une procédure stockée, et j'adapte ce SQL à SQLServer, et ça marche en une seule 'requête'

(tu as dit : tous les coups sont permis !)
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 10h38   #28
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 897
Points : 3 897
,

je n'ai pas proscris le vba, à plusieurs reprise je dis même que ma solus est elle-même sql+vba.
je disais à jpcheck qui avait fourni une solus uniquement en vba:
Citation:
Envoyé par vodiem
tu me la refais dans une requete et tu auras gagné
les règles n'ont pas évoluées, je rappel le défi c'est toujours:
Citation:
je voudrais une requete qui me permute le 6ème enregistrement avec le 4ème à partir de cette table
et pour arriver à répondre à cette question il faut pouvoir énumérer les enregitrements.

Citation:
Envoyé par Arkham46
Heu pourtant tu mets 4 et 6 en dur dans ta solution...
s'il n'est pas difficile de mettre en paramètre, je répondais à la solus de random qui n'était pas souple.

c'est un défi, et je vous remercie à chacun du temps que vous prennez pour y répondre, si vous avez mal pris les remarques que j'ai fait, j'en suis navré, seulement il y a des solus plus pertinante que d'autre, il faut donc cerner les limites de chacune.

Citation:
Envoyé par Arkham46
De plus ta solution proposée n'étant pas "stable"...
la fonction n'est pas stable dans tous les cas de figure, mais pour ma solution et d'en d'autre cas, elle l'est.

Citation:
Envoyé par Maxence HUBICHE
D'autre part, comme tu n'as pas précisé que cela devait se faire dans un MDB, je fais un ADP, et je fais une procédure stockée, et j'adapte ce SQL à SQLServer, et ça marche en une seule 'requête'

(tu as dit : tous les coups sont permis !)
oui, tu as raison. j'admets en procédure stockée, ok.
mais je n'ai pas dis que tu n'avais pas une solution seulement je remarquais les quelques restrictions.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 12h24   #29
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
Bon, alors, si on a le droit de faire des fonctions en VBA...
C'est plus facile !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Function Permuter(v1 As Long, v2 As Long, un_champ As Variant, NomChamp As String, NomTable As String) As Long
'---------------------------------------------------------------------------------------
' Procédure : Permuter
' Crée le   : 07/02/2008 12:19
' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr)
' Objet     : permuter deux champs
'
' Arguments :   v1 - n° de la 1ère ligne à permuter
'               v2 - n° de la 2ème ligne à permuter
'               un_champ - mettre un champ quelconque. ceci sert à forcer le recalcul
'                   de la fonction
'               NomChamp - Nom d'un champ (pour compter le nombre d'enr de la table)
'               NomTable - Nom de la table dont il faut compter les enr.
'---------------------------------------------------------------------------------------
'
    Static n As Long
    If n >= DCount("[" & NomChamp & "]", "[" & NomTable & "]") Then
        n = 1
    Else
        n = n + 1
    End If
    Select Case n
        Case v1: Permuter = v2
        Case v2: Permuter = v1
        Case Else: Permuter = n
    End Select
End Function
Code :
SELECT Nom FROM Table1 ORDER BY permuter(4,6,[nom],"Nom","Table1");
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 13h12   #30
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 301
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 301
Points : 7 940
Points : 7 940
Bjr,

Citation:
Envoyé par vodiem Voir le message
je n'ai pas testé en requête action mais cela ne devrait pas poser de pb.
Pas évident pour une création de table avec Select Into :
http://support.microsoft.com/kb/280049/en-us
Mais le problème se pose dans tous les cas, le order by ne détermine pas l'ordre d'écriture des enregistrements.

Je reste sur mes gardes pour l'ordre de lecture, je ne trouve pas de document me garantissant que l'ordre de lecture se fait dans l'ordre de stockage des enregistrements dans la table.
(même si les tests sont concluants, rien ne me dit qu'il n'y a pas quelque part un buffer de lecture utilisé par Jet et qui va planter mon ordre de sélection une fois sur cent, de la même manière que pour l'écriture)
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 14h05   #31
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
au vu de la complexité de l'interpréteur SQL
http://support.microsoft.com/kb/464315/fr
JE suppose que tu n'as pas complètement tort concernant l'ordre variable suivant certains critères...
__________________
1formaxion, une formation de qualité, des formateurs compétents
Mes tutoriels et vidéos :
Tableaux croisés dynamiques, Access les Bases, et les autres !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 14h26   #32
Expert Confirmé
 
Inscription : mai 2005
Messages : 3 419
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3 419
Points : 3 768
Points : 3 768
Citation:
Envoyé par Arkham46 Voir le message
Bjr,




http://support.microsoft.com/kb/280049/en-us
Je reste sur mes gardes pour l'ordre de lecture, je ne trouve pas de document me garantissant que l'ordre de lecture se fait dans l'ordre de stockage des enregistrements dans la table.
j'ai vu des exemples contraires, sur des tables conséquentes, et la documentation d'access est à ce sujet assez claire
au hasard "les enregistrements d"une variable de type table apparaissent initialement dans n'importe quel ordre"

un tel défi ne fait que souligner l'absence d'un compteur de ligne véritable
dans access et l'utilité du compteur auto
__________________
Elle est pas belle la vie ?
random est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 00h05   #33
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 897
Points : 3 897
Maxence Hubiche>
Citation:
Envoyé par Maxence Hubiche
Bon, alors, si on a le droit de faire des fonctions en VBA...
C'est plus facile !
je ne pensais pas que c'était difficile, d'ailleur je pensais et je pense qu'il doit y avoir plusieurs solus à ce pb.
mais je soupconnais des solus tordues.

j'avais aussi commencé et eu comme toi ce code puis je l'avais modifié en: (en reprenant à partir de ton code)
Code SQL :
SELECT champ FROM laTable ORDER BY permuter(4,6,[champ],"laTable")
avec:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function Permuter(v1 As Long, v2 As Long, un_champ As Variant, NomTable As String) As Long
'---------------------------------------------------------------------------------------
' Procédure : Permuter
' Crée le   : 07/02/2008 12:19
' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr)
' Objet     : permuter deux champs
'
' Arguments :   v1 - n° de la 1ère ligne à permuter
'               v2 - n° de la 2ème ligne à permuter
'               un_champ - mettre un champ quelconque. ceci sert à forcer le recalcul
'                   de la fonction
'               NomTable - Nom de la table dont il faut compter les enr.
'---------------------------------------------------------------------------------------
'
    Static n As Long
    n = (n Mod DCount("*", "[" & NomTable & "]")) + 1
    Select Case n
        Case v1: Permuter = v2
        Case v2: Permuter = v1
        Case Else: Permuter = n
    End Select
End Function
dans le principe c'est le même que le tien un peu allégé (je n'avais pas non plus le paramètre NomChamp pour le compte)

le traitement n'est pas très différent mais je vais expliquer pourquoi je n'ai pas fait ce choix:
je n'ai pas opté pour static car lors d'un pb d'arrêt 'n' n'est pas initialisé et déclarer en public permet plus facilement d'accéder à 'n' pour l'initialiser ou forcer l'initialisation. (encore que l'on devrait pouvoir y accéder par le nom du module si je ne me trompe).
j'ai renoncé à mettre le calcul du nombre d'enregistrement dans la fonction car s'il s'agit d'une requete avec jointure, cela ne marche plus, alors que si on fournit en paramètre c'est plus libre.
j'ai renoncé au modulo, je trouvais plus satisfaisant de libérer la valeur. je trouve intellectuellement plus "propre" et satisfaisant de procéder ainsi: je crée la valeur dans la requete, je la libère après.

Arkham46>qd je parlais de requete action je pensais pour la fonction indiceAuto pour l'énumération des enregistrements.

mais tu as raison de souligner les limites d'exploitation de tels fonctions qui pourrait rester que dans le domaine du ludique mais je pense que dès lors que l'on part déjà sur des tables sans ordres il y a déjà du hazard et faire par exemple une permutation dans du hazard n'est pas forcemment du domaine de l'utopique.
(je reste septique sur un décalage entre lecture et écriture.)

l'enjeu au delà de cette exemple c'est d'avoir ce que random à clairement défini: un compteur de ligne véritable.
ce en quoi nous pourrions avoir des requetes simplifiées (les calculs qui demande l'enregistrement n-1 par exemple, résolution de pb avec des doublons, selection de plage...)

si ces fonctions fournissent un compteur, elles ne sont pas vraiment exploitable.
l'insert+alter table+counter fournit un résultat plus fiable mais lourd pour l'énumération.

alors celui qui trouveras une autre piste à la résolution de "martine" pourrait peut être résoudre aussi ces autres questions.
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2008, 20h13   #34
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 897
Points : 3 897
bonsoir, j'ai trouvé une facon de rendre l'embryon stable et viable.
c'est pas beau à voir mais c'est stable et ca marche.
ceci afin d'avoir un compteur de ligne.

Code SQL :
1
2
SELECT t2.champ, t3.valeurIndice FROM (SELECT t1.champ, IndiceAuto(DCount("*","laTable"),[champ]) AS li
FROM laTable t1) t2, IndiceValeur t3 WHERE str(t2.li)=str(t3.indice)
à partir de :
. la fonction embryonnaire: IndiceAuto fourni dans le post précédent ici
. d'une table [IndiceValeur] ayant pour champs: <indice>, <valeur indice> ayant pour valeur:
Code :
1
2
3
4
5
6
7
8
9
10
11
indice	valeurIndice
1	1
2	2
3	3
4	4
5	5
6	6
7	7
8	8
9	9
....
bon c'est pas terrible d'avoir une table pour ca mais il faut ce qu'il faut...
vous remarquerez que je me suis pas foullé dans le where pour résoudre le pb de typage...

la solus pour "martine" peut donc se faire avec des iif.
Code SQL :
1
2
3
4
SELECT t2.champ, t3.valeurIndice
FROM (SELECT t1.champ, IndiceAuto(DCount("*","laTable"),[champ]) AS li
FROM laTable t1) t2, IndiceValeur t3 WHERE str(t2.li)=str(t3.indice)
ORDER BY iif(t3.valeurIndice=4,6,iif(t3.valeurIndice=6,4,t3.valeurIndice))
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h23.


 
 
 
 
Partenaires

Hébergement Web