Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Réinitialiser un champ date

6 réponses
Avatar
Daniel AUBRY
Bonsoir à tous,
dans une requete destinée à une base Access je souhaite supprimer la date
dans un champ date.
J'ai écrit ceci mais cela ne fonctionne pas :

SQL = "Update Gestion"
SQL = SQL & " set DateDebut = Null,"
SQL = SQL & " DateFin = Null"
SQL = SQL & " where Numero = " & Index

Cmd.CommandText = SQL
Set Rs = Cmd.Execute
Set Rs = Nothing

J'ai essayé vbNull sans plus de succès.

Dans la base, les champs concernés ont la propriété "Null interdit" à Non.

Si quelqu'un a une p'tite idée............

Dany

6 réponses

Avatar
Jean-marc
Daniel AUBRY wrote:
Bonsoir à tous,
dans une requete destinée à une base Access je souhaite supprimer la
date dans un champ date.
J'ai écrit ceci mais cela ne fonctionne pas :

SQL = "Update Gestion"
SQL = SQL & " set DateDebut = Null,"
SQL = SQL & " DateFin = Null"
SQL = SQL & " where Numero = " & Index

Cmd.CommandText = SQL
Set Rs = Cmd.Execute
Set Rs = Nothing

J'ai essayé vbNull sans plus de succès.

Dans la base, les champs concernés ont la propriété "Null interdit" à
Non.
Si quelqu'un a une p'tite idée............



Hello Daniel,

j'ai fait la même manip, en créant une base contenant une
table nommée Gestion2, avec 3 champs:
Numero, de type NumeroAuto et les 2 champs DateDebut et DateFin, tous deux
de type Date/Heure.

J'ai ensuite créé 3 records (1, 2 et 3) en initialisant les champs dates
avec une valeur quelconque.

Puis j'ai fait un programme VB (avec DAO) et exévuté ceci:

Dim db As Database
Dim SQL As String

Set db = OpenDatabase("c:/test2.mdb")

SQL = "Update Gestion"
SQL = SQL & " set DateDebut = Null,"
SQL = SQL & " DateFin = Null"
SQL = SQL & " where Numero = " & 2

db.Execute (SQL)

Debug.Print db.RecordsAffected

db.Close
Set db = Nothing


Et ça fonctionne.

Je ne vois pas trop ce qui peut ne pas marcher chez toi.

Il serait utile que tu ajoutes des renseignements, notamment que tu dises
ce qui ne va pas : message d'erreur ? plantage ? Rien ne se passe ?

Je serais toi j'ajouterais un debug.print SQL juste avant l'exécution, juste
pour bien visualiser la requête et voir si par exemple Index à une valeur
correcte, etc.

En tout cas, ça doit marcher, rien ne l'empêche sur le principe.

A+


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Daniel AUBRY
Bonjour Jean-Marc,

je travaille avec ADO et non DAO : c'est peut être le motif.
Le message d'erreur est que je ne peut affecter une valeur nulle à ce champ.
Sans aller jusqu'à VB, il suffit de faire une requete de type mise à jour
dans Access 2003 et le message d'erreur est le même !!

Dany

"Jean-marc" a écrit dans le message
de news: 476c2d82$0$29247$
Daniel AUBRY wrote:
Bonsoir à tous,
dans une requete destinée à une base Access je souhaite supprimer la
date dans un champ date.
J'ai écrit ceci mais cela ne fonctionne pas :

SQL = "Update Gestion"
SQL = SQL & " set DateDebut = Null,"
SQL = SQL & " DateFin = Null"
SQL = SQL & " where Numero = " & Index

Cmd.CommandText = SQL
Set Rs = Cmd.Execute
Set Rs = Nothing

J'ai essayé vbNull sans plus de succès.

Dans la base, les champs concernés ont la propriété "Null interdit" à
Non.
Si quelqu'un a une p'tite idée............



Hello Daniel,

j'ai fait la même manip, en créant une base contenant une
table nommée Gestion2, avec 3 champs:
Numero, de type NumeroAuto et les 2 champs DateDebut et DateFin, tous deux
de type Date/Heure.

J'ai ensuite créé 3 records (1, 2 et 3) en initialisant les champs dates
avec une valeur quelconque.

Puis j'ai fait un programme VB (avec DAO) et exévuté ceci:

Dim db As Database
Dim SQL As String

Set db = OpenDatabase("c:/test2.mdb")

SQL = "Update Gestion"
SQL = SQL & " set DateDebut = Null,"
SQL = SQL & " DateFin = Null"
SQL = SQL & " where Numero = " & 2

db.Execute (SQL)

Debug.Print db.RecordsAffected

db.Close
Set db = Nothing


Et ça fonctionne.

Je ne vois pas trop ce qui peut ne pas marcher chez toi.

Il serait utile que tu ajoutes des renseignements, notamment que tu dises
ce qui ne va pas : message d'erreur ? plantage ? Rien ne se passe ?

