2009-10-14 8 views
2

J'ai un formulaire où les utilisateurs saisissent des informations pour un test exécuté à une date particulière. Cela crée une table que je lie ensuite avec une autre table basée sur la date et un ID. Dans cet autre tableau (rempli par un formulaire créé par quelqu'un d'autre) tous les temps sont 07h00. Celui qui a créé le formulaire pour cette table a fait ce que je demande maintenant; Puisque les dates doivent correspondre EXACTEMENT pour que les tables soient jointes, je dois le faire aussi. La façon dont je veux faire ceci est d'avoir deux champs dans mon formulaire. Un pour la date (mm/jj/aaaa) et un pour l'heure (##: ##: ## xM) et je veux que le champ de temps soit non modifiable par l'utilisateur. De cette façon, l'utilisateur sait qu'il ne peut pas modifier l'heure. Jusqu'à présent, je sais comment faire tout cela avec des masques de saisie et autres. Cependant, je ne sais pas comment ajouter ces deux champs ensemble, puis stocker cela dans la table. Aidez-moi?ms date et heure d'accès. L'heure doit être 07h00 et l'utilisateur ne doit pas modifier l'heure

+0

Si vous voulez que tous les champs de date aient la même heure, vous n'avez pas besoin de stocker la partie heure. Il suffit de stocker la partie Date() (c'est-à-dire la valeur entière). Si vous remplissez les champs avec Now(), remplacez-les par Date(). Le fait est que si tous les champs ont le même temps, vous n'avez pas besoin de le stocker du tout. –

+0

... mais ne formatez pas pour ajouter une règle de validation ou une contrainte CHECK pour appliquer la règle afin de vous assurer que le problème ne se reproduira pas. – onedaywhen

+0

j'avais besoin de le stocker. Il y a une autre table que je suis en train de joindre à cette table à la date.Dans l'autre tableau, les dates ont déjà été stockées avec la date et l'heure et toutes les heures sont 7 heures. C'est idiot, je sais, mais je n'ai pas écrit l'ancien code de table et je ne peux pas le changer. Je dois juste vivre avec. – Matt

Répondre

0

Il semble que vous ayez un seul champ Date/Heure dans la source d'enregistrement de votre formulaire et que vous souhaitiez afficher la partie date dans un contrôle de formulaire et la partie heure dans un autre contrôle. Et la partie temps devrait toujours être 7:00 AM.

Ajoutez deux contrôles de zone de texte (txtDate et txtTime) à votre formulaire qui utilisent tous deux le même champ date/heure comme source de contrôle. Définissez la propriété Format de txtDate à Date abrégée. Définissez la propriété Format de txtTime sur Moyenne durée. En outre, dans l'onglet Données pour txtTime, définissez Activé sur Non et Verrouillé sur Oui.

Puis, dans la Après mise à jour événement de txtDate, vous pouvez utiliser:

Private Sub txtDate_AfterUpdate() 
    Me.txtDate.Value = DateValue(Me.txtDate.Value) + #7 AM# 
End Sub 

Si vous devez masser les valeurs existantes dans votre table, vous pouvez utiliser une requête UPDATE:

UPDATE YourTable SET YourDateField = DateValue(YourDateField) + #07:00# 
WHERE YourDateField IS NOT NULL; 
+0

parfait! Je vous remercie. – Matt

+0

+1. Bonne réponse. –

1

Je voudrais écrire une mise à jour pour définir toutes les heures existantes à minuit (c'est-à-dire 00:00:00), puis modifier le formulaire afin qu'il tronque également les dates à minuit. Ajoutez une règle de validation ou une contrainte CHECK pour vous assurer que les valeurs ne peuvent pas être autres que minuit. Ensuite, si vous utilisez la sécurité au niveau de l'utilisateur, vérifiez les privilèges de la table pour vous assurer que les utilisateurs ne peuvent pas supprimer la règle de validation ou la contrainte CHECK.

1

Utilisateur un contrôle de sélecteur de date-heure - laissez l'utilisateur juste choisir la partie de date. La portion de temps se trouve dans un autre contrôle - une étiquette ou une zone de texte verrouillée.

Lorsque vous écrivez votre SQL pour mettre à jour/insérer dans votre table, vous pouvez simplement ajouter ces deux valeurs de contrôle ainsi que

Declare MyDateTimeValue as String 
'This creates value of MM/DD/YYYY 
MyDateTimeValue = MyDateTimePickerControl.Value 

'This adds a blankspace and HH:MM:SS to become "MM/DD/YYYY HH:MM:SS" 
MyDateTimeValue = MyDateTimeValue + ' ' + MyTimeLabelControl.Value 

Utilisez la MyDateTimevalue variable dans l'instruction SQL comme

DoCmd.ExecuteSQL ('Insert Into MyTable (Col1, DateTimeColumn) Values (1, #' & MyDatetimeValue & '#') 
Questions connexes