Champ Vide à mettre à zéro

Résolu/Fermé
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 10 nov. 2012 à 14:42
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 - 16 nov. 2012 à 11:47
Bonjour à tous,
Il y a bien longtemps que je n'ai pas eu à retravailler en ACCESS et je suis impressionné de la manière dont on peut perdre des notions préalablement évidentes.

Je travaille en requêtes mise à jour directes (non SQL, ni VBA) donc au plus simple et n'arrive pas à tester un champ semble-t-il vide pour le remplacer par 0 dans une colonne (déclarée en numérique) mais j'ai aussi essayé en texte !) depuis que j'ai repris la base.

Je tente de passer à 0 (zéro) un champ vide mais sans succès : en essayant préalablement la sélection avant la mise à jour, j'obtiens une feuille vide face aux 37000 enregistrements présents (tous vides pour cette colonne) car ce n'est qu'un jeu d'essai face à une base de 1 000 000 de lignes

Dans la ligne Critère pour le colonne considérée, je mets simplement EstVide([Tout].[Champ14]) mais tous les autres essais ont également échoué !

Je dois faire une faute évidente, impardonnable... sans pour autant être capable de la voir, ni savoir corriger !
Merci de votre aide et @ bientôt
RJL2b10

8 réponses

castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
10 nov. 2012 à 22:39
Bonjour
En mode creation , dans ta table, dans les propriétes du champ, tu le declare en numerique
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
11 nov. 2012 à 10:04
Bonjour castours et merci de ta réponse,

Oui, bien sûr, je le décris en numérique mais, c'est une table dont j'ai hérité et elle ne l'était pas à l'origine ! Pour autant, j'ai fait des essais avec texte pensant qu'il me serait alors plus facile de corriger, particulièrement pour vide.
De fait, pour moi ce champs est le plus généralement vide car lorsque dans la table je veux filtrer, Vide est proposé et me ramène beaucoup de lignes !
Curieusement, si je fais un tri direct de la table tout se trouve bien classé, y compris les lignes avec champ vide alors que par ma requêe, ils sont ignorés ou plus précisément, les lignes n'apparaissent pas ni à l'écran, ni en comptage !
Merci de tes idées si ça t'inspire
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 11/11/2012 à 11:43
bonjour
Si tu veux recuperer les champs vides, dans un requete conditionWhere utilise Est Null ou N'est pas null. C'est cette synthaxe qu'il faut uitliser.
Tu modifies cette requete en creation de table.
Un fois cela fait, soit tu le transformes en numerique valeur 0 par defaut. ou tu recrées un nouveau directement en numerique.
Actuellement ton champ est texte?
je ne sais pas si access peut traiter un million de lignes?
Quelle version access ?
Si tu veux, peux tu mettre table sur le site avec cjoint.com
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
11 nov. 2012 à 11:50
Pour une meilleure compréhension du problème, je présente les quelques premiers enregistrements de la table (en réalité 119 000 en extrait de la table complète supérieure à 1 000 000 de lignes !).
Alors, bien sûr, je sais ce qui ne va pas... sans savoir le résoudre !
[URL=https://imageshack.com/][IMG]http://img11.imageshack.us/img11/2320/imagtable.jpg[/IMG][/URL]

En fait, les enregistrements sont ignorés dès lors que je teste un champ apparemment vide !
Pour autant, je ne pouvais rester sans solution pour ce test (119 000 lignes) et j'ai dans un premier temps supprimé le test qui me fait plonger en cherchant à remplacer ces champs "vides" par zéro ! Même problème, les sélections pour des codes > 99 ne m'intéressant pas, j'ai pu remplacer ces codes par zéro... mais même problème, les lignes contenant des "vides" étaient abandonnées dès que je testait un champs d'une des 6 colonnes participant à la sélection ! Comme dans cet extrait, le Champ14 ne contient aucune valeur ma sélection était de 0 enregistrements contre 37 000 prévus !
Car la sélection, j'ai pu la faire sur l'échantillon mais, certes, de manière bestiale !
Pour cela, j'ai filtré mon fichier successivement avec chacune des 6 colonnes de sélection en ne récupérant que les champs réputés "vides" ou inférieurs à 100 (cochant chacune des 99 valeurs de chaque champ concerné).
C'est lourd, ça a fonctionné sur cet extrait sans résoudre mon problème de fond !

J'espère que cet éclairage sera constructif.
Bon dimanche et encore merci
@Bientôt RJL2b11
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
11 nov. 2012 à 18:00
Bonjour
Tu as mis une image. Avec cela je ne peux pas voir les propriétées des champs.
Faits une copie de ta base avec seulement quelques enregistrements sur la table en question. Compresse la en zip puis met la sur le site avec cjoint..On comprend mieux ton probleme
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
11 nov. 2012 à 18:27
essaie de voire avec la taille du champ numerique.
Si ton reçoit des nombres elevés et avec des decimales, il se peut que ton ne pas assez grand.
Met le au maximum , , c'est a dire reel doublepour un champ numerique.
Lles valeurs saisies sont elles bien en numerique et nom pas en monétaire ou vice ver çà
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
Modifié par rjl le 11/11/2012 à 16:56
Bonjour,

Les champs qui posent ce problème sont bien en numérique ; j'ai essayé de diverses manières avec EstNull mais les lignes ainsi testées ne sont pas sélectionnées et même comme ignorées ! J'ai alors tenté avec EstVide puisque ça fonctionne en filtre direct (sélection des lignes notées "Vides") mais, à ma grande surprise, ça ne fonctionne pas en requête ! J'ai tenté sans succès (pour les mêmes raisons) de transformer en zéro mes champs vides... mais ils sont tout autant ignorés (Nb d'enregistrements à modifier : 0) !
J'ai 119 000 lignes en jeu d'essai et plus de 1 000 000 en réel.
Un "détail" bloque le fonctionnement normal mais quoi ?
@+ et bien sûr encore merci. RJL2b11
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
11 nov. 2012 à 22:23
Bonsoir,
Grace à tes observations, j'ai pu corriger un problème majeur la sélection se fait en partie :
Ayant été longtemps déphasé d'Access, j'avais oublié des points essentiels pour sélectionner par Expr: les champs avec expression dont
Expr:EstNull([Champ14])
avec Vrai en critère associé à un test de valeur en Ou donc plus classique et simplement installé sur la ligne suivante dans sa propre colonne.
Ce serait parfait... si je n'avais à reproduire cette sélection avec 5 autres champs (par Et) et là ça se gâte !
J'ai tenté avec le traitement normal mais aussi par SQL pour lequel je pensais que l'empilement serait plus facile mais rien n'a fonctionné !
J'ai aussi tenté sans succès de mettre des zéros pour les valeurs qui ne m'intéressaient pas (Null ou > 99) car ça me semblait aussi assez simple d'associer la sélection par Et de 6 tranches... mais je n'avais pas des choix heureux ce jour et là encore... loupé !

