Problème de RecordSet avec des champs vides [Résolu merci drasche]

Problème de RecordSet avec des champs vides [Résolu merci drasche] - VB/VBA/VBS - Programmation

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.
Reply

Marsh Posté le 04-11-2003 à 17:57:10   

Reply

Marsh Posté le 04-11-2003 à 18:22:23    

[:dawa]
 
exellent tu fais du ACCESS via ADO sous VB!
comme moi! [:dawa]
 
par contre je peux pas t'aider.. chez moi quand un champ été vide, ça me faisait planter l'appli.. :/


---------------
yvele n'est plus.
Reply

Marsh Posté le 04-11-2003 à 18:23:56    

Mr yvele a écrit :

[:dawa]
 
exellent tu fais du ACCESS via ADO sous VB!
comme moi! [:dawa]
 
par contre je peux pas t'aider.. chez moi quand un champ été vide, ça me faisait planter l'appli.. :/

Bon ben deja je peux me dire que ça pourrait être pire :D


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 04-11-2003 à 18:33:42    

montre ta requête, ça m'a l'air bien zarb ton truc.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 04-11-2003 à 18:41:21    

mon code ressemble à peu près à ça :

Code :
  1. Dim con as ADODB.Connection
  2. Set con = db.cnx
  3. Dim res as ADODB.RecordSet
  4. set res = new ADODB.RecordSet
  5. Dim sql as String
  6. sql = "SELECT * FROM TPROCESS WHERE PROCESSNAME = '" & name & "'"
  7. res.open sql, con
  8. with res
  9.     .MoveFirst
  10.     For i = 0 To 8
  11.         if .Fields(i).Value <> Null Then Text1(i).Text = .Fields(i).Value
  12.     Next
  13.     .Close
  14. End With


Un seul des champs retournés par la requête est vide (vérifié dans la bdd), mais toutes mes textbox sont vides....


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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.
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?

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 ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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 ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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.
 
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 ;)

D'accord ,je le note.
La requête oui c'est bien celle là que j'ai passé dans Access.
Bon ; prochain épisode demain.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

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 :ange:
 
Quand VB fait chier, faut être plus con que lui ;)

Reply

Marsh Posté le 04-11-2003 à 22:19:51   

Reply

Marsh Posté le 04-11-2003 à 22:27:13    

MagicBuzz a écrit :


Text1(i).Text = "" & .Fields(i).Value


 
 
 [:mcwimpy4]  
 
 
[:meganne]
 
 
 
pas con!!! :jap:  
 

MagicBuzz a écrit :


Quand VB fait chier, faut être plus con que lui ;)


 
bien dit [:prosterne]


Message édité par Mr yvele le 04-11-2003 à 22:27:30
Reply

Marsh Posté le 06-11-2003 à 12:53:14    

Bon en fait avec IsNull() ça marche.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 06-11-2003 à 13:15:12    

[:cupra] :jap:


Message édité par drasche le 06-11-2003 à 13:15:22

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

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

Reply

Marsh Posté le 08-01-2004 à 11:28:26    

4get9 a écrit :

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


Je connaissais pas, tiens...noté! :jap:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-01-2004 à 16:53:31    

nz ==> mot clé introuvable ?

Reply

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.

Reply

Marsh Posté le 08-01-2004 à 21:34:56    

ah ouais clairement c'est du Access, je connaissais même pas :D
m'étonne que mon chef n'en ait jamais fait mention vu comment il encensce Access [:meganne]
 
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 [:joce])


Message édité par drasche le 08-01-2004 à 21:36:23

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed