Le verrou civilisationnel du monde d’après – Le monde d'après\nLe verrou civilisationnel du monde d’après\ncopyright photo Portrait Guillaume faburel : © Pierre-Antoine Pluquet\nUrbanisation et métropolisation de la terre sont un écocide. Qui sont les assassins ?\nLa métropolisation du monde est en très grande partie responsable de la pandémie, tout ceci dans un déni général, non seulement, c’est logique, de la part de savoirs scientifiques très souvent prompts à caresser le pouvoir, mais plus étonnement de la part d’encore beaucoup de militant.e.s de la critique sociale et écologique. Comme si cela chatouillait un peu.\n1/ Rôle de la métropolisation du monde et de l’urbanisation de la terre dans la pandémie\nL’apparition et la diffusion du Covid-19 sont étroitement liées à la civilisation urbaine et à ses mantras actuels : la métropolisation du monde et l’urbanisation de la terre. Ces métropolisation et urbanisation ont augmenté et rapproché l’ensemble des lieux d’habitation humaine, et ce par exploitation croissante des ressources et par artificialisation des habitats écologiques. Elles ont également généralisé les systèmes de flux et de mouvements dits nécessaires à la satisfaction des besoins depuis les grandes agglomérations. La maladie s’est ainsi répandue à l’échelle planétaire, devenant pandémie en un temps record par les concentrations métropolitaines et leur promiscuité, par les circulations interurbaines et leurs vélocités.\nLa situation sanitaire actuelle incarne avec éloquence les effets écologiques de la mondialité urbaine et, en son arrière plan, de l’urbanisation de la terre. Elle est la conséquence directe de la hiérarchie des espaces que le capitalisme néolibéral et ses soutiens biopolitiques d’Etat ont instituée ces quarante dernières années partout sur le globe, avec les Métropoles comme têtes de gondoles. Le Covid-19, c’est alors la nature co-habitante qui reprend ses droits dans la niche écologique globalisée de l’asservissement, urbain, de la nature et de l’arrachement, urbain, du vivant, que la métropolisation incarne assez magistralement et ce jusqu’a la démesure puisqu’elle structure depuis maintenant quarante ans l’entièreté du monde (Marianne, 2 avril 2020).\nCe faisant, face à ce rôle évident de l’arrachement du vivant par la densification des espaces et de l’artificialisation des terres, les responsabilités premières sont elles-mêmes assez évidentes. Il s’agit des politiques territoriales des Etats productivistes, colonialistes, extractivistes. L’aménagement comme l’urbanisme, l’agriculture intensive comme l’exploitation minière, visent encore et encore à accroître les rendements du capital infrastructurel ainsi que les puissances politiques de l’Empire par les constructions humaines et les destructions des non-humains. Or, force est de constater que la critique du moment qui s’est emparée de la pensée sur le monde d’après détourne encore et toujours le regard, qui devient dès lors aveugle sur l’existence d’une société écologique post-urbaine souhaitable (et pourtant déjà largement émergente).\nCertes, chacun.e a pu remarquer depuis un mois et demi que, dans les domaines de la recherche par exemple, il n’y a pas une semaine qui n’offre pas son lot de questionnaires et d’enquêtes(1), de groupages whatsapp et de visioconférences zoom… pour sonder et réfléchir urgemment au présent. Dans le champ des sciences humaines et sociales de l’urbain, celui qui nous intéresse ici, c’est même des plus frétillant (2). Comme si on ne savait pas ! Il serait dorénavant impérieux de s’engager (3), tout ceci non sans rappeler de manière éloquente des appels scientifiques à la rébellion avant le confinement (4). Dans ce registre justement de l’engagement voire de la rébellion, pas un jour non plus sans une tribune, un appel, un manifeste, un billet… issu au bas mot de 25 mails quotidiens, pour phosphorer sur quelques radicalités qu’il conviendrait de réarmer une fois le confinement terminé. Les écrits militants particulièrement des courants de la critique sociale et écologique foisonnent. Un rapide décompte fait état de 18 tribunes du 25 mars au 10 avril, juste dans les médias mainstream.\nTout comme l’agitation incessante et le bavardage permanent participent très directement de la situation particulière que nous vivons (celle de la saturation et de l’asphyxie généralisée de vies sans véritables existences par dématérialisation accélérée), cette gigite aiguë et ce blabla continu laissent dans l’ombre voire dénient ouvertement la destinée écocidaire de la frénésie bâtisseuse, ainsi qu’en arrière plan la vanité humaine des styles de vie de la mondialité urbaine (et de ses mythes de la modernité ravageuse). Même le New York Times commence à se poser la question de l’adaptation de nos styles de vie urbains, c’est peu dire (« Can City Life Survive Coronavirus? », 17 mars).\nEt, les toutes récentes analyses statistiques sérieuses le montrent sans discussion, pour la France notamment, le lien entre densité et épidémie est établi : « Les taux de mortalité observés et normalisés sont les plus faibles dans le groupe des départements de plus faible densité. Ils tendent ensuite à croître, mais modérément et de façon irrégulière, avec les densités en région. Ils font ensuite un saut net pour les départements dotés d’une agglomération de plus de 500 000 habitants. Le niveau en Île-de-France est incomparablement plus élevé, y compris par rapport à ces agglomérations. » (5). Rappelons ici que, concernant justement les effets de la densité, le seuil de 400 000 habitants pour une agglomération et celui de 650 000 pour une aire urbaine ont été définis par la réforme territoriale de 2014 pour obtenir le statut de Métropole. Et même des architectes osent le dire, qui plus est dans un média qui a quelques intérêts dans le béton : « La ville dense est au cœur de la crise sanitaire » (Jacques Ferrier, Le Moniteur, 25 mars 2020).\nLa mobilité permanente et l’accélération sans fin des mouvements, le nomadisme généralisé et le divertissement ininterrompu, la connectivité continue et les consciences prétendument augmentées par les imaginaires de la mondialité… urbaine, bref tout ce à quoi nous sommes enjoint.e.s par et pour les flux, qu’ils soient de personnes, de marchandises ou du divertissement numérique, enchaînent toujours plus nos existences à l’unicité du capital par l’archipel métropolitain mondialisé : flots de touristes et délocalisation industrielle, déplacements professionnels distendus et circuits longs de production et de distribution alimentaires, et, plus visible encore en cette période de confinement, les mouvements affolés de joggers sevrés, la démultiplication des livraisons ubérisées et la surchauffe des sites de téléchargement dit-on sécurisés.\nVoilà le régime passionnel métropolitain, celui du fétiche de la marchandise, de son illimitation, et de sa construction civilisationnelle par l’accélération urbaine à l’échelle planétaire. Ce régime passionnel induit des manières intégrées de (sur)vivre et standardisées d’être gouverné.e.s ; à cet égard, il ne tient que par plusieurs chaînes et servitudes comportementales quasiment présentes en tous points du globe. Parmi ces chaînes, la plus importante est indéniablement de nous être rendu.e.s totalement dépendant.e.s des dispositifs technico-économiques, dont les premiers sont justement ceux de l’industrie urbanistique, pour satisfaire aux fonctions vitales de se nourrir et de se loger, de se déplacer et de se divertir… ou simplement, en ces temps tragiques, de respirer. Une souveraineté alimentaire de chacun.e, regroupé.e.s à plusieurs millions. Des fermes en aquaponie, des toitures végétalisées et des serres en containers ? Restons sérieux. Les travaux sont clairs en la matière : impossible passé 300 personnes, si l’on tient à vraiment respecter les milieux écologiques de vie.\nD’ailleurs, dans la pensée dominante et son temps long de la métropolisation, la mobilité nous a été imposée pour notre émancipation (la productivité), le divertissement pour nos humanités (l’altérité) et la connectivité pour notre propre pouvoir (la citoyenneté). Or, la mobilité incessante promue rend nos mouvements traçables, donc surveillables et orientables, le divertissement permanent nous rend malléables et donc autrement gouvernables, et le numérique embarqué sert d’opérateur premier pour de tels conditionnements, entre fluidité des informations et transparence des existences, entre mise en spectacle des conduites sociales et contrôle biométrique. Ce n’est pas le confinement et plus encore le déconfinement annoncé qui en auront démontré ou vont montrer le contraire.\nEt pourtant, des paroles scientifiques aux convictions politiques, rien ne saurait déroger à la génuflexion face à l’urbs et à la polis, face à l’urbanisation croissante et la métropolisation d’aujourd’hui. Fort peu remarquent même que le monde d’après est déjà largement émergent. A condition, telles les braises, de les aviver un peu (Image 1. Playmobil chute à Notre Dame des Landes).\n2/ Recherche chercheurs sérieux… désespérément\n« Nous ne pouvons accepter parmi nous que ceux qui répugnent également à devenir fameux dans un monde infâme »\nC’est ainsi que, à tout seigneur tout honneur, « On peut se demander si les citadins bénéficient d’une immunité particulière qui serait liée à leur forte exposition permanente à des agents pathogènes multiples. En tout cas, l’habitat dans une zone à forte urbanité (densité + diversité) apparaît plutôt protecteur. » (6). En théorie, cela devait passer. Mais là, cela en devient grossier. Donc, deuxième pilule bleue : après le strict opposé de la réalité, son détournement. The Conversation du 9 avril 2020 explique que ce serait en fait les périphéries urbaines qui accueilleraient les foyers de la pandémie (7). Sans empirie non plus, l’auteur, lui aussi géographe (8), renvoie pour cette assertion à un article de Keil et Ali (York University au Canada) et de Connolly (University of Lincoln en Angleterre) intitulé “Outbreaks like coronavirus start in and spread from the edges of cities” (The Conversation, 17 février). Or, les Edges of cities dont il est question sont en fait des centralités, avec toutes des infrastructures et leurs commodités, mais en lisière des cœurs historiques très souvent dépréciés sur le continent nord-américain. Voilà pour le bonneteau puisque les foyers sont bien en définitive… aussi dans les centralités.\nNe nous arrêtons pas là. The Guardian relayait le 20 avril 2020 une étude montrant que 78% des décès dus au coronavirus dans 66 régions d’Italie, d’Espagne, de France et d’Allemagne sont survenus dans les cinq régions les plus polluées par le dioxyde d’azote, c’est-à-dire accueillant la densité plus importante des trafics automobiles et donc concentrations urbaines (“Air pollution may be ‘key contributor’ to Covid-19 deaths – study”). Plus encore, le New York Times a admis bien volontiers le 8 avril que les zones rurales étaient moins touchées (“Coronavirus Was Slow to Spread to Rural America. Not Anymore”). Comment la pensée twittée a-t-elle réagi ? En relativisant : « Et on constate que le tourisme joue un rôle dans la transmission, notamment dans des stations de sport d’hiver en Idaho. » (9). Mais, là aussi, vue la grosseur du propos, l’auteur concède alors dans un article publié une semaine après de nouveau dans la revue AOC qu’« il paraît plausible que les modalités de l’urbanisation propres à une contrée donnée jouent un rôle » (10), mais pour immédiatement embrayer : « On soulignera cependant que les caractères qui pourraient expliquer cette exposition accrue de la Lombardie [région très urbanisée] et, dans une moindre mesure, de la Vénétie à la pandémie sont également ceux qui leur confèrent en période ordinaire leur urbanité et leur dynamisme. ». Et enfin en appeler à la raison scientifique comme tactique idéologique : « Les craintes du moment ne devraient pas pousser à condamner définitivement des configurations historiques, spatiales et sociales qui ont fondé des cultures citadines spécifiques ».\nVoilà pour les gardiens du temple urbain de l’Ecole Normale Supérieure de Lyon, de Sciences Po Paris et de l’Ecole polytechnique de Lausanne : s’opposer, détourner et enfin, face à l’évidence, minimiser. Chacun et non chacune (car le masculin, blanc, de 50 à 65 ans, y est omniprésent) accélère dans sa propre roue de l’éternelle reproduction par la « recherche », tel le pharmakon de l’anthropocène. Il va sans dire que cette culture de classe se retrouve beaucoup ailleurs, des Ecoles de commerces aux Instituts d’Urbanisme, et surtout ne date pas d’aujourd’hui (11). Voici, pour picorer lors d’un apéro confiné (Encadrés 1. Les bouseux des campagnes et les petites villes du déclin et 2. La grosseur institutionnelle pour la mondialité urbaine).\nLes penseurs du fait urbain nous ont longtemps expliqué que la grande ville était l’ouverture et l’émancipation par l’exposition de soi, et la petite le repli par la protection étriquée des siens. Sans même parler des ruralités et de leurs cultures (anciennement paysannes), dont il est de bon ton de ne plus mentionner l’existence du tout. Il se pourrait bien que, enfin, la prétendue passion pour la grandeur du capital et sa grosseur urbaine se retourne, par le drame pandémique, contre ces prétendus penseurs (Image 2. Prométhée en culotte courte). Mais rassurons-les, bien d’autres sont pris au piège du déterminisme urbain. Voilà ce que nous disent 13 chercheurs du Muséum d’Histoire Naturelle dans Le Monde du 14 avril 2020, sous le titre sans ambiguïté « La biodiversité en ville n’est pas le problème mais une des solutions » : « Amalgamer déforestations tropicales, interactions entre des êtres humains et non humains et développement de nature dans les villes en une fallacieuse cause d’épizooties est un raccourci absurde, voire tendancieux » (19). « Villes vertes » et « Villes forêt », voilà le nouveau mantra.\nPlus étonnement cette fois-ci, cette négation du rôle premier de l’urbanisation généralisée du globe et de sa métropolisation planétaire dans la crise sanitaire n’est pas limitée aux soutiers scientifiques du pouvoir. Dans les milieux militants de la critique sociale et écologique, qui connaissent quant à eux le printemps des tribunes, manifestes, appels et autres billets sur le monde d’après, nous observons non pas des oppositions frontales ou encore des relativisations gênées mais tout simplement des silences et des dénis étonnants, et même assez assourdissants.\n3/ Recherche passionnément militants… clairvoyants\nParmi tant, nous prendrons d’abord exemple sur la tribune publiée dans Le Monde le 19 mars 2020 sous le titre « Après le confinement, il nous faudra entrer en résistance climatique », republiée le 23 mars dans Reporterre sous le titre « Résistance climatique, c’est le moment », et signées par différents courants de la gauche écologiste, des environnementalistes à des collapsologues (20). Il s’agirait selon les signataires d’ouvrir une perspective de justice sociale mondiale en divisant par six l’empreinte carbone moyenne d’un Français. Pour ce faire, il faudrait repenser sa manière de se déplacer et ne plus prendre l’avion, redécouvrir les transports doux et rouler moins de 2.000 km/an en voiture, développer la cuisine végétarienne et se nourrir d’aliments biologiques, locaux et de saison (avec de la viande maximum 2 fois/mois), ou encore réinterroger ses véritables besoins pour limiter les achats neufs au strict minimum. Tout ceci sans de nouveau à aucun moment parler d’urbanisation généralisée et de métropolisation mondialisée de la Terre.\nPourtant, concernant les déplacements en avion, les métropoles sont les hubs aéroportuaires internationaux, que l’on dénomme Airport Cities, et ce notamment pour la touristification de leur desserte. En outre, ce sont également des espaces où les distances domicile-travail et les temps de trajet automobiles sont les plus grands pour les classes populaires et les plus précaires. Groupes sociaux qui sont ainsi lentement mais surement évincés de centres métropolitains en voie rapide de gentrification. Elles constituent les milieux « écologiques » qui offrent le moins d’autonomie et de souveraineté alimentaires (3 jours étant la moyenne pour les 100 plus grandes agglomérations françaises), en raison de l’artificialisation généralisée des sols et de l’industrialisation de terres agricoles de plus en plus étendues. Enfin, que dire de la réduction attendue des achats neufs au profit du réusage lorsque ces villes-métropoles sont le lit du capitalisme des loisirs et de sa machine à désirs, qu’elles imposent au plus grand nombre la jouissance passive et son hubris, interdisant par là même toute (auto)limitation du fait des stimulations consuméristes omniprésentes.\nEt nous pourrions décliner les exemples à l’excès. Pour le dernier texte en date, intitulé « Il est temps de ne pas reprendre » et porté par l’écologie politique, voici ce qui est préconiser pour justement ne pas reprendre : « Dix ans sans voyages à Bali ni croisières de luxe. Dix ans pour apprendre à préférer une tomate du jardin voisin à une entrecôte d’Argentine, une soirée jeu avec des amis à un week-end à New-York, un passage chez le cordonnier du coin à une livraison de baskets neuves par un livreur uberisé d’Amazon, ou les chants des oiseaux à une nuée de drones. ». Comment arriver à Bali ? Par les hubs aéroportuaires des villes-monde et de leurs métropoles. Et où fait-on pousser les tomates du jardin ? Attention, compliqué : dans un jardin. Où sont-ils ? Pas dans les grandes villes… Si vous souhaitez continuer, ne pas hésiter. Mais c’est sans fin.\nEn fait, au titre de différentes filiations et cultures militantes de gauche plus ou moins ouvertement écologistes, nous remarquons là aussi trois grandes attitudes qui, bien que moins intentionnelles, n’en sont pas moins proches, très involontairement, de celles constatées du côté des chercheurs patentés : l’omission, la mésestimation, le corsetage.\nL’omission involontaire est par exemple visible dans un texte publié dans Médiapart le 16 avril et intitulé « Entre les deux il n’y a rien ? Jeter des ponts concrets entre aujourd’hui et demain » (21). Texte plein d’espoirs, livrant un précipité d’idées sur les mouvements déjà engagés ainsi que sur la valence positive de l’entre-deux, entre déni conjuratoire et prophétie d’apocalypse. Il n’en demeure pas moins que l’écologie sociale dont il est question ne parle pas d’écologie, et que les communs défendus ne sont jamais rattachés à nos géographies. Les cultures de la terre pour faire autonomie sont réduites aux circuits courts, et les mouvements Nuit Debout et Gilets Jaunes… sont mis sur un même plan politique, alors même qu’il a été démontré l’influence de situations spatiales et de leurs formes-de-vie sur les revendications et plus encore cultures démocratiques très différentes.\nPlus étonnant encore, la mésestimation. C’est le fait d’une tribune publiée dans Le Monde du 2 avril 2020, intitulée « Le XXIe siècle a commencé en 2020, avec l’entrée en scène du Covid-19 » (22), et complétée depuis lors le 13 avril par une plus longue dans Lundi matin (« Qu’est-ce qu’il nous arrive ? »). L’auteur voit dans la métropolisation la seconde cause de la pandémie, après celle de l’élevage industriel. Mais, dans ce texte qui se veut explicatif de la situation actuelle, il parle ensuite tout du long de capitalisme, qu’il condamne, pour alors faire du Covid-19 le fruit d’un démantèlement d’Etat engagé dans les années 1980, que ce soit des services de soin ou encore des régulations sur les manipulations du vivant. Etonnant car le dispositif spatial planétaire qui démantèle toutes les garanties de (sur)vie est la ville-monde. C’est dans ces modèles d’habiter que toutes les expériences biopolitiques de nos vies policées, celles qui sont désubjectivées pour être mieux resubjectivées dans le sens de la marchandise globalisée, sont réalisées. C’est bien notamment là que les puissances managériales ont trouvé à s’expérimenter.\nEnfin, après les troubles de l’omission et ceux provoqués par la mésestimation, le corsetage. C’est le cas du manifeste de « Propositions pour un retour sur Terre », publié le 16 avril dans GoodPlanet Mag (23). Il indique clairement qu’il faut mettre un terme aux métropoles. Mais comment et pourquoi ? En rapprochant les lieux de résidence des espaces agricoles… pour réduire la dépense énergétique liée aux transports de personnes et de productions (circuits courts). Voilà ce que des écologistes affichés voient dans la métropolisation, en 15ème position des 18 relatives à l’économie : une réduction des dépenses énergétiques. C’est maigre. Et, pour cela, il conviendrait que les politiques de réaménagement du territoire visent des agglomérations de 300 000 habitants en moyenne. Mais d’où vient ce chiffre ? Il ressemble à s’y méprendre à celui du marketing territorial : « Les villes où il fait bon vivre » des marronniers de l’été. Pour sauver le vivant par l’autonomie, les écrits de l’anthropologie et de l’ethnologie s’accordent sur une échelle de 30 à 300 personnes maximum.\nQuel est le point commun entre ces trois textes, d’actualité ? Non pas une méconnaissance des mécanismes en cause mais sans nul doute un aveuglement par quelques héritages de penser sur les moyens de trouver solution. Les termes de « métropole », d’« urbanisation » ou encore de « ville » et d’« aménagement » figurent de 0 à 3 fois dans chacun de ces textes, contre de 14 à 27 pour « capital » et ses déclinaisons (capitaux, capitalisme…), et de 15 à 20 fois pour « Etat ». Nous avons en définitive à faire, par-delà des filiations de pensée militante, à une culture très institutionnaliste de la politique, que ce soit pour réarmer les institutions existantes ou y substituer d’autres, qui seraient garantes de nouveaux biens d’intérêts communs, avec le plus souvent l’Etat de nouveau en figure de proue et des mouvements internationalistes comme nouvel humanisme. Purs produits de la modernité.\nVoici en fait la raison première du non-dit militant sur la responsabilité de la métropolisation dans l’écocide engagé. Selon quelques traditions, très urbaines, de faire communauté et solidarité par la proximité, de faire subjectivité et socialisation par la densité, de faire accueil et hospitalité par la masse et l’anonymat procuré, la lutte contre le capitalisme ne trouverait en fait espoir que dans la grande ville. Selon une dialectique bien huilée (de Simmel à Lefebvre, de Benjamin à Harvey, de Castells à Garnier), forte de la concentration des oppressions productives, elle aussi le lieu de la colère sociale et, par sa propre organisation collective, le siège des formes les plus efficaces de politisation, de l’émancipation de classe à la lutte contre voire la prise des institutions du commandement.\nEt pourtant, si ces cultures omettent que dans la pensée marxiste plus que d’émancipation la visée première est l’effondrement du système capitaliste, elles mettent surtout de côté le fait que les institutions ont, particulièrement à l’ère thermo-industrielle, bâti leur puissance destructrice justement à partir et dans des villes, singulièrement les grandes. Ces institutions sont mêmes ce jour, par la métropolisation, l’opérateur biopolitique premier de toutes les normations et délégations aux dispositifs de notre propre subordination, et ce que ce soit : matériellement par le rendement industriel minimum garanti (production agro-alimentaire, matériaux de construction, services techniques…), ou, plus encore, idéellement par le méta-récit de la croissance éternelle et du progrès infini (innovations scientifiques, création artistique, grands médias régulés, esthétiques de la modernité…). Les métropoles sont la stimulation première (par les marchés représentés) et le levier principal des visées institutionnelles du capital (par leurs pouvoirs dorénavant déterminant). Tokyo a un PIB supérieur à celui du Canada, New-York à celui de l’Espagne, Londres à celui des Pays-Bas, Paris à celui de la Suisse… Les Cité-Etats retrouveraient ainsi leur place dans l’histoire. D’où les réformes territoriales conduites partout dans le monde ces 10 dernières années.\nVoici ce faisant éclairée l’arrière-cour impensable des cultures, urbaines, de la gauche mais aussi des écologistes : la perspective déstituante par l’autonomie radicale et, pour cela, la mise en lumière de la fonction première des espaces, cadres et formes de vie, dans ce dessein d’autonomie. Croit-on sincèrement que tous les subalternes urbains, dont on redécouvre le rôle essentiel en cette période, attendent par exemple des transports en commun gratuits pour se soumettre encore plus rapidement à l’exploitation capitaliste de la méga-machine métropolitaine et de ses bullshit jobs ? D’ailleurs, même par le vécu des classes populaires, fort peu des critiques sociales et écologiques se saisissent de la question de la métropolisation. Or, les grandes économies urbaines musèlent de telles classes par la subordination salariale puis précariale à la marchandise, les biopouvoirs renforcés par les intérêts métropolitains les oppressent par l’extension des dispositifs de contrôle, et l’urbanisme concentrationnaire les asphyxie par interdiction de toute décence du cadre de vie (mais aussi de toute évasion all inclusive comme rustine récréative de l’économie de marché). La dépendance économique ET politique à la métropolisation interdit aux plus pauvres de faire autonomie dans des cadres bétonnés qui ont justement sur le siècle écoulé pris la place des cultures maraîchères et des jardins ouvriers pour subordonner leurs espaces de vie à la reproduction du capital, et coloniser ainsi l’entièreté des sols (24). Et, l’écologie est non moins claire en matière : il faut de 10 à 30 ans pour restaurer le potentiel organique d’un sol qui a été asphalté.\nVoilà en fait le tabou véhiculé par de telles représentations et croyances politiques :\ndénégation de la dépossession politique par la métropolisation, et par toutes les chaînes subjectives qu’elle a créées en chacun.e (par exemple, croire qu’un squat changera la donne de la spéculation immobilière et de l’attractivité élitaire, alors que maintenant il y contribue) ;\ndéni de la responsabilité de chacun.e dans l’expérience de telles réalités spatiales anti-écologiques du capital (par exemple, croire que la planification écologique de nouvelles techniques industrielles de l’urbanisme fera solution à l’extinction du vivant, alors que cette planification ne sera jamais neutre écologiquement).\nC’est au nom de telles croyances iréniques que la tribune du 21 Mars dans Médiapart (25) appelle à une « déferlante de solidarité » en omettant que les grandes villes en voie active de métropolisation sont devenues de simples espaces fonctionnels de la commodité et non ceux du faire communauté (et ne parlons pas des balcons, par pitié). Peut-on encore parler d’accueil et d’hospitalité lorsque l’on voit le sort métropolitain réservé aux migrant.e.s ou encore aux étudiant.e.s les plus précaires ? « On ne combat pas l’aliénation par des moyens aliénés » (Viénet). Et ce mantra se lit également non moins étonnement chez quelques libertaires qui, pour critiquer l’autoritarisme du confinement par exemple, véhiculent ce point de vue : « Le désengagement devient un « acte responsable » et la désaffection humaine est naturalisée. Il s´agit de bien faire comprendre que nous pouvons vivre sans être en contact avec les autres, d´installer ce message dans la civilisation humaine. » (26). Mais qui fait société à 1, 2, 5, 10 ou 20 millions d’habitants entassés ? Chimère (Image 3. “Urban BarCode” à Hong-Kong). Le confinement est juste le corolaire de la densité tant vantée, et de la désolidarisation de longue date engagée dans les espaces surpeuplés (Reporterre, 29 mars 2020).\nTouchant là du doigt les croyances dans les institutions, voici dans le registre plus partidaire du politique d’autres exemples, toute aussi nombreux, pour agrémenter tout bon journal personnel de confinement (Encadrés 3. Les mots creux de l’Hyper et 4. Les pensées limitées de la limite). En fait, il faudrait commencer par critiquer un peu plus vertement les formes-de-vie métropolitaines. Mais, de tout ceci, comme nous l’avons vu, aucunement mention. Et voilà comment on laisse la droite de salon faire demeure de cet argumentaire (29).\n4/ De quelques réalités historiques d’un monde d’ores et déjà discrètement émergent !\nDisons-le tout net, la métropolisation est certes un stade singulier, néolibéral, du capitalisme urbain mondialisé : celui de la repolarisation d’activités économiques dites postindustrielles, de l’intégration globalisée des marchés et des logiques de firme dans les nouvelles politiques urbaines et leurs fameuses gouvernances. Ceci est fort bien renseigné (Munford, Harvey, Davis, Garnier…). Mais plus encore, les villes-monde et leurs 500 épigones sur l’ensemble du globe, sont, ce jour, le siège de formes et de styles de vie au fondement de l’écocide planétaire, particulièrement par la dépossession de toute capacité d’autonomie. Ici se jouent, comme nous l’avons développé, en chacun.e, des chaînes comportementales et un régime passionnel qui interrogent sur nos propres pratiques et nos propres croyances, qui peuplent, comme nous l’avons aussi dit, les savoirs installés, mais plus encore dans les cultures militantes de l’écologie politique, sociale…\nNous avons en fait, pour la grande majorité d’entre nous, et souvent à notre corps défendant, docilement troqué notre puissance d’agir contre les commodités et les marchandises, leurs facilités d’usage et règles d’opulence, leurs imaginaires de la réalisation personnelle par la performance et, croit-on, notre salut éternel. Nul étonnement à être totalement impuissant.e.s lorsqu’il s’agit de retrouver une capacité d’adaptation en cultivant l’autonomie face aux évènements. En fait, sans desserrer les chaînes comportementales qui ont simultanément pour creuset et icône les villes-monde et la métropolisation globale, et plus encore sans desserrer l’étau d’une pensée qui y voit par l’institution la solution alors même qu’elle étend ces chaînes à notre propre puissance d’agir, la frugalité et le ralentissement vantés par des pensées pourtant bien dotées, la sobriété et le ménagement préconisés par certains groupes militants à hauts capitaux sociaux et culturels, ne se réaliseront hélas que de manière très inégalitaire et fort étriquée, donc totalement disproportionnée face aux forces telluriques du capitalisme globalisé. « La dignité consiste à refuser-et-créer : refuser de fabriquer le capitalisme et créer un autre monde » (Holloway, 2016, p. 93).\nEt, cette dépossession ne date pas d’hier. En voici quelques prises.\n1/ Le stade singulier, néolibéral, du capitalisme mondialisé que la métropolisation incarne depuis maintenant une 40aine d’année s’inscrit dans la continuité historique des intérêts économiques et politiques bien sentis, ceux de l’agglomération forcée des populations et de la densification des villes : le rendement par les surpeuplements, le gouvernement par la promiscuité (y compris par quelques atteintes aux libertés face à l’incontrôlabilité des corps, qu’ils soient sociaux… ou simplement aujourd’hui malades). Le stade métropolitain du capitalisme urbain renouvelle donc le genre des Cités-Etats qui, depuis l’aube de la révolution néolithique, assujettissent toutes les ressources par domestication de la nature et sédentarisation des sociétés (Scott, 2019). Ainsi, loin d’être dans l’anthropocène (terme employé par ceux qui feignent de découvrir le monde), nous vivons bien le capitalocène donc son visage métropolitain, et, plus encore, l’œuvre millénaire du mégalocène (terme emprunté à Thierry Sallantin), duquel l’ère thermo-industrielle participe ardemment par ses velléités productivistes et consuméristes.\n2/ Après le temps long des mouvements, le tremblement contemporain. Depuis les exodes ruraux forcés de la fin du XIXème jusqu’aux années 1970, avec la catastrophe anthropologique et écologique du nettoyage bien ordonné par l’Etat capitaliste des cultures paysannes et de leur tradition des biens communaux (Bitoun et Dupont, 2016), toutes les études des 40 dernières années indiquent clairement que les exodes se sont inversés. Ils sont devenus urbains. Par exemple, nous savons depuis 30 ans que 70 % des franciliens veulent quitter l’agglomération parisienne, ou que, toute récente enquête, seuls 14 % des français vivant dans les espaces métropolitains disent vouloir continuer à y vivre dans les 5 prochaines années (Cevipof, juin 2019), ou encore que seuls 28 % des moins de 35 ans ayant au moins le niveau bac +4 voire sortant d’une grande école rêvent d’y habiter. Elles en sont pourtant les cibles premières. Au total, 45 % des personnes interrogées aspirent à la campagne et 41 % à vivre dans une ville de taille moyenne. Le souhait est même devenu réalité pour 600 000 à 800 000 personnes qui ont quitté les espaces denses des métropoles entre 2013 et 2017.\n3/ Cette fois-ci à l’échelle immédiate : une enquête menée en 2015 et 2016 pour le Forum vies mobiles par L’Observatoire Société et Consommation (Obsoco) auprès de 12 000 personnes en France, Espagne, Allemagne, États-Unis, Turquie et Japon sur les Aspirations liées aux modes de vie indique que 74 % estiment que le rythme de vie dans la société actuelle est trop rapide (80 % en France) et 78 % souhaitent personnellement ralentir (82 % en France). Près de la moitié de la population interrogée souhaite même réduire drastiquement ses déplacements par une démobilité. C’est même en France que la décroissance arrive en tête, avec plus de 50 % des réponses. Une autre enquête (2019) du même organisme auprès de 2 000 français de 18 à 70 ans indique que l’utopie « écologique », qui dépeint une organisation de l’économie et de la société tendue vers la sobriété, le « moins mais mieux », est la vision idéale majoritairement partagée, en comparaison de l’utopie « techno-libérale », décrivant une société individualiste organisée pour une croissance forte tirée par la science et la technologie (avec le transhumanisme comme horizon), et de l’utopie « sécuritaire », renvoyant à une société nostalgique d’un passé révolu, attachée à la morale et à la tradition, soucieuse de préserver son indépendance économique et son identité face aux influences étrangères\nN’en jetez plus. Entre savoirs populaires, recherche ancillaire et le militantisme ordinaire, la cause est entendue. Le mouvement a bien commencé si l’on juge le foisonnement croissant des alternatives périphériques aux grands espaces métropolisés : permaculture et potagers communautaires, habitat groupé et autoconstruction, fermes sociales et centrales villageoises, coopératives intégrales et communautés existentielles, éco-hameaux et éco-village, utopies pirates et enclaves décentralisées… Le monde d’après qui fait tant couler d’encre et noircir tant de papier en ces temps de confinement est déjà largement émergent, par nombre d’initiatives de l’alternative radicale qui, au triptyque du déni scientifique (s’opposer, détourner, minimiser) ou à celui de l’aveuglement de la pensée militante (omettre, mésestimer, corseter), répliquent celui de l’agir direct au plus près du vivant : habiter, coopérer, autogérer. Et c’est justement la une critique existentielle de l’artificialisation urbaine et des styles de vie métropolitaine imposés qui est le ressort premier (Image 4. Partir de la métropole).\nLoin des formes soumises de vie dans l’entassement démesuré et son arrachement de nature, et plus encore loin de tout repli survivaliste du mythe identitaire de nature (qui est en fait la simple disqualification dialectique et bourgeoise par la même culture angéliste et convivialiste de l’urbain vertueux), il s’agit tout d’abord, dans ces périphéries, de refaire corps avec le vivant en habitant autrement la terre, avant même la Terre. Pour ce faire, très souvent des pratiques dites écologiques de ménagement du milieu (et non d’a-ménagement) se déploient. Pour cela, il y a logiquement à retisser des liens d’entraide et de solidarité par des coopérations productives. D’autres rapports aux ressources et aux activités s’incarnent très directement, car co-opérer demande d’apprendre des savoirs pratiques et situés, expérientiels et vernaculaires. Enfin, il s’agit de faire véritablement autonomie, non seulement dans le domaine de l’alimentation, du logement, de l’énergie, des déplacements… mais plus encore par des règles individuelles et collectives, y compris en faisant en dehors des institutions.\nLe triptyque habiter/coopérer/autogérer est indéniablement une matrice en construction dans plusieurs espaces périphériques, et ce par l’écologie sociale, relationnelle ou politique. Non d’ailleurs sans lien parfois justement avec la tradition des biens communaux, que ce soit dans les activités agropastorales ou artisanales.\nLa seule possibilité de s’affranchir de cette démesure des praxis embarquées est donc là : nourrir une pensée de la mesure, et ce par le minimalisme et l’auto-limitation, et plus encore par l’autonomie d’action, qui requièrent pour leur propre réalisation de reconsidérer nos propres besoins… de vie et dès lors les liens aux milieux… de vie. Puisqu’il s’agit de tempérer les comportements à des fins de ménagement du vivant, de ralentir pour reprendre le souffle des existences, limiter le suffisant (Gorz, 1994) par des outils conviviaux (Illich, 1973) est le moyen premier de se désaliéner en ne dépendant plus des dispositifs du biopouvoir techno-urbanistique. Là serait la façon de remiser les valeurs métropolitaines qui en sont le creuset, au profit d’une société écologique post-urbaine.\nOr, par la fonction politique de la pensée urbaphilique, nous nous rendons totalement aveugles sur ce que nombre d’alternatives indiquent déjà très clairement, en réaction à cette mutation métropolitaine forcenée des 30 à 40 dernières années. En fait conviendrait-il, comme première solution digne, de commencer par ne plus répondre aux sirènes économiques et politiques de l’entassement dans les métropoles, ainsi que dans leur réplication à toutes les grandes villes et à nombre de villes moyennes. Les espaces plus ouverts, ceux des campagnes, offrent d’autres possibilités, des manières de vivre moins rentables mais autrement plus profitables : pourvoir par soi-même à certains besoins vitaux, dont la citadinité a largement dépossédé et que le jogging, le lèche-vitrine et les terrasses chauffées entre ami.e.s ne permettront bien évidemment jamais de recouvrer. Car c’est aussi du soin, celui du vivant, que de débrancher et de donc de faire dissidence voire sécession de l’urbain métropolisé, avec nous enfin pleinement dedans. Y compris les classes populaires à qui la métropolisation interdit de respirer par les rythmes effrénés et plus encore de faire autonomie dans leurs cadres bétonnés (qui ont justement pris la place des jardins ouvriers et des cultures maraîchères).\nEn fait, cesser d’être les agents involontaires de la méga-machine, les idiots utiles du capitalisme, en retrouvant de la puissance d’agir, celle non plus de faire masse contre mais de faire corps avec le vivant, là où il demeure encore (mais pour combien de temps) : loin des mondes métropolitains (Image 5. Cagacemento). Voilà pourquoi il y a urgence à faire de la démondialisation de la ville et de la désurbanisation de la terre la priorité sociale, politique… écologique première (Faburel, 2018, 2019) (30).\n« L’autonomie – la vraie liberté – est l’autolimitation nécessaire non seulement dans les règles de conduite intrasociale, mais dans les règles que nous adoptons dans notre conduite à l’égard de l’environnement » (Castoriadis, 2011 p. 314).\n(1) A l’exemple du plus retentissant : « Gestes barrières contre le retour à la production d’avant-crise », de Bruno Latour, sur les activités et les comportements dont il conviendrait de nous déprendre (Revue AOC, 29 mars 2020).\n(2) Exemple parmi tant d’autres l’Appel à Projet de la Fondation Maison des sciences de l’homme, en partenariat avec le LabEx Futurs Urbains, et l’Ecole d’Urbanisme de Paris, sur Transition écologique et justice sociale http://www.fmsh.fr/fr/recherche/30865\n(3) Collectif CORTE-Coronavirus, Espaces, Territoires : « S’engager face au Covid. Un devoir pour les Sciences Sociales », Blog Proximité et nouveaux mondes de Médiapart.\n(4) L’appel de 1 000 scientifiques : « Face à la crise écologique, la rébellion est nécessaire », Le Monde du 20 février.\n(5) Jean-Pierre Orfeuil, « Mortalité Covid et densité des territoires Les différences de mortalité en France par département » : https://www.ville-en-mouvement.com/fr/content/mortalite-covid-et-densite-des-territoires-les-differences-de-mortalite-en-france-par\n(6) Jacques Lévy (le spécialiste de l’urbain, pour France Culture en tout cas), « L’humanité habite le Covid-19 », Revue AOC, 26 mars 2020.\n(7) « La métropolisation, coupable idéale de la pandémie ? » The Conversation, 9 avril 2020\n(8) Eric Verdeil\n(9) Michel Lussault\n(10) « Le Monde du virus – une performance géographique », 14 avril\n(11) Pour l’explicitation des liens la modernité urbaine à l’urbanisme par exemple, cf. Mathilde Girault, 2019, Professionnalités de l’urbain et crises écologiques. Politiser l’urbanisme et ses métiers par la reconnaissance de leur constellation mythologique, Thèse de doctorat, Université Lumière Lyon 2.\n(12) Jacques Lévy\n(13) Olivier Lazzarotti\n(14) Olivier Mongin\n(15) Martin Vanier, Hervé le Bras\n(16) Daniel Béhar\n(17) Jean Viard\n(18) Olivier Lazzarotti\n(24) Les surfaces cultivées pour l’agriculture urbaine (jardins partagés, ouvriers, familiaux…) représentent 73 hectares en Ile-de-France, soit l’équivalent des parcs de la Villette et des Buttes‐Chaumont.\n(29) « Les nouvelles configurations urbaines portent en germe des déflagrations écologiques à haut potentiel de viralité » (Tribune du maire de Neuilly-sur-Seine, Le Monde, 8 avril). « L’âge des mégalopoles est-il révolu ? » (Alfred Rabany, Le Figaro, 17 avril 2020)\n(30) L’ensemble de ce propos sur la métropolisation du monde renvoie aux Métropoles barbares. Démondialiser la ville, désurbaniser la terre, 2018, le Passager clandestin, réédité en 2019 (431 p.) : https://lepassagerclandestin.fr/catalogue/poche/les-metropoles-barbares.html\nNous invitons aussi grandement à lire le Conseil Nocturne, 2019, Habiter contre la métropole, Editions divergences, 95 p.\nEncadré 1. Le constat sans appel : les bouseux des campagnes et les petites villes du déclin\nRepartons de l’ineffable. En toute bienveillance des ruralités d’aujourd’hui, et non sans perpétuer quelques partages de notre grande modernité : « On ne peut être progressiste si on ne reconnaît pas le fait urbain et la disparition des sociétés rurales » (Libération, 14 octobre 2018)(12). Puis, toujours par la géographie, sur France culture le 18 septembre 2019 : « Il ne faut pas réduire l’habitant à la figure politique idéale du paysan soldat nationaliste du XIXe siècle. On habite du lieu, au monde. » (13). Enfin, entre la morgue de classe des élites internationales et de leurs premiers de cordées, et celle de 1ère classe d’un enterrement des petites villes car inaptes à toute grandeur, il n’y a qu’un pas, celui, agile, d’un philosophe de l’urbain dans Télérama du 17 décembre 2010 : « A travers la petite ville, les Français demandent la protection. Mais l’urbain, ce n’est pas la protection, c’est l’exposition ! Si l’on ne joue que la protection, on tue l’espace public, et on tue la démocratie. Paradoxalement, c’est dans les grandes métropoles que peuvent se réinventer des modalités de sécurité et de protection. Pour cela, il faut approfondir une citoyenneté politique et une citoyenneté sociale dans des espaces cohérents, qui ont du sens » (14).\nEncadré 2. Des propositions sans débat : la grosseur institutionnelle pour la mondialité urbaine\nEn canon maintenant, démographie et géographie sachantes pour quelques conseils de régime grosseur à un Ministre : « Le ministre Lecornu sait tout cela, et il sait aussi que nous traversons, en France, en Europe et ailleurs, une grande période de populisme, de nostalgie, de démagogie territoriale et de rétraction localiste. Son adresse aux maires, dont on sait le désarroi profond, prend le risque d’alimenter ces registres. Il y a, actuellement un peu partout, un bénéfice électoral à en espérer. Mais rien ne serait pire pour les communes elles-mêmes que de renoncer au virage intercommunal qu’elles négocient depuis quelques décennies et qui leur permet de continuer à s’ajuster au monde qui vient » (La Gazette des communes, 23 octobre 2019) (15). Dès lors, à l’adresse directe des élus, il conviendrait d’engager « une pédagogie de la globalisation par le bas » (Xerfi Canal, Revue audiovisuelle de l’économie, la stratégie et du management, mai 2019) (16), et plus encore selon la sociologie : « […] la lumière s’est déplacée vers la métropole. C’est elle qui est en première place pour la révolution numérique et écologique, et qui offre plus de possibilités, de découvertes, de rencontres, d’aléatoire, où les liens entre le numérique et les rencontres physiques sont quasi immédiats » (La Gazette des communes, 7 mai 2019) (17). On le voit bien pendant le confinement ! Enfin, le véhicule de cette lumière, par un petit retour à la géographie, toujours sur France culture : le tourisme est « une forme pacifique de « faire monde ». Et on a intérêt à partager le monde avec autrui. » (18). Y compris le virus ?\nEncadré 3. Les mots creux de l’Hyper\nTribune du 13 mars 2020 dans Le Monde, au sujet de l’épidémie : « Car il ne s’agit pas de la fin du monde […] mais de la fin d’un monde. Celui de l’hyper-mondialisation, au niveau si élevé d’interdépendance des infrastructures et des systèmes de production que des « perturbations », comme le coronavirus aujourd’hui ou des événements inédits liés au dérèglement climatique, demain, pourraient lui être fatals » (27). Mais où se concentrent les opérateurs et les lieux de commandement de l’hyper-mondialisation ? Où s’organisent l’interdépendance des infrastructures et se rentabilisent les systèmes de production ? Dans les villes-monde et dans leur modèle productiviste et consumériste, croissanciste et expansionniste, avec assujettissement et subordination de l’entièreté du monde.\nEncadré 4. Les pensées limitées de la limite\nPlus aboutie sans doute, la tribune du 16 avril 2020 dans Le Monde, sur le même sujet : « Le passage à une autre société plus tempérante, plus respectueuse des personnes et de l’ensemble du vivant suppose que nous changions aussi notre regard sur le travail ». La tempérance, oui ! « Nous ne fabriquerons pas de société plus coopérative, moins égoïste et moins cupide sans donner davantage d’autonomie et de liberté à chaque citoyen » (28). L’autonomie, oui ! Mais qu’est-ce qui nous déprend de toute autonomie par la démesure consumériste de nos propres vies et la dépossession politique de notre propre puissance d’intervention : les surdensités et l’accélération totale par la métropolisation du monde ! Or, que propose-t-on ? Un revenu universel et inconditionnel. Mais pour faire quoi ?\nQue nous reste-t-il en fait après avoir consenti à ces vies métropolitaines et à leurs croyances de l’illimité par la consommation, à la frénésie du bougisme et au fameux mélange social et culturel de la densité ? A quoi en fait servons-nous concrètement depuis les espaces denses de l’urbanisation planétaire face au trépas écologique de nos sociétés métropolisées ? Surconsommer dans les supermarchés ? Regarder youtube toute la journée ? Faire du sport dans une salle climatisée ? Aller au cinéma pour s’évader ? Twitter pour faire société ?… Certainement pas. Mais, pas plus en étant « coopéracteur » d’une bricothèque de quartier, en cultivant deux pieds de tomate dans un jardin partagé, ou encore en travaillant éthiquement dans un bureau toute la journée ?\nLyon (69), France : Guillaume Faburel, géographe, professeur à l’Université Lyon 2, enseignant à Sciences Po Lyon, chercheur à l’UMR Triangle, et auteur du livre « Les métropoles barbares. Démondialiser la ville, désurbaniser la terre », prix du Livre d’Ecologie Politique 2018, réédité en poche, 2019 (Passager clandestin). Guillaume Faburel consacre une partie de ses recherches aux processus sociaux, écologiques et politiques de métropolisation. ENG : Lyon (69), France: Guillaume Faburel, geographer, professor at the University of Lyon 2, teacher at Sciences Po Lyon, researcher at Triangle Laboratory, and author of the book « Les métropoles barbares. Démondialiser la ville, désurbaniser la terre », prize for the 2018 Political Ecology Book, republished in pocket 2019 (Passager clandestin). Guillaume Faburel devotes part of his research to the social, ecological and political processes of metropolization.