Je continue encore à chercher un peu mais referai appel si je n'aboutis vraiment pas !
@ bientôt donc que ce soit pour un appui ou dire comment j'ai résolu ma difficulté.
Encore merci de ton appui RJL2b11
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
Modifié par rjl le 12/11/2012 à 14:55
Bonjour castours,

Je craignais de devoir revenir pour redemander de l'aide !
J'ai cherché à travers les Tutos, les Forums et fait des essais multiples... sans succès !

J'ai 6 champs (toujours les mêmes) ; je souhaite passer à 0 (codif impossible permettant un choix facile par la suite) chaque champ lorsqu'il EstNull.
[URL=https://imageshack.com/][IMG]http://img687.imageshack.us/img687/9944/imagtable2b12.jpg[/IMG][/URL]

Ce n'est qu'un exemple mais une des réponses les plus fréquentes est un nom réputé invalide (j'ai essayé sans le nom de table, ni en ligne 2 (Table), ni en composante du nom ([Tout][....)
Bien entendu, j'ai aussi tenté sans succès de mettre directement le nom de la table en deuxième ligne ou encore de le supprimer du contenu du nom testé : rien n'y fait !
Merci de ton aide si tu vois comment je peux me sortir de ce mauvais pas !
@Bientôt RJL2b12
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
13 nov. 2012 à 11:47
Bonjour
Vue les images cela ne peut pas fonctionner
Il faut faire une requete avec le nom de la table et chaque nom de champ
Met ta base avec cjoint
cela ser plus facile
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
13 nov. 2012 à 11:57
https://www.cjoint.com/?BKnl2UmNBP8
Voici un exemple dans une requete de recherche des null sur le code postal
0
rjl Messages postés 543 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 25 mai 2019 49
16 nov. 2012 à 11:47
Bonjour castours,

Je ne t'avais pas oublié mais coincé entre mes propres problèmes et ceux de mon fils que j'appuie pour ce travail, je prends parfois du temps (plus encore lorsque j'y ajoute la perte de ma réponse préparée à une heure bien tardive et non reprise au moment !).
Un dernier exemple m'a permis de finaliser ce travail (à mon niveau). En pratique, je confondais Est Null avec EstNull() qui m'imposait de mettre le nom d'un champ et alors, plus rien ne collais !
J'ai calqué simplement l'exemple d'où une réponse immédiate répondant exactement à la demande : [URL=https://imageshack.com/][IMG]http://img9.imageshack.us/img9/3261/img2b131a.jpg[/IMG][/URL]
Du coup, j'ai abandonné complètement le Nz qui m'imposait une seconde requête pour la sélection même si celle-ci était rapide, voire, ensuite, un complément pour supprimer les zéros ne simplifiant pas la lecture.

Un grand merci encore et bon week-end RJL2b16
0