Problème de RecordSet avec des champs vides [Résolu merci drasche] - VB/VBA/VBS - Programmation
Marsh Posté le 04-11-2003 à 18:22:23
exellent tu fais du ACCESS via ADO sous VB!
comme moi!
par contre je peux pas t'aider.. chez moi quand un champ été vide, ça me faisait planter l'appli..
Marsh Posté le 04-11-2003 à 18:23:56
Mr yvele a écrit : |
Bon ben deja je peux me dire que ça pourrait être pire
Marsh Posté le 04-11-2003 à 18:33:42
montre ta requête, ça m'a l'air bien zarb ton truc.
Marsh Posté le 04-11-2003 à 18:41:21
mon code ressemble à peu près à ça :
Code :
|
Un seul des champs retournés par la requête est vide (vérifié dans la bdd), mais toutes mes textbox sont vides....
Marsh Posté le 04-11-2003 à 18:44:17
1) si tu veux faire un test sur la valeur Null, préfère la fonction IsNull.
2) il se peut qu'une erreur interrompt l'exécution de ce code, t'as essayé l'exécution en pas à pas?
3) je suppose que c'est la requête que tu as essayée directement?
Marsh Posté le 04-11-2003 à 18:47:26
drasche a écrit : 1) si tu veux faire un test sur la valeur Null, préfère la fonction IsNull. |
1) Ok
2) Si je ne teste pas le Null, j'ai une erreur au moment d'affecter la valeur. Comme je n'ai plus l'erreur maintenant, je pensais que ça tournait. Je vais essayer.
3) C'est à dire ?
Marsh Posté le 04-11-2003 à 18:52:31
En fait, le Null ne peut être associé qu'à des variables de type Variant (c'est le cas de la propriété Value mais pas de la propriété Text qui est de type String). Si t'essaies quand même: plantage. On ne fait jamais de comparaison avec Null mais on passe par la fonction IsNull (qui prendra la propriété .Value en paramètre), cfr FAQ.
Pour la requête, ben l'exécuter directement en mode GUI et voir le résultat de manière plus pratique avant de le faire dans le code
Marsh Posté le 04-11-2003 à 18:55:59
drasche a écrit : En fait, le Null ne peut être associé qu'à des variables de type Variant (c'est le cas de la propriété Value mais pas de la propriété Text qui est de type String). Si t'essaies quand même: plantage. On ne fait jamais de comparaison avec Null mais on passe par la fonction IsNull (qui prendra la propriété .Value en paramètre), cfr FAQ. |
D'accord ,je le note.
La requête oui c'est bien celle là que j'ai passé dans Access.
Bon ; prochain épisode demain.
Marsh Posté le 04-11-2003 à 22:19:51
Remplace :
if .Fields(i).Value <> Null Then Text1(i).Text = .Fields(i).Value
Par :
Text1(i).Text = "" & .Fields(i).Value
Et zou
Quand VB fait chier, faut être plus con que lui
Marsh Posté le 04-11-2003 à 22:27:13
MagicBuzz a écrit : |
pas con!!!
MagicBuzz a écrit : |
bien dit
Marsh Posté le 06-11-2003 à 12:53:14
Bon en fait avec IsNull() ça marche.
Marsh Posté le 06-11-2003 à 13:15:12
Marsh Posté le 08-01-2004 à 11:11:21
y'a encore plus simple :
Text1(i).Text = nz( .Fields(i).Value , "" )
nz est une fonction qui teste si la valeur est nulle et dans ce cas remplace la valeur Null par ce qu'on lui passe en paramètre (ici : "" )
nz sert jutement à éviter ce genre de problème.
4get9
Marsh Posté le 08-01-2004 à 11:28:26
4get9 a écrit : y'a encore plus simple : |
Je connaissais pas, tiens...noté!
Marsh Posté le 08-01-2004 à 20:49:59
Citation : nz ==> mot clé introuvable ? |
nz est une instruction de base d'Access !
il se peut qu'elle n'existe pas dans VB
A mon avis Nz etait indispensable à Access, bcp de pb sont résolu avec Nz, avec l'habitude on met partout ! :-D
pour info Nz peux être très utile,
exemple : pour un tri de date si on veux que les champs non renseignés soient en dernier il suffit de faire : nz(Champs_Date,"31/12/2089" ) on est pas obligé de mettre "" comme paramètre.
Marsh Posté le 08-01-2004 à 21:34:56
ah ouais clairement c'est du Access, je connaissais même pas
m'étonne que mon chef n'en ait jamais fait mention vu comment il encensce Access
edit: au fait le bricolage de MagicBuzz j'aime pas trop parce que tout ce qui a trait aux chaînes de caractères bouffent un temps fou en VB (mon chef en a appris quelque chose )
Marsh Posté le 04-11-2003 à 17:57:10
J'ai une appli qui se connecte à une base access via ADO.
je fais une requête sur une table qui me ramène un enregistrement. J'utilise les champs de cet enregistrement pour remplir des textboxs. Le problème est que quand l'un des champs de l'enregistrement dans la base est vide, tous les champs du recordset qui m'est retourné sont vides. Comment faire ?
Message édité par R3g le 06-11-2003 à 12:53:42
---------------
Au royaume des sourds, les borgnes sont sourds.