OVH Cloud OVH Cloud

Erreur 94 lors tentative effacement contenu textBox

16 réponses
Avatar
Guy FALESSE
Bonjour à tous,

J'ai un formulaire qui contient 1 listView,2 txtBox et 1 bouton de commande

le bouton de commande à ce code:

Private Sub Command1_Click()

Me.txtCode = ""

Me.txtEntrerLettres = ""

End Sub



Le textbox txtCode a ce code:

Private Sub TXTCode_Change()

Dim monSQL As String, Critère As String, rst As Recordset, leNbre As Integer

Dim maBD As Database, strConnection As String

Dim ObjListe As ListItem, I As Integer

strConnection = "c:\BaseAccess\CodesPostaux_97.mdb"

Critère = txtCode.Text & "*" 'ne pas oublier de mettre .Text

monSQL = "SELECT tblCodes.Code, tblCodes.Localité FROM tblCodes " _

& "WHERE tblCodes.Code Like '" & Critère & "'" _

& "ORDER BY tblCodes.Code;"

Set maBD = OpenDatabase(strConnection)

Set rst = maBD.OpenRecordset(monSQL)

lstViewCodes.ListItems.Clear

lstViewCodes.ColumnHeaders.Clear

'Ajoute les titres

lstViewCodes.ColumnHeaders.Add , , "Codes", lstViewCodes.Width / 5

lstViewCodes.ColumnHeaders.Add , , "Localité", lstViewCodes.Width / 1.3

Set ObjListe = lstViewCodes.ListItems.Add(, , rst!code) ' 1ere colonne

ObjListe.SubItems(1) = rst!localité ' 2eme colonne

lstViewCodes.View = lvwReport

If rst.RecordCount > 0 Then

rst.MoveFirst

Do While Not rst.EOF

'==============================

Set ObjListe = Nothing

Set ObjListe = lstViewCodes.ListItems.Add(, , rst!code) ' 1ere colonne

ObjListe.SubItems(1) = rst!localité ' 2eme colonne

'==============================

rst.MoveNext

Loop

End If

Set rst = Nothing

Set maBD = Nothing

End Sub

le txtBox txtEntrerLettres a le même code, avec bien sûr quelques
changements

Lorsque je clique sur le bouton qui devrait m'effacer le contenu des txtBox,
j'ai l'erreur 94 qui dit utilisation non autorisée du null.

Les champs Localités et codes sont du type text et le null est permis dans
la table.

Comment pourrais-je effacer ces textBox sans avoir d'erreur.

D'avance merci à ceelles ou ceux qui pourraient m'apporter la solution.

Guy FALESSE

10 réponses

1 2
Avatar
dark poulpo
lu,
à mon avis c normal qu tas une erreur puisque ca declenche aussi l'evenement
change()
du coup txtCode.Text = ""
et tout ce qui suit foire!!!

--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12
Avatar
ng
Salut,

Private Sub Command1_Click()

Me.txtCode = ""

Me.txtEntrerLettres = ""

End Sub



Il est déconseillé d'utiliser les propriétés par défaut, on écrira donc :
Me.txtCode.Text = "" 'le Me n'est pas nécessaire
Me.txtEntrerLettres.Text = "" 'le Me n'est pas nécessaire



Mais le problème n'est pas là.
En effet ces 2 lignes déclenchent les événement changent de tes textboxes,
c'est dans ces événements qu'il faut faire qqch (notamment, par exemple
mettre un if qui permet de ne rien faire si le text est vide).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Avatar
Guy FALESSE
Salut Dark poulpo,
Merci pour ta réponse, je n'aurai qu'une question, comment faites-vous
alors, parce que moi, là, je patauge.
Il faut pourtant bien effacer ce maudit txtBox, sinon, ce n'est pas joli.
J'ai déjà essayé de mettre le txtcode="" avant le code <sur change>du
txtEnterlettres, après ce mêm code, toujours la même erreur.
@+

Guy FALESSE

"dark poulpo" a écrit dans le message de news:
421c3e89$0$25032$
lu,
à mon avis c normal qu tas une erreur puisque ca declenche aussi
l'evenement
change()
du coup txtCode.Text = ""
et tout ce qui suit foire!!!

--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12




Avatar
Guy FALESSE
Salut NG,

Merci pour ta réponse, j'avais mis Me....parce que j'avais vu ça dans un
exemple et puis aussi parce que je viens d'Access ou là, pour faire
référence au formulaire, il le faut. Soit.
Comme je l'écrivais à Dark Pulpo, j'ai déjà essayé de mettre ce code un peu
partout et toujours cette même erreur et c'est pourquoi je les avais mis
dans un bouton de coimmande pour voir, hé bien, c'est tout vu, ça fait
pareil.
Alors, je repose la question, comment faites-vous, je ne suis tout de même
pas le seul au monde à vouloir effacer un textbox.
Je veux dire par là qu'il y a sans doute une autre solution qu'un ListView,
je suis novice dans VB et ce n'est rien de le dire :-)
J'accepte toutes les solutions avec plaisir.
@+

Guy FALESSE


