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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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