ADO pas d'affichage avec la valeur Null ???

hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006 - 16 mai 2005 à 11:47
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006 - 19 mai 2005 à 16:44
Bonjour, j'ai un petit problème:


J'ai une base acces avec des champs qui ont le droit à la valeur (donc certains enregistrements ont des champs vides)


mais en VB lorsque j'utilise ADO et que je lance l'appli: Erreur : Utilisation non autorisée de Null


Pourquoi ai-je cette erreur?


Merci

17 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 mai 2005 à 14:48
Salut,
Soit tu mets une clause "where not isnull(ton_champ)", soit, si tu veux quand même l'enreg, tu testes isnull(ton_champ) chaque fois que tu veux faire une comparaison, un affichage, une affectation...

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
16 mai 2005 à 15:00
Je comprends mais ce n'est pas pour l'enregsitrement le problème mais pour l'affichage.

Quand l'erreur apparait, le débugage me renvoie à un ligne du type :

TxtNumAff.Text AdoRs.Fields(7) et là comme le champs 7 apparait comme Null et la textbox ""

et ca plante

Merci de me reAider Canis
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 mai 2005 à 15:22
Alors, dans ce cas, je code :

if isnull(AdoRs.Fields(7)) then
TxtNumAff.Text = ""
else
TxtNumAff.Text = AdoRs.Fields(7)
end if

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
16 mai 2005 à 15:40
Merci beaucoup, c'est vrai que j'ai pas été malin sur ce coup. Vu que t'as l'air bien sympa, dernière question:

Quand j'utilise AdoRs.Update

en ayant mis

With AdoRs

.ActiveConnection = Cn

.CursorLocation = adUseClient

.CursorType = adOpenStatic

.LockType = adLockOptimistic

.Open strSQL

End With

ensuite je rempli mes champs et quand j'appuie sur Ok ==>
AdoRs.Update, ça ferme mon forulaire comme prévu mais quand je le
réouvre et ben il a rien enregistré. Qu'ai-je fait comme bétise encore,
svp?
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 mai 2005 à 16:28
1 - As-tu vérifié dans la base si la modif a été faite ?
2 - S'agit-il d'une modif d'enreg ou de l'ajout d'un enreg ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
16 mai 2005 à 16:32
1- dans la base, rien de modifier

2- j'essai d'abord les modif d'enregistrements, plus tard je verrai le nouv enr.

Voilà
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 mai 2005 à 16:56
Je ne sais pas ce que tu appelles tes champs (des textbox, ...). N'empêche que avant le AdoRs.Update, il faut coder :

AdoRs.fields("ton_champ").value = nouvelle_valeur
etc pour tous les champs à modifier.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
16 mai 2005 à 16:59
Sinon, comme je ne connaissais que le DAO avant l'ADO, voici une adresse qui m'a bien aidé pour passer à l'ADO. Tu y trouveras presque toutes les réponses (DAO ou ADO) sur les méthodes d'accès aux bases de données.

http://www.microsoft.com/france/outils/imprime/info.asp?mar=/FRANCE/MSDN/Technologies/technos/dataaccess/info/migration_DAO_ADO.html&css=&#wpmigratingopening

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
17 mai 2005 à 14:37
Merci beaucoup et j'ai une dernière question: quand je me déplace dans
les enregistrements ou ke j'enregistre (en fait à chak deplacement
j'enregistre)

et ben ça plane et ça me sort le problème : "Une opération en plusieurs
étapes a généré des erreurs. Vérifiez chaque valeur d'état." cela
vient-il de ma base

où bien de mon code en VB (les Updates surement)??

Merci
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
18 mai 2005 à 13:14
Svp... g toujours pa trouver d'où ça vient....
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 mai 2005 à 13:50
Désolé, je n'ai pas réussi à reproduire cette erreur. Peux tu faire voir le code qui plante ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
18 mai 2005 à 14:25
par exemple, quand je clic sur le bouton pour allez au dernier
enregistrement (alors que je n'ai rien modifier), il me sort l'erreur

au-dessus. et quand je fais débugage: il me renvoie à la ligne:
AdoRs.Fields(6) = TxtPrixAutre.Text et quand je passe dessus

avec la souris, j'ai :

AdoRs.Fields(6) = Null

et TxtPrixAutre.Text = ""



Si tu veux la fonction en entier:

Private Sub CmdDernier_Click()

AdoRs.Open

AdoRs.Fields(0) = TxtNumAff.Text

AdoRs.Fields(1) = TxtLibelleVoiture.Text

AdoRs.Fields(2) = TxtPrixVoiture.Text

AdoRs.Fields(3) = TxtLibelleHR.Text

AdoRs.Fields(4) = TxtPrixHR.Text

AdoRs.Fields(5) = TxtLibelleAutre.Text

AdoRs.Fields(6) = TxtPrixAutre.Text

AdoRs.Fields(7) = TxtDate.Text

AdoRs.Update

AdoRs.MoveLast

TxtNumAff.Text = AdoRs.Fields(0)

TxtLibelleVoiture.Text = AdoRs.Fields(1)

TxtPrixVoiture.Text = AdoRs.Fields(2)

TxtLibelleHR.Text = AdoRs.Fields(3)

TxtPrixHR.Text = AdoRs.Fields(4)

If IsNull(AdoRs.Fields(5)) Then

TxtLibelleAutre.Text = ""

Else

TxtLibelleAutre.Text = AdoRs.Fields(5)

End If

If IsNull(AdoRs.Fields(6)) Then

TxtPrixAutre.Text = ""

Else

TxtPrixAutre.Text = AdoRs.Fields(6)

End If

TxtDate.Text = AdoRs.Fields(7)

AdoRs.Close

End Sub



Voilà
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
18 mai 2005 à 14:54
Je ne comprend pas ce que tu veux faire dans cette sub. Si j'ai bien compris, tu mets à jour un enregistrement puis tu te déplaces vers le dernier enregistrement que tu affiches ? Enfin, tu dois avoir tes raisons.
Techniquement, j'aurais 2 remarques :
1 - Tes champs acceptent-ils des chaines vides ? sinon met leur propriété "Chaine vide autorisée" = Oui
2 - Met CursorType=adOpenKeyset car

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
18 mai 2005 à 15:52
Le problème c'est gj'ai déjà mis la condition "Chaine vide autorisée" = Oui

Si je fais ça comme c'est que si une personne modifie cet
enregistrement et qu'il veut aller en voir un autre (le dernier dans ce
cas là), et ben ça l'enregistre...

Mais je suis ouvert à toute les suggestions, merci



PS:tu n'a pas fini ton post, c'est quoi la fin?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
19 mai 2005 à 12:57
Snif je suis toujours perdu...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 mai 2005 à 13:35
Salut, excuses, petits problèmes de messagerie.
Donc, pour répondre à ton PS, il manque un bout :

2 - Met CursorType=adOpenKeyset car... adOpenStatic ne permet pas la modif d'enregistrements du recordset.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
hyunkel69 Messages postés 44 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 13 janvier 2006
19 mai 2005 à 16:44
Merci pour mais je suis toujours avec ces saloperies d'erreur qui me blok et me gonflent

mais bon c'est la vie....
0
Rejoignez-nous