Je serais toi j'ajouterais un debug.print SQL juste avant l'exécution,
juste
pour bien visualiser la requête et voir si par exemple Index à une valeur
correcte, etc.

En tout cas, ça doit marcher, rien ne l'empêche sur le principe.

A+


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
Daniel AUBRY wrote:
Bonjour Jean-Marc,



Hello,

je travaille avec ADO et non DAO : c'est peut être le motif.



Non.

Le message d'erreur est que je ne peut affecter une valeur nulle à ce
champ. Sans aller jusqu'à VB, il suffit de faire une requete de type
mise à jour dans Access 2003 et le message d'erreur est le même !!



Alors le problème est ailleurs:
1) on peut mettre un champ à NUL, qq soit son type
2) Les raisons pour l'erreur peuvent être:
- une violation de contrainte (genre null interdit, mais pas seulement)
- une erreur autre dans la requête, qui provoque un message d'erreur
bizarre ou erroné.

Pour débugger:
- créer une nouvelle base
- créer une table
- mettre 2 champs (numero et date, de type auto et Date/Heure)
- créer 2 ou 3 records
- faire un SET pour mettre un ou plusieurs champs date à NULL

Si ça marche (et ça va marcher!) il ne reste plus qu'à comparer
avec ton autre base pour trouver la/les différence(s).

Bon débuggage :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Daniel AUBRY
Bonjour Jean-Marc,

effectivement, j'ai suivi ton conseil (avisé) et ça marche.
Les champs date concernés ont été créés après la table avec ADOX :
(évolution d'une base à distance)

Dim Cat As ADOX.Catalog
Dim Col As ADOX.Column

Set Cat = New ADOX.Catalog
Cat.ActiveConnection = ChaineConnect

Set Col = New ADOX.Column
Col.Name = "DateDebutSki"
Col.Type = adDate
Cat.Tables("Gestion").Columns.Append Col
Set Col = Nothing

Vois-tu une anomalie, dans mon code, qui expliquerait le bug de mise
à null du champ date ?

Merci beaucoup pour ton aide toujours si précieuse.

Dany

"Jean-marc" a écrit dans le message
de news: 476d25ee$0$29255$
Daniel AUBRY wrote:
Bonjour Jean-Marc,



Hello,

je travaille avec ADO et non DAO : c'est peut être le motif.



Non.

Le message d'erreur est que je ne peut affecter une valeur nulle à ce
champ. Sans aller jusqu'à VB, il suffit de faire une requete de type
mise à jour dans Access 2003 et le message d'erreur est le même !!



Alors le problème est ailleurs:
1) on peut mettre un champ à NUL, qq soit son type
2) Les raisons pour l'erreur peuvent être:
- une violation de contrainte (genre null interdit, mais pas seulement)
- une erreur autre dans la requête, qui provoque un message d'erreur
bizarre ou erroné.

Pour débugger:
- créer une nouvelle base
- créer une table
- mettre 2 champs (numero et date, de type auto et Date/Heure)
- créer 2 ou 3 records
- faire un SET pour mettre un ou plusieurs champs date à NULL

Si ça marche (et ça va marcher!) il ne reste plus qu'à comparer
avec ton autre base pour trouver la/les différence(s).

Bon débuggage :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
Daniel AUBRY wrote:
Bonjour Jean-Marc,

effectivement, j'ai suivi ton conseil (avisé) et ça marche.
Les champs date concernés ont été créés après la table avec ADOX :
(évolution d'une base à distance)

Dim Cat As ADOX.Catalog
Dim Col As ADOX.Column

Set Cat = New ADOX.Catalog
Cat.ActiveConnection = ChaineConnect

Set Col = New ADOX.Column
Col.Name = "DateDebutSki"
Col.Type = adDate
Cat.Tables("Gestion").Columns.Append Col
Set Col = Nothing

Vois-tu une anomalie, dans mon code, qui expliquerait le bug de mise
à null du champ date ?

Merci beaucoup pour ton aide toujours si précieuse.



Je ne vais hélas pas pouvoir être d'une grande aide supplémentaire,
n'étant pas un super-expert d'ADO.

Il faudrait fouiller un peu la doc, je suis sur qu'on y trouverait des
choses.

A mon humble avis, il faut surement ajouter des attributs à Col avant de
faire
l'ajout (du genre null autorisé). Il faut voir comment on fait ça avec ADO,
perso
j'utilise à 99% DAO quand j'ai ce genre de choses à faire.

Bonne suite!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jean-marc
Jean-marc wrote:
Daniel AUBRY wrote:



Vois-tu une anomalie, dans mon code, qui expliquerait le bug de mise
à null du champ date ?





Complément: quand le programme produit une erreur, je suppose qu'il
affiche un message d'erreur, et probablement un numéro.

Si tu pouvais donner ici le message tel quel, en entier, ça pourrait
(peut etre) aider aussi :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;