OVH Cloud OVH Cloud

erreur lors de ma compilation

1 réponse
Avatar
macgiver
Bonjour j'obtiens le message (lors d'un clic sur mon controle calendrier)
"utilisation incorrecte de NULL", sur l'initialisation de ma variable sql
(sql = Me.CtlCalendrier.Value) Voici mon code :

Private Sub CtlCalendrier_Click()
Dim sql As String
Dim rs As Object

Refresh
Me.SF_livraison.Enabled = True
sql = Me.CtlCalendrier.Value ---->c'est ici que ca bug


test = DCount("*", "T_livraison", "date='" & sql & "'")
If test > 1 Then
If MsgBox("Votre date de livraison est déjà présente dans le système.
Vous serez automatiquement redirigé vers cette date, si ce n'est pas la bonne
date de livraison, appuyer sur le bouton 'Nouvelle journée'", _
vbOKOnly + vbDefaultButton2, "Transfert de cassettes") = vbOK Then
Refresh
Set rs = Me.Recordset.Clone
rs.FindFirst "[date] = #" & Format(Me![date], "mm/dd/yyyy") & "#"
If Not rs.EOF Then
' ici une date trouvée
Me.Bookmark = rs.Bookmark
Else
' ici pas de date trouvée.
End If
End If
Refresh
End If
Refresh
End Sub


comment régler mon problème??

merci

1 réponse

Avatar
Argyronet
onjour,

1/ Le contrôle calendrier possède une valeur par défaut...
Normalement, vous devez affecter sa valeur à une variable de type Variant et
non pas String qui n'accepte pas les NULL.
Votre variable sera sans doute NULL mais la procédure ne plantera plus au
même endroit...

On va prendre le problème à l'envers si vous le voulez bien...
Ce que je vous propose, c'est de prendre un nouveau formulaire vierge,
(oubliez temporairement celui qui vous pose problème) et d'y poser un nouveau
contrôle calendrier. Sur l'événement Form_Load() écrivez :
MsgBox CtlActiveX??.Value
où ?? représente le N° attribué au contrôle
Qu'est ce que ça donne ? un message avec la date ?
Si Oui, alors le contrôle calendrier posé dans le formulaire qui vous pose
problème est malade ;o)...
Si non, (MsgBox vide) alors c'est que le contrôle calendrier lui même (en
tant qu'objet OCX) qui possède un dysfonctionnement. Peut-être est-il mal
enregistré dans le Registre de Windows...

2/ Coté noms de variables, même si ça n'a rien à vois avec votre problème,
prenez la sage précaustion d'appeler un chat un chat.
Une variable nommée "sql" n'est pas censée recevoir une date.
Un petit conseil au passage, vous pouvez lire ceci:
http://argyronet.developpez.com/office/vba/convention/

--
Argy { MVP }
http://argyronet.developpez.com/

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient.
Si vous n´obtenez pas la réponse voulue, communiquez différemment



Bonjour j'obtiens le message (lors d'un clic sur mon controle calendrier)
"utilisation incorrecte de NULL", sur l'initialisation de ma variable sql
(sql = Me.CtlCalendrier.Value) Voici mon code :

Private Sub CtlCalendrier_Click()
Dim sql As String
Dim rs As Object

Refresh
Me.SF_livraison.Enabled = True
sql = Me.CtlCalendrier.Value ---->c'est ici que ca bug


test = DCount("*", "T_livraison", "date='" & sql & "'")
If test > 1 Then
If MsgBox("Votre date de livraison est déjà présente dans le système.
Vous serez automatiquement redirigé vers cette date, si ce n'est pas la bonne
date de livraison, appuyer sur le bouton 'Nouvelle journée'", _
vbOKOnly + vbDefaultButton2, "Transfert de cassettes") = vbOK Then
Refresh
Set rs = Me.Recordset.Clone
rs.FindFirst "[date] = #" & Format(Me![date], "mm/dd/yyyy") & "#"
If Not rs.EOF Then
' ici une date trouvée
Me.Bookmark = rs.Bookmark
Else
' ici pas de date trouvée.
End If
End If
Refresh
End If
Refresh
End Sub


comment régler mon problème??

merci