|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
|
En attente de confirmation mail
|
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
|
|
|
00
|
|
|
#22 | |||
![]() ![]() ![]() |
Citation:
Code :
ALTER TABLE table ADD COLUMN n COUNTER Code :
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|||
|
00
|
|
|
#23 | ||||||||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
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:
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:
Code SQL :
à défaut de trouver du 100% sql. ce qui donne dans la solus de Maxence pour ce pb: Code SQL :
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? |
||||||||
|
|
00
|
|
|
#24 |
![]() ![]() ![]() |
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#25 | ||||||||||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
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 :
Code SQL :
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 :
)Code SQL :
Code :
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 ? |
||||||||||
|
|
00
|
|
|
#26 | |
![]() ![]() Inscription : septembre 2003 Messages : 4 301 ![]() |
Citation:
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.
|
|
|
|
00
|
|
|
#27 | ||
![]() ![]() ![]() |
Citation:
On n'a pas le droit de mettre du VBA, puisue la solution VBA a été rejetée ! Citation:
(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 ! |
||
|
00
|
|
|
#28 | |||||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
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:
Citation:
Citation:
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:
Citation:
![]() mais je n'ai pas dis que tu n'avais pas une solution seulement je remarquais les quelques restrictions. |
|||||
|
|
00
|
|
|
#29 | ||
![]() ![]() ![]() |
Bon, alors, si on a le droit de faire des fonctions en VBA...
C'est plus facile ! Code :
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 ! |
||
|
00
|
|
|
#30 | |
![]() ![]() Inscription : septembre 2003 Messages : 4 301 ![]() |
Bjr,
Citation:
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) |
|
|
|
00
|
|
|
#31 |
![]() ![]() ![]() |
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 ! |
|
00
|
|
|
#32 | |
|
Expert Confirmé
![]() Inscription : mai 2005 Messages : 3 419 ![]() |
Citation:
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 ? |
|
|
|
00
|
|
|
#33 | |||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
Maxence Hubiche>
Citation:
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") Code :
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. |
|||
|
|
00
|
|
|
#34 | ||||||
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
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 :
. 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 :
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 :
|
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com