Dimanche des missions : soutenir des gens, pour qu'ils aient assez à manger | Infohub\nDimanche des missions : soutenir des gens, pour qu'ils aient assez à manger\nThema des diesjährigen Missionssonntags ist Ernährung. / Le Dimanche des Missions sera entièrement placé sous le signe de l’alimentation.\n© Heilsarmee Internationale Entwicklung / Armée du Salut - Développement International / Libre de droits\nVous pouvez télécharger les documents pour le Dimanche des Missions !\nLe Dimanche des Missions se rapproche. Merci beaucoup de consacrer le 10 septembre au Service d’état-major « Développement international » de l’Armée du Salut. Nous nous réjouissons de votre précieuse collaboration, de la confiance témoignée et de votre intérêt. Le Dimanche des Missions sera entièrement placé sous le signe de l’alimentation.\nLes documents sur le sujet sont désormais disponibles et peuvent être directement téléchargés (en fin d'article).\nLes documents suivants sont à votre disposition :\nPropositions de versets bibliques sur le thème de l’alimentation – du major Peter Hauri. Ces propositions de textes bibliques doivent servir à aborder un sujet complexe dans un cadre approprié. Lors de cette journée, sentez-vous cependant libres d’utiliser d’autres textes bibliques qui vous sont personnellement plus proches du point de vue de la thématique.\nUne présentation PowerPoint sur le thème de l’alimentation. Nous vous montrons comment l’Armée du Salut procède pour lutter contre la faim dans le monde. Dans les commentaires, vous trouverez de plus amples informations sur chacune des diapositives.\nUne feuille d’information, qui résume brièvement la présentation. Vous pouvez imprimer cette feuille et la remettre aux visiteurs.\nLes sujets de prière du personnel d’outre-mer, également à imprimer et à remettre.\nLa collecte est destinée à nos projets dans le domaine de l’alimentation. Grâce à votre soutien, nous pouvons aider nos semblables dans le monde entier, afin qu’ils aient suffisamment à manger à l’avenir.\nIci, vous pouvez soutenir directement\nArmée du Salut - Développement international\nTélécharger les documents pour le Dimanche des Missions


Comprendre les Recordset ADO.\nV. Les informations de schéma\nV-A. Taille du cache\nV-C. Mécanismes de base\nCréation du jeu d'enregistrements\nAction sur le recordset\nV-D. Modification d'un Recordset client\nAjout (INSERT INTO)\nV-E. FireHose, un curseur particulier\nV-F. Conseils pour choisir son curseur\nV-G. Synchrone Vs Asynchrone\nV-H. Opération globale (par lot)\nV-H-1. Les transactions\nV-H-2. Les procédures stockées\nV-H-3. Gérée par le code\nV-I. Le piège « l'exemple Jet »\nV-J. Recordset Vs SQL\nV-K. Optimisation du code\nV-K-1. L'optimisation dans l'accès aux données\nUtiliser des requêtes compilées\nUtiliser les procédures stockées\nÊtre restrictif dans les enregistrements / champs renvoyés\nV-K-2. Optimisation dans l'utilisation d'ADO\nUtiliser des objets explicites\nFermer les connexions\nUtiliser une ou deux connexions / commandes\nSpécifier la propriété CommandType\nV. Les informations de schéma▲\nElles se trouvent dans la collection Properties de l'objet Field. Elles existent toujours quel que soit le côté du curseur, mais il y en a plus du côté client. Attention, ces informations peuvent être fausses si le moteur de curseur n'en a pas besoin, pour un recordset en lecture seule par exemple.\nV-A. Taille du cache▲\nRégler la taille du cache peut être important pour l'optimisation des curseurs serveurs. En fait, lorsque vous demandez un jeu d'enregistrements au fournisseur de données, celui-ci n'est pas forcément complètement rapatrié dans l'espace client. Vous pouvez définir le nombre d'enregistrements qui seront transmis à chaque fois en réglant la propriété CacheSize de l'objet Recordset. Ce réglage ce fait en donnant le nombre d'enregistrements que le cache peut accepter dans la propriété CacheSize. S'il y a plus d'enregistrements retournés qu'il n'y a de place dans le cache, le fournisseur transmet uniquement la quantité d'enregistrements nécessaire pour remplir le cache. Lors de l'appel d'un enregistrement ne figurant pas dans le cache, il y a transfert d'un nouveau bloc d'enregistrements.\nCe mode de fonctionnement implique toutefois un piège. Lors des rafraîchissements périodiques de votre recordset (dynamique ou KeySet), les enregistrements du cache ne sont pas rafraîchis. Il faut forcer celui-ci en appelant la méthode Resync.\nIl n'y a pas de règles absolues pour dire qu'elle taille de cache il faut utiliser. Je n'ai pour ma part pas trouvé d'autres méthodes que de faire des tests selon les applications.\nLes objets ADO suivent les règles du marshaling COM pour la communication interprocess. Le marshaling (ou re-direction) représente la méthode de communication des objets ou/et des données au-delà des limites d'un thread ou d'un processus. Dans le cas de la communication in-process, ADO utilise la gestion de threads libres (non cloisonnés), il n'y a donc jamais de marshaling in-process avec les recordset ADO. C'est le cas par exemple avec des applications mono poste utilisant des SGBD qui ne sont pas Client / Serveur ou des sources de données particulières.\nDans tous les autres cas, il y a toujours marshaling. Néanmoins, il y a de profondes différences selon la position du curseur. Dans le principe, lorsque vous créez un recordset, celui-ci est construit dans l'espace du serveur. Il est ensuite transmis au process client. Si vous êtes côté serveur, la transmission se fait par référence et vous manipulez un pointeur vers le curseur qui se trouve dans le process du serveur. En ce sens, vous n'avez pas à vous préoccuper de comment les modifications du recordset sont répercutées sur la source de données. Seuls les enregistrements présents dans le cache sont effectivement transmis à l'espace client.\nPar contre, lors de l'utilisation d'un curseur client, le Recordset est transmis par valeur, c'est-à-dire qu'une copie est créée dans l'application cliente (données et métadonnées). Les informations de connexions ne sont pas transmises avec les données puisque vous les avez définies lors de la création de l'objet recordset. De cette observation découlent deux concepts fondamentaux des curseurs clients :\nComme le transfert peut être long, il ne serait pas sans risque de créer un recordset « dynamique » puisque le rafraîchissement périodique pourrait débuter avant la récupération complète du jeu d'enregistrements. Ainsi ADO ne vous fournira que des curseurs statiques côté client, quel que soit le fournisseur. Une fois le rapatriement effectué, le recordset n'est plus connecté, dans le sens où tous les appels ultérieurs à la source de données seront explicites. Une fois le jeu d'enregistrements transmis au processus client, l'accès aux données va être très rapide.\nPour mettre à jour des données vers la source, il va falloir re marshaler le recordset vers le processus du serveur. La communication d'un curseur client avec la source de données est toujours assez lente.\nPour en finir avec le marshaling ADO, sachez que le recordset et sa connexion doivent être dans le même processus.\nV-C. Mécanismes de base▲\nNous avons maintenant le minimum requis pour comprendre ce qui se passe lors de la manipulation d'un objet Recordset. Je rappelle ici ce point fondamental, que nous reverrons en détail dans les rappels ADO, l'utilisation des propriétés dynamiques des objets ADO demande toujours la définition du fournisseur. En clair, la propriété Provider doit être définie pour utiliser les propriétés dynamiques de l'objet Connection, et la propriété ActiveConnection doit être valorisée pour utiliser les collections Properties des objets Command et Recordset.\nNous allons regarder maintenant quelques opérations courantes sur un recordset pour voir ce qui se passe au niveau du moteur de curseur. Ces exemples seront principalement dans le cadre des curseurs clients, puisque le fonctionnement des recordset côté serveur est géré par le fournisseur de données.\nCréation du jeu d'enregistrements▲\nGénéralement, pour ouvrir un Recordset, quelle que soit la méthode utilisée, vous allez consciemment ou non envoyer une requête SQL SELECT au fournisseur de données. Il n'est nullement nécessaire d'avoir la moindre connaissance de la structure de la base, pour peu que celle-ci possède des requêtes stockées (Vues), néanmoins on connaît en général le schéma de la source (au moins superficiellement). Fondamentalement, les différences de fonctionnement commencent lors de l'appel de la méthode open, mais souvent pour des raisons de marshaling, tout se passe dès le paramétrage de l'objet. Examinons le code suivant :\nCnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\_Mes documents\_jmarc\_ADO\_bdd\_biblio.mdb ;User Id=Admin; Password="\nMonRs.CursorLocation = adUseClient\nMonRs.ActiveConnection = Cnn1\nMonRs.Source = "SELECT * FROM Authors"\nMonRs.Open , , adOpenStatic, adLockBatchOptimistic, adCmdText\nSi j'espionne le recordset avant l'appel de la méthode Open, je vois que quelques propriétés dynamiques (informations de schéma) et toutes les propriétés statiques (métadonnées) des objets Field du recordset sont correctement valorisées quelle que soit la position du curseur. La raison est simple, ADO a envoyé une requête de récupération de schéma lors de l'affectation de la propriété source. Si vous avez bien compris ce que nous avons vu précédemment, vous voyez déjà apparaître un des problèmes des curseurs clients. En effet, avec un curseur côté serveur, la requête de schéma valorise les métadonnées de l'objet recordset (serveur) puis un pointeur d'interface est marshalé vers l'application cliente. Dans le cas du curseur client, le moteur de curseur marshale les métadonnées vers l'objet Recordset qui est situé dans l'espace client. Il y a une différence importante de temps de traitement entre les deux, alors que le volume des métadonnées transmis est très faible. Il va y avoir ensuite une différence encore plus importante lors de l'appel de la méthode Open.\nCôté serveur, le fournisseur exécute la requête et transmet les enregistrements nécessaires au remplissage du cache, pas besoin de re transmettre un pointeur puisque celui-ci existe déjà. Ce traitement peut être encore accéléré avec un curseur à jeu de clefs (Key set) puisque celui-ci ne valorise qu'un jeu de clefs.\nLe moteur de curseur côté client va par contre devoir récupérer les valeurs de la source renvoyées par la requête et les marshaler vers le recordset de l'espace client. Ceci étant fait, comme le paramétrage précise que le Recordset doit être modifiable (Updatable), il va renvoyer une requête de schéma, évidemment différente de la première, afin de récupérer les informations nécessaires aux actions éventuelles sur la source de données.\nComme nous le voyons, la construction d'un recordset client est assez lourde, surtout si la requête doit renvoyer des milliers d'enregistrements.\nAction sur le recordset▲\nQue va-t-il se passer lorsqu'on fait une modification sur l'objet recordset ?\nPour bien comprendre l'influence de la position du curseur je vais imaginer une table sans clef, contenant des doublons parfaits (lignes dont toutes les valeurs sont identiques).\nExécutons le code suivant\nDim MaCnn As ADODB.Connection, MonRs As ADODB.Recordset\nSet MaCnn = New ADODB.Connection\nMaCnn.Open "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=D:\_user\_jmarc\_bd6.mdb ;User Id=Admin; Password="\nMonRs.CursorLocation = adUseServer\nMonRs.Open "SELECT * From TabSansCle", MaCnn, adOpenKeyset, adLockOptimistic, adCmdText\nMonRs.Find "nom = 'bb'"\nMonRs!numer = 21\nDans ma table j'ai plusieurs enregistrements dont le nom est « bb », certains d'entre eux étant des doublons parfaits. Si je regarde ma base après exécution, je constate qu'un de mes enregistrements a pris 21 pour valeur « numer ».\nMaintenant j'exécute le même code en positionnant côté client le recordset. À l'appel de la méthode Update, j'obtiens l'erreur « 80004005 : Informations sur la colonne clef insuffisantes ou incorrectes ».\nCe petit exemple permet de démontrer la différence de fonctionnement entre les curseurs clients et serveurs. Dans le cas de l'opération côté serveur, c'est le fournisseur qui gère le curseur. Le fournisseur sait localiser physiquement l'enregistrement en cours du recordset dans la source de données et peut donc procéder à la modification.\nPar contre, lorsqu'on procède du côté client, le moteur de curseur doit écrire une requête action pour le Fournisseur. Dans notre cas, le curseur ne trouve pas dans les métadonnées de clef primaire pour la table (puisque la table n'en contient pas) ni d'index unique. Il se trouve donc dans l'impossibilité d'écrire une requête action pertinente, puisqu'il ne peut pas identifier l'enregistrement en cours, ce qui provoque la génération de l'erreur dont pour une fois le message est tout à fait explicite. Dans ce cas précis, le curseur porte mal son nom puisqu'il existe un enregistrement en cours dans le recordset, mais qu'il ne peut pas être identifié pour agir dessus. Néanmoins j'ai pris là un cas extrême, à la limite d'être absurde.\nDans le cas des recordset côté client, il y a toujours tentative de construction d'une requête action pour traduire les modifications apportées à l'objet Recordset.\nEchec ou réussite▲\nIl est important de comprendre comment le curseur va réagir lors de l'échec ou de la réussite d'une action. Le moteur de curseur (client ou serveur) utilise les métadonnées stockées dans le recordset pour valider une opération sur un recordset. Ce contrôle à lieu en deux temps :\nLors de l'affectation d'une valeur à un champ\nLa valeur saisie doit respecter les propriétés de l'objet Field concerné. Vous aurez toujours un message d'erreur si tel n'est pas le cas, mais vous n'aurez pas le même message selon la position du curseur. Si par exemple vous tentez d'affecter une valeur de type erroné à un champ, vus recevrez un message d'incompatibilité de type pour un curseur Serveur, et une erreur Automation pour un curseur client.\nLors de la demande de mise à jour\nIndépendamment de la position lorsqu'il y a un échec, une erreur standard est levée et il y a ajout d'une erreur à la connexion définie dans la propriété ActiveConnection de l'objet Recordset. La propriété Status de l'enregistrement concerné prendra une valeur censée refléter la cause de l'échec. Là encore, la pertinence de cette valeur va varier selon la position du curseur. Dans une opération côté serveur, si dans un accès avec verrouillage optimiste je cherche à modifier une valeur d'un enregistrement qui vient d'être modifié par un autre utilisateur, j'obtiendrais une erreur « signet invalide » puisque le numéro de version ne sera plus le bon. Dans la même opération côté client, il y aura une erreur « violation de concurrence optimiste ».\nLe pourquoi de ces deux erreurs différentes pour une même cause va nous amener à comprendre comment le moteur de curseur du client construit ses actions.\nEn cas de réussite de la modification, l'opération est marquée comme réussie (dans la propriété Status) et il y a alors synchronisation.\nLa synchronisation est l'opération qui permet de mettre à jour le recordset avec les données de la source de données sous-jacente. La synchronisation est normalement explicite, c'est-à-dire demandée par l'utilisateur à l'aide de la méthode Resync, mais elle suit aussi une opération de modification des données, elle est alors implicite.\nElle peut porter sur tout ou partie d'un recordset ou sur un champ. Il existe deux stratégies différentes selon que l'on désire rafraîchir l'ensemble du recordset ou juste les valeurs sous-jacentes. Dans le premier cas, toutes les modifications en cours sont perdues, dans l'autre on peut anticiper la présence de conflit.\nSynchronisation de modification\nElle porte uniquement sur les enregistrements modifiés dans votre recordset\nLes champs sur lesquels la valeur a été modifiée sont toujours synchronisés\nSur un recordset côté serveur, la synchronisation qui suit une opération sur les données et toujours automatique et non paramétrable. Elle porte sur tous les champs de l'enregistrement modifié.\nPar contre du côté client il est possible de spécifier le mode de synchronisation à l'aide de la propriété dynamique « Update Resync ».\nN'oubliez pas la règle d'or, les champs modifiés d'une opération réussie mettent la nouvelle valeur de la base dans leur propriété OriginalValue.\nV-D. Modification d'un Recordset client▲\nCe que nous allons voir maintenant est propre aux curseurs côté client. Rappelez-vous que la gestion des jeux d'enregistrements côté serveurs est faite par le fournisseur de données et qu'il n'est donc pas la peine de se pencher sur ce fonctionnement en détail.\nLors d'une modification des données de l'objet Recordset, le moteur de curseur va construire une ou plusieurs requêtes action permettant de transmettre les modifications de l'objet Recordset vers la source de données. En SQL, il n'existe que trois types de requêtes action pour manipuler les données, de même, il n'existe que trois méthodes de modification des données d'un recordset. Dans la suite de ce chapitre, nous regarderons l'application de traitement direct, les traitements par lots reposant sur le même principe (en ce qui concerne les requêtes SQL).\nSi vous êtes étanche au SQL, le passage qui suit va vous sembler abscons. Je vous engage alors à commencer par consulter l'excellent cours de SQLPRO.\nMonRs.Open "SELECT * FROM Authors", , adOpenStatic, adLockBatchOptimistic, adCmdText\nMonRs.Find "Author = 'Gane, Chris'", , adSearchForward, 1\nMonRs![year born].Value = "1941"\nLors de l'appel de la méthode Update, le moteur de curseur va construire une requête SQL UPDATE pour appliquer la modification. Par défaut le modèle de la requête est de la forme\nSET Champs modifiés=recodset.fields(Champs modifiés).Value\nWHERE champs clefs= recodset.fields(Champs clefs).OriginalValue\nAND champs modifiés= recodset.fields(Champs modifiés).OriginalValue\nAND éventuelle condition de jointure\nDonc dans l'exemple que j'ai pris, la requête transmise par le moteur de curseur au fournisseur OLE DB sera :\nSET [year born] = 1941\nWHERE  Au_Id = 8139\nAND [year born] = 1938\nComment le moteur de curseur fait-il pour construire cette requête ?\nIl va chercher pour chaque champ modifié la table correspondante, cette information étant toujours disponible dans la collection properties de l'objet Field correspondant, puis il va récupérer dans les métadonnées la clef primaire de la table. Avec ces informations, il va construire sa requête sachant que les valeurs utilisées dans la clause WHERE sont toujours tirées des propriétés OriginalValue des objets Fields de l'enregistrement en cours.\nSi d'aventure vous n'avez pas inclus le(s) champ(s) constituant la clef primaire, il est possible que le moteur ait quand même récupéré cette information. Si tel n'est pas le cas ou si votre table ne possède pas de clef primaire, le moteur lancera une requête d'information pour trouver un éventuel index unique lui permettant d'identifier de manière certaine l'enregistrement courant. Si cela s'avère impossible, vous obtiendrez une erreur comme nous l'avons vu plus haut. Il faut donc toujours veiller lors de l'utilisation d'un curseur client à donner les informations nécessaires au moteur de curseur si on désire effectuer des modifications de données.\nCette requête est ensuite transmise au fournisseur OLE DB. Celui-ci retourne en réponse au moteur de curseur le nombre d'enregistrements affectés. Si celui-ci est égal à zéro, il y a déclenchement d'une erreur, sinon l'opération est marquée comme réussie. Il y a alors synchronisation de l'enregistrement.\nTout a l'air parfait, mais il y a une faute de verrouillage. En effet, s'il y a eu modification ou verrouillage de l'enregistrement par un autre utilisateur, ce n'est pas stricto sensu par le changement de numéro de version du verrouillage optimiste que la requête échoue, mais parce que les valeurs stockées dans les propriétés OriginalValue ne permettent plus d'identifier l'enregistrement en cours. Or cela peut être très différent. Imaginons le scénario suivant, dans le temps entre la création du recordset et l'appel de la méthode Update, un autre utilisateur a changé le nom en « Gane, Peter ». Normalement, du fait du verrouillage, la modification de la date de naissance devrait échouer, pourtant il suffit de lire le code SQL correspondant pour voir qu'elle va réussir, puisque le champ 'Author' n'apparaît pas dans la clause WHERE.\nPour éviter ce problème ou pour contourner d'autres limitations, on peut paramétrer les règles de construction de la requête action du moteur de curseur à l'aide de la propriété dynamique « Update Criteria ».\nIl y a aussi un danger si on fait l'amalgame entre ADO et SQL. Avec une requête SQL de modification, je peux m'affranchir de la valeur originelle du champ. Par exemple la requête SQL suivante est valide :\nSET [year born] = [year born] + 1\nMais du fait de la concurrence optimiste elle ne peut pas être exécutée par le moteur de curseur ADO avec un code comme celui ci-dessous :\nMonRs![year born].Value = MonRs![year born].Value + 1\nCe code ne fonctionnera que si la valeur du champ [year born] dans la base est la même que celle présente\nCe sont ces requêtes qui posent le moins de problèmes avec ADO. Dans ce cas, la requête n'utilisera que le(s) champ(s) composant la clef primaire pour écrire la requête Delete SQL.\nSera transformé par le moteur en :\nDELETE Authors WHERE Au_Id = 8139\nLà pas de problème de critère ou de synchronisation.\nAjout (INSERT INTO)▲\nCes requêtes vont nous permettre de comprendre le principe de la synchronisation. Une remarque s'impose au préalable. Ne tentez pas d'entrer une valeur dans un champ à valeur automatique (NumeroAuto ou TimeStamp), vous obtiendrez alors une erreur systématique. De même, donnez des valeurs à tous les champs ne pouvant être NULL avant d'appeler la méthode Update. Prenons un exemple :\nDim Cnn1 As ADODB.Connection, MonRs As ADODB.Recordset, ValCle As Long\nMonRs.Open "SELECT * FROM Authors", , adOpenStatic, adLockOptimistic, adCmdText\n'MonRs.Properties("Update Resync") = adResyncAutoIncrement\n.Fields("Author") = "RABILLOUD, Jean-Marc"\n.Fields("year born") = 1967\nComme vous le voyez, je n'entre pas de valeur pour le champ « Au_Id » puisqu'il s'agit d'un champ NumeroAuto. La requête action écrite par le moteur de curseur sera :\nINSERT INTO Authors (Author, [year born])\nVALUES ("RABILLOUD , Jean-Marc",1967)\nComme vous le voyez, la requête ne contient pas de valeur pour le champ « Au_Id » celle-ci étant attribuée par le SGBD. Jusque là pas de problème. Mais que va-t-il se passer si j'ai besoin de connaître cette valeur dans la suite de mon code.\nIl me suffit d'écrire :\nValCle = MonRs.Fields("AU_Id").Value\nBien que je n'aie pas spécifié le mode de mise à jour (ligne en commentaire), la valeur par défaut de synchronisation est « adResyncAutoIncrement » et le code fonctionne. Attention, cela ne fonctionnera pas avec une version d'ADO inférieure à 2.1 ni avec un fournisseur tel que JET 3.51.\nCela fonctionne, car le moteur de curseur envoie des requêtes complémentaires afin de mettre à jour le nouvel enregistrement. Cela ne fonctionnera pas avec Jet 3.51, car il ne supporte pas la requête SELECT @@IDENTITY qui permet de connaître le nouveau numéro attribué, et sans celui-ci il n'est pas possible pour le moteur de curseur d'identifier l'enregistrement nouvellement créé.\nPour connaître les possibilités de paramétrage de la mise à jour, allez lire le paragraphe « Update Resync ».\nRequête avec jointure▲\nJusque là, nous avons regardé des cas simples ne portant que sur une seule table, mais dans les autres cas, cela peut être nettement plus compliqué.\nImaginons la requête suivante :\nSELECT * FROM Publishers, Titles WHERE Publishers.PubID = Titles.PubID\nNote SQL : Il est bien évidemment plus logique d'écrire une requête avec INNER JOIN, mais dans ce chapitre je vais faire mes jointures dans la clause WHERE afin de garder une écriture cohérente avec le moteur de curseur.\nDim Cnn1 As ADODB.Connection, MonRs As ADODB.Recordset\n.Open "SELECT * FROM Publishers, Titles WHERE Publishers.PubID = Titles.PubID", , adOpenStatic, adLockOptimistic, adCmdText\n.Find "Title='Evaluating Practice'"\n.Fields("Name") = "ALPHA BOOKS"\n.Fields("Title") = .Fields("Title") & "s"\nPour résumer, je recherche le livre dont le titre est 'Evaluating Practice' je veux changer son éditeur, par un autre éditeur existant dans la base et ajouter un 's' au titre du livre. Bien sûr, vu comme cela, la technique a l'air un peu branlante, mais c'est exactement ce que 95 % des utilisateurs essayent de faire de manière transparente avec un Datagrid par exemple. Que va-t-il se passer si vous exécutez ce code ?\nLe moteur de curseur va écrire autant de Requêtes action que de tables concernées par les modifications dans notre cas :\nSET Name =  'ALPHA BOOKS'\nWHERE  PubId = 129 AND Name = 'ALLYN & BACON'\nSET Title = 'Evaluating Practices'\nWHERE  ISBN = '0-1329231-8-1' AND Title = 'Evaluating Practice'\nComme vous le voyez, ce n'est pas ce que nous voulions obtenir puisque l'éditeur 'ALLYN & BACON' a disparu de la base. La faute est énorme puisqu'il faut modifier la clef étrangère pour obtenir ce que nous voulons, mais nous voyons que le moteur de curseur ne peut pas gérer ce style de programmation.\nDans ce cas pourtant, il existe des propriétés dynamiques qui permettent de contourner le problème. En effet vous pouvez définir à l'aide de la propriété « Unique Table », une table sur laquelle porteront les modifications dans une requête avec jointure, et à l'aide de la propriété « Resync Command » un mode de synchronisation pour ces mêmes requêtes. Pour voir leur utilisation, lisez l'exemple « propriétés dynamiques - Resync Command » du présent cours.\nV-E. FireHose, un curseur particulier▲\nPar défaut, le curseur fourni est un curseur 'FireHose' qui a les caractéristiques suivantes :\nEn avant seulement\nTaille du cache=1\nCe type de curseur est le plus rapide. Il possède une particularité dont il convient de se méfier. La connexion utilisée par un tel curseur est exclusive, ce qui revient à dire que la création d'un autre recordset utilisant la même connexion engendre la création d'une connexion implicite. Encore pire, si vous fermez votre recordset avant d'avoir atteint la position EOF, la connexion sera toujours considérée comme étant utilisée. Il convient donc de faire attention avec ce type de curseur.\nAttention bien que la méthode MoveLast provoque un mouvement vers l'avant, elle déclenche une erreur sur les curseurs « En avant seulement ».\nV-F. Conseils pour choisir son curseur▲\nEn suivant les règles données ci-dessous vous ne devriez pas vous tromper souvent. Néanmoins ces règles ne sont pas intangibles et dans certains cas il vous faudra procéder à votre propre analyse pour déterminer le curseur nécessaire.\nCertaines propriétés/méthodes ne fonctionnent qu'avec un curseur d'un côté spécifique, si vous avez besoin de celles-ci, utilisez le curseur correspondant.\nLes fournisseurs ne donnent pas accès à toutes les combinaisons possibles. Étudiez d'abord les curseurs que le fournisseur peut mettre à disposition\nSur une application où le SGBD est sur la machine du client et qui ne peut avoir qu'un utilisateur simultané, on utilise toujours un curseur côté serveur.\nSi vous devez modifier des données (mise à jour, ajout, suppression) utilisez un curseur côté serveur.\nSi vous devez manipuler un gros jeu d'enregistrements, utilisez un curseur côté client.\nLes curseurs en avant s'ils sont suffisants\nLes curseurs en lecture seule\nPour les applications multiutilisateurs\nVerrouillez en mode pessimiste les curseurs côté serveur\nTravaillez par lot sur les curseurs côté clients\nPréférez toujours l'utilisation du SQL par rapport aux fonctionnalités du recordset.\nV-G. Synchrone Vs Asynchrone▲\nAvec ADO, on peut travailler de manière synchrone ou asynchrone. La programmation asynchrone présente évidemment l'avantage de ne pas bloquer l'application en cas de travaux longs du fournisseur, mais demande de gérer une programmation évènementielle spécifique. En fait, certains événements ADO se produiront quel que soit le mode choisi, d'autres ne seront utilisés qu'en mode asynchrone.\nOn peut travailler avec des connexions asynchrones et/ou des commandes asynchrones. Pour travailler de manière asynchrone, vous devez utiliser un objet Connection (pas de connexion implicite). Le risque avec le travail asynchrone réside dans la possibilité de faire des erreurs sur des actions dites « bloquantes ».\nV-H. Opération globale (par lot)▲\nLes opérations globales sont une suite d'instructions affectant plusieurs enregistrements ou manipulant la structure. Bien que l'on puisse y mettre n'importe qu'elle type d'instructions, on essaye de grouper des opérations connexes dans une opération par lot. Trois types d'opérations globales sont généralement connus.\nV-H-1. Les transactions▲\nLa plupart des SGBDR gèrent le concept de transaction (on peut le vérifier en allant lire la valeur de Connection.Properties(« Transaction DDL »)).\nUne transaction doit toujours respecter les règles suivantes :\nAtomicité : Soit toutes les modifications réussissent, soit toutes échouent\nCohérence : La transaction doit respecter l'ensemble des règles d'intégrité\nIsolation : Deux transactions ne peuvent avoir lieu en même temps sur les mêmes données\nDurabilité : Les effets d'une transaction sont définitifs. Par contre toute transaction interrompue est globalement annulée.\nAvec ADO, les transactions s'utilisent sur l'objet Connection\nV-H-2. Les procédures stockées▲\nProcédure écrite dans le SGBD qui fait l'opération. Elle présente de multiples avantages.\nPas de trafic réseau\nPas de code complexe pour l'utiliser\nPar contre, il faut qu'elle soit prévue dans la base ce qui est loin d'être toujours le cas.\nAvec ADO elle s'utilise avec l'objet Command.\nV-H-3. Gérée par le code▲\nC'est le cas qui nous intéresse ici. Vous devez en principe, dans votre code, suivre les mêmes contraintes que pour une transaction. Pour ne pas rencontrer trop de problèmes, je vous conseille d'écrire des opérations par lot assez petites.\nPour respecter ces règles vous devez vous assurer par le code que :\nLa procédure ne démarre pas si un des enregistrements cible à un verrou\nSi une erreur ne peut pas être résolue pendant le traitement, tout doit être annulé\nSi une erreur provient d'une violation d'intégrité, tout doit être annulé\nEntre le démarrage et la fin de la procédure, les enregistrements concernés doivent être verrouillés.\nCes règles ne sont pas inviolables, l'essentiel est de bien vérifier que les modifications ne laissent pas la base dans un état instable.\nV-I. Le piège « l'exemple Jet »▲\nNous avons vu que lorsque vous paramétrez votre Recordset vous émettez un souhait de curseur. Rien ne vous dit que ce curseur existe ou est géré par le fournisseur, et qui pis est, rien ne vous le dira. En effet, le fournisseur cherche à vous fournir le curseur demandé, s'il ne l'a pas, il vous donnera un curseur s'approchant le plus, mais ne vous enverra jamais de messages d'erreurs. C'est là que le nid à bugs est dissimulé.\nSelon les fournisseurs, la différence entre ce que vous désirez et ce que vous aurez peut être énorme. Cela explique la plupart des anomalies que vous constatez lors de l'exécution de votre code.\nNous allons voir tous les problèmes que cela peut poser en étudiant le cas des bases Access avec Microsoft Jet 4.0.\nIl n'est pas possible d'obtenir un curseur dynamique (2) avec JET.\nLes curseurs côté serveur sont soit :\nEn lecture seule avec tout type de curseur (sauf dynamique évidemment)\nDe type KeySet avec tout type de verrouillage\nLes curseurs côté clients sont :\nToujours statiques et ne peuvent avoir un verrouillage pessimiste\nComme vous le voyez, voilà qui réduit fortement le choix de curseurs disponible. Quelles que soient les options choisies, vous aurez un des curseurs donnés ci-dessus.\nVous aurez par contre toujours un curseur du côté choisi. Évidemment, le problème est équivalent lorsque vous utilisez un contrôle de données.\nCe petit tableau vous donnera le résumé de ce qui est disponible.\nAdOpenForwardOnly AdOpenKeyset adOpenStatic\nAdLockReadOnly AdLockPessimistic AdLockOptimistic AdLockBatchOptimistic\nAdLockReadOnly AdLockOptimistic AdLockBatchOptimistic\nV-J. Recordset Vs SQL▲\nBeaucoup de développeurs expérimentés préfèrent utiliser des requêtes actions et du code SQL dès qu'il s'agit de modifier des données dans la base (j'entends par modifier, l'ajout, la suppression et la mise à jour), plutôt que d'utiliser les méthodes correspondantes de l'objet Recordset.\nNous avons vu pourquoi cette technique est fortement recommandable si vous maîtrisez un tant soit peu le SQL, car elle présente le net avantage de savoir exactement ce qu'on demande au SGBD. Néanmoins si vous ne connaissez pas bien le SQL, cela peut représenter plus d'inconvénients que d'avantages.\nAttention, passer par des requêtes actions n'est pas sans risque s'il y a plusieurs utilisateurs, car on peut obtenir des violations de verrouillage.\nV-K. Optimisation du code▲\nC'est une question qui revient souvent sur les forums. Avant de chercher une quelconque optimisation de votre code ADO, gardez bien à l'esprit que la première chose qui doit être optimisée est votre source de données.\nLes index manquants, les clefs mal construites et surtout une structure anarchique de vos tables engendreront une perte de temps qu'aucune optimisation ne sache compenser. Les axes de l'optimisation sont de deux sortes.\nV-K-1. L'optimisation dans l'accès aux données▲\nCelle-ci est propre à la programmation des bases de données.\nUtiliser des requêtes compilées▲\nSi vous devez exécuter plusieurs fois une requête. Celle-ci est soit une requête stockée dans la base, soit obtenue en utilisant la propriété « Prepared » de l'objet Command\nUtiliser les procédures stockées▲\nSi votre SGBD les supporte, utilisez toujours les procédures stockées plutôt qu'un code ADO équivalent. En effet, les procédures stockées permettent un accès rapide et sécurisé aux données, bien au-delà de ce que pourra faire votre code.\nÊtre restrictif dans les enregistrements / champs renvoyés▲\nEn effet, on a trop souvent tendance pour simplifier l'écriture de la requête à rapatrier tous les enregistrements et toutes les colonnes. La plupart du temps, seuls certains champs sont utilisés, donc méfiez-vous de l'utilisation du caractère « * ». De même, filtrez à l'aide de la clause WHERE quand vous le pouvez.\nV-K-2. Optimisation dans l'utilisation d'ADO▲\nCelle-ci est orientée ADO. Attention toutefois, ces effets peuvent être plus ou moins visibles selon le SGBD attaqué.\nUtiliser des objets explicites▲\nMéfiez-vous des connexions et commandes implicites, car on a facilement tendance à les oublier ce qui utilise des ressources pour rien.\nFermer les connexions▲\nNe laissez pas vos connexions ouvertes quand vous n'en avez pas besoin. Cela occupe inutilement le serveur et certains SGBD fermeront une connexion inutilisée un certain temps sans vous envoyer de message d'erreur.\nUtiliser une ou deux connexions / commandes▲\nPensez à réutiliser vos objets au maximum. En général, un objet connection et un objet Command suffisent.\nPrécisez toujours ce paramètre lorsqu'une requête ne renvoie pas d'enregistrements ou lorsque vous ne souhaitez pas les récupérer.\nSpécifier la propriété CommandType▲\nSi vous ne le précisez pas, ADO devra interpréter CommandText dans un processus assez lourd.\nMicrosoft affirme que la déclaration d'un curseur dynamique (adDynamic) côté serveur renvoie un curseur KeySet qui aurait de meilleures performances sur les gros Recordset qu'un curseur déclaré KeySet. Loin de moi l'idée de mettre en doute une telle affirmation, mais pour ma part je n'ai jamais vu de différence notable.


Les Feux de l'Amour, épisode diffusé le 19 octobre 2018 sur tf1 en France - Soap-Passion.com\nAccueil > Les Feux de l'Amour > L'Histoire > Résumés des épisodes diffusés en France > 19 octobre 2018\nEpisode de "Les Feux de l'Amour" diffusé le 19 octobre 2018 sur Tf1\nLes Feux de l'Amour, épisode N°10817 diffusé le vendredi 19 octobre 2018 sur tf1 en France\nNick (Joshua Morrow) ne se doute pas que c'est son fils qu'il a dans les bras.\n«The Young and The Restless» («Les Feux de l'Amour»), saison 43, épisode N°10817\nÉpisode diffusé le 15 décembre 2015 aux USA sur CBS\nÉpisode de "Les Feux de l'Amour" diffusé le 19 octobre 2018 en France sur TF1\nDans le parc Chancellor, Stitch raconte à Abby que lorsque Ashley et lui étaient bloqués par l'incendie, ils ont "partagé un moment". C'est à dire ? Est-qu'ils ont fait l'amour ? Non, mais il a dit à sa mère qu'il l'aimait.\nÀ l'Athletic Club, Ashley répète à Jack qu'il n'est pas obligé de tenir cette conférence de presse, mais il veut que Victor paie. Au bar, Victor ordonne à Phyllis de stopper Jack. S'il va en prison, il y entraînera Jack avec lui. Phyllis a déjà essayé et lui conseille de quitter la ville. Jack débute la conférence : s'il a convoqué tout le monde, c'est pour leur dire toute la vérité sur le parangon.\nAu cottage, Sharon berce Sullivan et Faith en vient à parler de Christian. Sharon la réconforte comme elle peut. Faith est très heureuse d'avoir Sully, ils ont beaucoup de chance de l'avoir, dit-elle juste au moment où Nick et Dylan entrent.\nChez Victoria, la supplique de Billy est interrompue par quelqu'un qui frappe. Victoria ouvre à Nikki, puis fait comprendre à Billy qu'il est temps qu'il s'en aille. Nikki comprend qu'elle arrive mal. Billy plaide à nouveau pour que Victoria lui laisse une nouvelle chance. Ils se sont même mariés à un noël et Billy croit en leur couple.\nÀ l'Athletic Club, Jack évoque son père, John Abbott, son intégrité et son courage. Au bar, ...\nLire la suite, épisode #10818\nLe 20 octobre 2018 à 05:16\nOh non, Jack n'a rien dit...par amour pr Phyllis...Jabot a versé 500 millions de $ à Newman, ce qui va grandemt les fragiliser...Mickaël, très mécontent, fait signer les papiers à Victor\nEt Jack vire William, bien fait !\nGros malaise de Nikki devant William et Victoria qui se disputent devant elle...ensuite, c'est Victor qui n'a ps pu s'empêcher de lui plonger la tête sous l'eau\nNick prenant Sullivan ds ses bras sans bien sûr savoir que c'est Christian...et aucun ressenti, aucune réaction bizarre, comme avc Sage...ils pensent vmt que "Sullivan" est le fils de Sharon et Dylan\nA qui ressemble Sullivan ?? Ah ah ! lol ! Gde question !!\nJe m'attendais ps à ce que Ben soit aussi franc ms c'est bien qu'il ait dit la vérité à Abby +1 ; Abby, Ashley et lui ont crevé l'abcès et après réflexion, Abby veut tjrs se marier avc Stitch ! +1\nAshley OMG !!!! Que lui arrive-t-il ?? Encore ses pbs à la tête ???\nBon week end à FDA, Gaec, Isabelle, Matt, Slirley + les autres !\nLe 19 octobre 2018 à 17:45\nPour combien de temps, nous aurons l'histoire de Sully avec Sharon et Dylan ? Se n'est pas son fils et Sully/Christian devrait être auprès de ses vrais parents.\nSi Nick savait que son fils était dans ses bras...\nA qui il ressemble ? pas à Sharon, Ni à Dylan. En tout cas il ressemble déjà à Sage.\nWilliam a vraiment dit la vérité à Victoria sur son cher père.\nCe n'est pas un saint M. Moustache et devrait arrêter de le défendre, elle aussi devrait connaître la vérité pour ce qu'il a fait à Jack avec Marco et Phyllis... Elle tomberai de haut.. Mériterait d'aller en prison.. Et peut être elle donnerai une chance à William et être avec ses enfants.\nJack à renoncer à cause de Phyllis et certainement aussi d'Ashley.\nJ'espère que se n'est pas grave pour Ashley.\nJe trouve toujours des excuses, à Victor, dans ce cas! J'aime pas sa façon de jubilé sur la défaite de Jabot! J'espère que les Abbott pourront se relever, de cette perte financière!\nJack a renoncer a dire ce qui s'ait passer! Par amour, pour Phyllis ces 2 là sont fait pour être ensemble?\nQuand à Jack c'est normal, qu'il éjecte pour le moment Billy! Car tout est de sa faute? n'aurait pas du relancer paragon! En espèrent que Billy pourra un jour, se racheter! Ainsi qu'avec Victoria il est sur une mauvaise pente.\nComme c'est triste de voir Nick si mal, alors que ça va être bientôt Noël? Sage a fait son malheurs à Nick!\nMais pourquoi, il sait mis avec elle? c'est incompréhensible...\nHeureuse pour Nick qu'il à Faith qu'il lui arrache des sourires, à son père! Puis voir, le bonheur de Dylan/Sharon avec ce soit disant bébé, qui ne serait pas a d'eux? c'est insupportable...\nAbby et Stitch devraient accorder leur violon! et Ashley rester en dehors de ça, embrouille tous!\nLe 19 octobre 2018 à 11:47\nJe regrette mais je suis en accord avec mon commentaire de 2015. Sharon n’est pas très apte à s’occuper du bébé.\nDe toute façon c’est pas le sien.\nChristian doit revenir à ses vrais parents.\nVictor a eu son transfert! Parfait.\nJack a du renoncer de toute façon il avait pas le choix.\nVictor va faire la fête!\nPourquoi Ashley tombe dans les pommes à la fin? Rien de grave.\nLe 19 octobre 2018 à 11:42\nÇa aurait été trop beau pour que Jack aille au bout de son idée en dévoilant les actes de Victor, il se dégonfle et se ravise par rapport à Phyllis mais laisse Victor gagner la partie et avoir la couverture sur lui. Ce sale type pense être la victime et les Abbott sont les prédateurs c'est plutôt l'inverse, et se pavane comme un coq, vivement qu'il tombe ! Ce que lance William à Victoria n'est que la pure vérité, elle donne des énièmes chances à son père alors qu'il lui fait du mal comme au reste de sa famille depuis des années. Victor m'horripile au plus au point, que cet enfoiré paye pour ses agissements. Stitch se monte honnête avec Abby elle comprend pourquoi il y avait ce malaise permanent entre lui et sa mère, le mariage va-t-il être annulé ? toute cette pression s'abat sur Ashley qui s’effondre, j'espère que ce n'est pas grave. Nick passe un peu de temps avec "Sully" sans savoir qu'il était avec son fils (enfin, pas vraiment si on en croit Victor) Bon weekend à tous !\nLe 19 octobre 2018 à 11:32\nJe savais que Jack allait renoncer ! William a raison finalement : il n'a pas le courage d'affronter Victor. Et comme d'habitude, il en profite pour raconter ses histoires. Jack rampe à ses pieds en donnant les 500 millions de dollars que Victor demande à Jabot.\nTout ce qu'a dit William à propos de Victor est vrai, et princesse Victoria ne veut pas l'entendre. J'ai adoré quand il lui a dit "il y a que ton cher papa qui compte." Par contre, ils auraient pu se disputer un autre moment quand Nikki était là.\nAshley s'effondre au Parc suite à un lourd mal de tête. Sa tumeur au cerveau est revenue ? J'espère que non ! Je croyais qu'elle en était guérie de ça.\nPauvre Faith :( Christian lui manque. Si elle savait qu'il est devant elle. Nick a pris son fils dans ses bras sans le savoir. Pour Faith, ça change rien, Sully est son petit frère et Christian est son petit frère.\nLe 17 décembre 2015 à 21:37\nMarste, d'accord avec vous sur Sharon mais ce n'est pas son fils et même si elle va bien s'en occuper le petit doit retrouver ses vrais parents. Nick si il savait qu' il à son fils dans les bras. Victoria et Billy doivent se réconcilier pour le bien des enfants. Victor est vraiment odieux il ne s'arrange pas en vieillissant.\nLe 17 décembre 2015 à 13:05\nLOL Matt Ambro t'es dur avec Sharon, je pense qu'elle est tout à fait capable de s'occuper de Sully, elle ne lui fera jamais de mal, en plus si elle suit son traitement tout se passe bien ;-)\nL'issue de cette histoire va être très très dur pour elle et je me demande comment elle va réagir !!\nMais j'espère aussi que Sage et Nick retrouve leur petit Christian.\nJe me demande si Stitch est sincère...\nQuant à Billy et Victoria j'adore ce couple mais je ne sais pas si je me ferai au nouvel acteur, hâte de voir tout ça en France.\nEn tout cas Billy est tout de même bien patient avec sa pourrie gâtée de femme !\nVictor est décidément de pire en pire avec les années c'est pas croyable, Jack au contraire se montre plus raisonnable.\nLe 16 décembre 2015 à 22:51\nJ'étais sure que Jack allait renoncer, Victor s'en sort encore une fois !!! Jack a eu tort de virer Billy, on dirait qu'il a oublié ce qu'on ressent quand on perd un enfant, Jack va finir par perdre Billy !!! Billy a raison, Victoria n'arrête pas de chercher des excuses à son père, elle n'a jamais protégé sa famille !!! Billy doit comprendre qu'il perd son temps avec Victoria, elle choisira toujours son père !!! Il faut que Billy se reprenne, ses enfants ont besoin de lui !!!\nPauvre Nick, il ne s'est pas rendu compte que c'était Christian qu'il avait dans ses bras !!! Le Dr Anderson est cruelle, quel que soit son but, c'est ignoble de s'attaquer à un bébé !!! J'espère que Nick et Sage retrouveront Christian et qu'ils resteront ensemble !!!\nLe 16 décembre 2015 à 22:10\nje n'ai jamais dit que Billy avait tué Délia mais que Monsieur osait lyncher et accuser Adam alors que Billy est un alcoolique notoire .\nEt plus on avance dans les episodes France sur TF1 et plus je préfère Adam à Billy. Ce qui se confirmera quand on les verras en VF.\nDe toute façon Victoria suivra toujours son père on n'est d'accord :) Qu'elle quitte Billy!\nNick qui a Christian dans les bras et en le regardant il ne le reconnaît pas et qu'on dise pas :\n-"Nan mais oui mais heu les bébés ils se ressemblent tous " .....\nA un moment donné il va faire le rapprochement et je parle pas de Sage .\nJ'aime pas savoir "Sully" chez Sharon trop instable pour s'occuper d'un bébé .\nMais bon sang qu'on découvre la vérité et la Andeson en cabane!


Chat et transmission de la toxoplasmose, conseils vétérinaires\nOn accuse souvent à tort les chats d’être responsables de la transmission de cette maladie. Il est vrai qu’ils peuvent nous la transmettre, mais la transmission est oro-fécale, c’est-à-dire qu’il faut un contact entre les excréments du chat et notre bouche ; les excréments doivent en outre avoir été émis depuis plus de 48 heures. Voyons donc quelles sont les formes de transmission plus fréquentes .\nLes plus grands responsables de transmission de la toxoplasmose sont les aliments d’origine animale (œuf, lait et viandes, surtout de mouton, bœuf et porc) crus ou insuffisamment cuitset les fruits et légumes crus souillés (qu’il faut donc bien laver avec du bicarbonate de soude). Il est aussi important de porter des gants lorsque vous faites du jardinage ou vous nettoyez la litière. Le toxoplasme se détruit au-dessus de 70°C et au bout de 48 heures en dessous de moins 18°C.\nCe protozoaire peut être dangereux pour les femmes enceintes ayant une sérologie négative avant la grossesse, et pour les enfants. En dehors de ces cas, l’infection est souvent bénigne et inapparente et la guérison est spontanée. Vous n’avez donc pas besoin d’éloigner votre chat, il suffit d’appliquer des simples mesures d’hygiène pour prévenir l’infection.