Rs qui me renvoie vide alors que c'est pas vide

Résolu
cs_cheikhtba Messages postés 26 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 27 février 2007 - 5 févr. 2007 à 13:47
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 5 févr. 2007 à 20:52
Bonjour certains champs de mon rs me renvoie vide alors en realité ces champs ne sont pas vides dans la base si quelqu'un peut maider svp, mon code est:

 Set cnx = New ADODB.Connection
      cnx.Open "dsn=facturefondation"

      Set rs = New ADODB.Recordset

      sql = "Select * From facture where id=" & NumId

      rs.Open sql, cnx
     
      If Not rs.EOF Then
         FModifieFacture.txtNumFacture.Text = rs.Fields("num_fact").Value
         FModifieFacture.txtMontantFacture.Text = rs.Fields("montant_fact").Value
         FModifieFacture.txtDateEtablissement.Text = rs.Fields("date_etablissement").Value
         FModifieFacture.txtDateArrivee.Text = rs.Fields("date_arrivee").Value
         FModifieFacture.txtDateEcheance.Text = rs.Fields("date_echeance").Value
        If (Len(rs.Fields("etape").Value) = 0) Then
          FModifieFacture.cmbEtape.Text = ""
        Else 
         FModifieFacture.cmbEtape.Text = rs.Fields("etape").Value
        End If
        If (Len(rs.Fields("cr_fact").Value) = 0) Then
          FModifieFacture.txtCRCharge.Text = ""
        Else
          FModifieFacture.txtCRCharge.Text = rs.Fields("cr_fact").Value
         End if
      End if

13 réponses

cs_cheikhtba Messages postés 26 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 27 février 2007
5 févr. 2007 à 15:52
Merci a vous tous pour vos reponses j'ai a ajouté a l'execution de  ma requete  select ces deux fonction  adOpenKeyset, adLockReadOnly
ce qui me donne :
  rs.Open sql, cnx, adOpenKeyset, adLockReadOnly
mais j'aimerai savoir l'utilité de ces deux fonctions: adOpenKeyset, adLockReadOnly
 
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 févr. 2007 à 14:00
Suggestion avant d'aller plus loin :
-1) fais un msgbox Numid juste avant la définition de ta Sql
-2) va vois dans ta tablle si ce NumId existe

tu pourrais également faire un msgbox de ta sql, copier cette sql et l'essayer directement depuis ta base.... pour voir...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 févr. 2007 à 14:02
Salut,

Question déjà posés dans le forum, d'ailleurs Darsidious y avait répondu pour une autre personne, en disant de se servir de :

      If Not IsNull(resultatADO!QTStock) Then
      Text1.Text = resultatADO!QTStock
      End If

un exemple, je "pense" que ton problème peut venir de là.

A+
Exploreur 
0
cs_cheikhtba Messages postés 26 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 27 février 2007
5 févr. 2007 à 14:28
[auteurdetail.aspx?ID=615490 jmfmarques] je l'ai fait mais j'ai le meme numid c'est a dire pour un meme enregistrement il y certains champs que je parvienne à afficher et y an a d'autre que je ne parvienne pas et ce sonrt ces champs qui me pose de probleme
0

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

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
5 févr. 2007 à 14:44
essayes de remplir tes textbox sans test (dont d' ailleurs je
n' en vois pas l' interêt)
If (Len(rs.Fields("etape").Value) = 0) Then
          FModifieFacture.cmbEtape.Text = ""
Else 
         FModifieFacture.cmbEtape.Text = rs.Fields("etape").Value
End If
...
équivaut à :
FModifieFacture.cmbEtape.Text = rs.Fields("etape").Value
0
cs_cheikhtba Messages postés 26 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 27 février 2007
5 févr. 2007 à 15:07
c'est a dire il ya des champs null et j'avais une erreur de requete qui me signale il y a des champs null c'est pour celà que j'utilise ce test pour voir si mon champ contien qqc
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 févr. 2007 à 15:38
testes pas la longueur, mais utilises IsNull, comme te le suggère Exploreur

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
5 févr. 2007 à 15:56
en général, pour contourner le problème du null,
un simple On Error Resume Next (tout au début des affectations)
suffira.Mais pour traiter le problème à sa source il faut définir des
valeurs par défaut(non nulles bien sûr) pour les champs qui risquent de poser problème, sinon pour tous
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 févr. 2007 à 16:32
Comme tu dis Chaibat05, un simple On error Resume Next pour contourner le problème, n'est pas forcément la meilleur solution...d'ailleurs un bon développeur ne l'utilisera pas, et préférera bien développé son code et n'utiliser que On Error Goto Erreur, que pour des erreurs qui ne seront pas propre à son développement mais plutôt externe à ça source...C'est mon avis personnel il en va de soit...

A+
Exploreur
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
5 févr. 2007 à 20:04
j' ai dit un simple On Error Resume Next ...
parce qu' il s' agit d' une erreur bénine qui ,traitée ou pas:
1° n' aura aucune incidence sur le déroulement du programme.
2° est inévitable voir imprévisible
Contraitement à On Error Goto...qui , j' en conviens, relève de
la résponsabilité du develloppeur.et concerne les erreurs qui risque de
fausser le traitement.
Si tu veux faire un On Error Goto Erreur... pour cette question de Null
pourquoi alors on n' a pas fait :
If IsNull(Machin) Then
  Goto  Erreur
Else
 ...
End If


?
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 févr. 2007 à 20:29
Salut Chaibat05,

Comme je l'ai dit, ce n'est que mon avis personnel, tu penses bien que je ne m'amuserai pas à faire une critique sur du code, ou même sur une personne, ce n'est pas mon genre de critiquer les autres, je donne juste un avis de comment, moi, je fairai, j'ai donc simplement expliquer un avis..

Pour le code il n'y a pas à ma "connaissance" là besoin de On Error Goto ....
Car c'est une condition, si mon champ de ma table contient quelque chose, je l'attribut à mon TextBox, si mon champ est vide, je ne fais rien.

If Not IsNull(resultatADO!Désignation) Then
   Text1.Text = resultatADO!Désignation
End If

Encore une fois, si tu as mal pris mon post, j'en suis désolé et je te fait mes excuses....

A+
Exploreur
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
5 févr. 2007 à 20:49
mais non Exploreur , au contraire, j' ai très bien pris ton commentaire !
que je trouve d'a illeur légitime vu que le terme "simple" peut préter à
confusion et pourra laisser entendre qu' on peut passer outre une erreur.
Encore une fois, je précise que ce n' est systématique.Spécialement pour
cette erreur du Nullque je connais très bien.
A bien réfléchir de quoi s' agit il ?
Il s' agit en fait d' une erreur suite à TextBox.Text=Null
d' ou l' erreur bien connue:"Affectation non autorisée de null".
Il n' y' aurais donc pas de mal à ignorer cette erreur.
Mais  rassures toi, j' ai bien aimé débattre avec toi
Bonne soirée
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
5 févr. 2007 à 20:52
Bonne soirée à toi aussi et au plaisir de te relires.

A+
Exploreur
0
Rejoignez-nous