"ng" a écrit dans le message de news:

Salut,

Private Sub Command1_Click()

Me.txtCode = ""

Me.txtEntrerLettres = ""

End Sub



Il est déconseillé d'utiliser les propriétés par défaut, on écrira donc :
Me.txtCode.Text = "" 'le Me n'est pas nécessaire
Me.txtEntrerLettres.Text = "" 'le Me n'est pas nécessaire



Mais le problème n'est pas là.
En effet ces 2 lignes déclenchent les événement changent de tes textboxes,
c'est dans ces événements qu'il faut faire qqch (notamment, par exemple
mettre un if qui permet de ne rien faire si le text est vide).

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


Avatar
dark poulpo
penses tu que de mettre ce code de requete sql dans le change soit vraiment
utile?

peux tu expliquer (parceque jai pas du tout regarder) ce que fait ce code
dans le change() et pourquoi tu la mis la dedans?


--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12
Avatar
Guy FALESSE
Salut dark poulpo,

Merci de chercher :-)

Voilà, le but du jeu est de, dans le txtEntrerLettre par exemple, est de
taper les 1ères lettres d'une commune et d'afficher dan se listView ces
communes et au fur et à mesure qu'on tape les lettres, la sélection
s'affine.
J'ai fait cette application en Access, au départ et tout fonctionne,mais le
code est tout de même différent en Access, on croirait le contraire et
pourtant...
Voilà, j'espère que mes explications ont été assez claires, je ne suis pas
trop doué pour ça non plus.
Maintenant, s'il y a une autre approche pour faire ce que j'aimerais faire,
je suis tout disposé à changer titalement le cous des choses, en sachant
toutefois que je suis novice et que je ne possède pas encore le msdn ce qui
est plutôt handicapant.
Voilà et merci d'avance.

Guy FALESSE



"dark poulpo" a écrit dans le message de news:
421c8df9$0$1252$
penses tu que de mettre ce code de requete sql dans le change soit
vraiment
utile?

peux tu expliquer (parceque jai pas du tout regarder) ce que fait ce code
dans le change() et pourquoi tu la mis la dedans?


--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12




Avatar
Guy FALESSE
Salut dark poulpo,
Merci pour ta réponse.
Pour répondre à :"...lancer une requête..." ça va tr!s vite, tu tapes un nom
comme c, toutes les localités commençant par c sont affichées, ensuite, on
continue ch, toutes les localités commençant par ch sont affichées, ainsi de
suite, il n'y a pas du tout de ralentissement.
Je ne voulais pas te faire l'injure de ne pas avoir compris le but de la
requête, c'état pour montrer que moi, j'avais compris :-)
Je vais essayer cela demain, mais la fonction change, je la mets où, dans un
module bas, je suppose et je l'appelle avec un form
-load ou l'équivalent en VB.
@+

Guy FALESSE


"dark poulpo" a écrit dans le message de news:
421cc08c$0$836$
pour une listview, hum....
oué à part change(), mais deja, je ferais un timer.
je texplique mon idee, ensuite tu jugera si tu veux ou pas.

quand on ecrit, je vois mal lancer une requete à chaque frappe.
par contre tu pourrais faire une recherche au bout de 1sec sans frappe (ou
meme 1,5 sec)

dans le genre


function change()
if trim(txtCode.Text) <> "" then
timer.enable = false;
timer.enable = true;
else
timer.enable = false;
end if
end function


function timer()
le code de recherche avec sql et tout le tralala
end function



avec ca peut etre que tu devrais corriger ton pb et eviter dallourdir les
ressources.












Avatar
dark poulpo
pour une listview, hum....
oué à part change(), mais deja, je ferais un timer.
je texplique mon idee, ensuite tu jugera si tu veux ou pas.

quand on ecrit, je vois mal lancer une requete à chaque frappe.
par contre tu pourrais faire une recherche au bout de 1sec sans frappe (ou
meme 1,5 sec)

dans le genre


function change()
if trim(txtCode.Text) <> "" then
timer.enable = false;
timer.enable = true;
else
timer.enable = false;
end if
end function


function timer()
le code de recherche avec sql et tout le tralala
end function



avec ca peut etre que tu devrais corriger ton pb et eviter dallourdir les
ressources.
Avatar
dark poulpo
non change() et timer() sont des evenements, tu les connais deja, c juste
que j'avais plus le souvenir de ce quil faut mettre en vb .


--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12
Avatar
Guy FALESSE
Salut dark poulpo,

Bon, j'ai essayé, je n'ai rien compris.
Est-ce que par hasard, je ne pourrais pas t'envoyer ce programme avec une
petite table, parce que là, je ne m'en sortirai jamais.
@+

Guy FALESSE

"dark poulpo" a écrit dans le message de news:
421d92a2$0$19342$
non change() et timer() sont des evenements, tu les connais deja, c juste
que j'avais plus le souvenir de ce quil faut mettre en vb .


--
-----
http://dark.freezee.org/
- Dark Update v2.0
- Dark Emule v0.44b r4
- Dark 3D-X 0.7beta
- Dark Shell 1.12




1 2