A voir également:
- Vb
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Range vb - Forum VB / VBA
38 réponses
coucou,
alors j'ai un formulaire où j'ai soit la possibilité de saisir soit l'affichage d'un calandrier qui me permet de choisir le jour
une fois la date entrée j'ai un bouton " ouvrir" qui me permet d'ouvir le formulaire "dossier" dans ce bouton j'ai :
stLinkCriteria = "[date_cmde]=" & "#" & Me![datecmde] & "#"
qui me permet de faire le lien entre les deux dates
donc dans le formulaire "dossier" j'ai tous les dossiers qui ont été commandés à cette date ( la date choisie dans le premier formulaire)
j'ai un champs dans ma table commande qui est date_envoie c'est la date à laquelle on envoie l'ensemble des dossiers
je veux que dès que j'appuie sur le bouton envoie la date d'envoie s'affecte à tous les dossiers affichés
je n'arrive pas à faire cela, ça ne s'affiche que pour le premier dossier
voila j'espère que ça sera mieux compris parce que j'ai vraiment besoin d'aide il faut absolument que je le finisse
merci
alors j'ai un formulaire où j'ai soit la possibilité de saisir soit l'affichage d'un calandrier qui me permet de choisir le jour
une fois la date entrée j'ai un bouton " ouvrir" qui me permet d'ouvir le formulaire "dossier" dans ce bouton j'ai :
stLinkCriteria = "[date_cmde]=" & "#" & Me![datecmde] & "#"
qui me permet de faire le lien entre les deux dates
donc dans le formulaire "dossier" j'ai tous les dossiers qui ont été commandés à cette date ( la date choisie dans le premier formulaire)
j'ai un champs dans ma table commande qui est date_envoie c'est la date à laquelle on envoie l'ensemble des dossiers
je veux que dès que j'appuie sur le bouton envoie la date d'envoie s'affecte à tous les dossiers affichés
je n'arrive pas à faire cela, ça ne s'affiche que pour le premier dossier
voila j'espère que ça sera mieux compris parce que j'ai vraiment besoin d'aide il faut absolument que je le finisse
merci
après avoir fait cela une erreur arrive lors de l'éxécution
" pas d'enregistrement courant"
il faut savoir que j'affecte à la date d'envoi la date du jour donc comme dans la table ce champs est vide peut etre que c'est pour ça que l'erreur apparait
enfin je crois
" pas d'enregistrement courant"
il faut savoir que j'affecte à la date d'envoi la date du jour donc comme dans la table ce champs est vide peut etre que c'est pour ça que l'erreur apparait
enfin je crois
S'il te dit "pas d'enregistrement courrant" c'est qu'il ne trouve aucun dossier avec la date que tu spécifie.
Soit prudent avec les dates en Access. Le format de date de ta table doit être identique au format de date du champ dans le form.
Tu peux débugger pour voir où exactement il s'arrête. Pour celà, dans ta fenêtre de code, tu clics dans la zone grise à gauche. Une boule rouge apparaît. Le programme s'arrêtera à cet endroit. En appuiant sur "F8", je crois, tu le fais avancer ligne par ligne. Tu veras où il se plante.
Tu peux aussi inséré des msgbox du style
MsgBox nDate.value pour qu'il affiche, durant l'exécution, la valeur de la date.
:-)
Soit prudent avec les dates en Access. Le format de date de ta table doit être identique au format de date du champ dans le form.
Tu peux débugger pour voir où exactement il s'arrête. Pour celà, dans ta fenêtre de code, tu clics dans la zone grise à gauche. Une boule rouge apparaît. Le programme s'arrêtera à cet endroit. En appuiant sur "F8", je crois, tu le fais avancer ligne par ligne. Tu veras où il se plante.
Tu peux aussi inséré des msgbox du style
MsgBox nDate.value pour qu'il affiche, durant l'exécution, la valeur de la date.
:-)
alors j'ai mis dans le champs de la table au format date, général et j'ai fait de meme dans le champs du formulaire
mais à l'éxécution j'ai une erreur du genre "type de données incompatible " et ça concerne la selection dans la requete ( je l'ai vu par le debogage)
mais à l'éxécution j'ai une erreur du genre "type de données incompatible " et ça concerne la selection dans la requete ( je l'ai vu par le debogage)
j'ai mis comme masque de saisie ddmmyyyy au deux ( dans la table et dans le formulaire) mais ça reviens à la premiere erreur
" pas d'enregistrement courant" et c'est mRs.MoveFirst qui est souligné
" pas d'enregistrement courant" et c'est mRs.MoveFirst qui est souligné
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai ta solution. Essaye ceci
Private Sub Boutton_Click()
Dim mDb As Database
Dim mRs As Recordset
Set mDb = CurrentDb
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset, dbSeeChanges, dbPessimistic)
mRs.MoveFirst
Do While (Not mRs.EOF)
If mRs("dateCmd").Value = Me!maDateSelection.Value Then
mRs.Edit
mRs("dateEnvoi").Value = Date()
mRs.Update
End If
mRs.MoveNext
Loop
mDb.Close
End Sub
Private Sub Boutton_Click()
Dim mDb As Database
Dim mRs As Recordset
Set mDb = CurrentDb
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset, dbSeeChanges, dbPessimistic)
mRs.MoveFirst
Do While (Not mRs.EOF)
If mRs("dateCmd").Value = Me!maDateSelection.Value Then
mRs.Edit
mRs("dateEnvoi").Value = Date()
mRs.Update
End If
mRs.MoveNext
Loop
mDb.Close
End Sub
oui mais en fait tout ce qui concerne les dossiers est dans une table "ligne commande"
et la table commande contient la date commande, la date d'envoie et sa clé
donc en fait j'ai deux table à utiliser ici alors comment je fait dans
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset, dbSeeChanges, dbPessimistic)
et la table commande contient la date commande, la date d'envoie et sa clé
donc en fait j'ai deux table à utiliser ici alors comment je fait dans
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset, dbSeeChanges, dbPessimistic)
Là il faut que tu m'en dises plus. Que contiennent tes deux tables?
Quel champs faut-il mettre à jour suivant quel critère?
Quel sont les clés de tes deux tables?
Si je comprend bien, tu as un form qui contient un champ de saisie "date". Quand tu clics sur un bouton, tu veux que le champ date d'envoie de la table commande soit mis à jour (=Date() ) si la date de commande de l'enregistrement = date du champ de saisie.
Y-a-t il un autre critère? Dois tu mettres à jour des données dans ta table "ligne commande"?
Je suis un peu paumé là.
Je vais manger. Je suis de retours vers 14H. Donc prend ton temps pour expliquer ce que tu veux CLAIREMENT.
:-)
Quel champs faut-il mettre à jour suivant quel critère?
Quel sont les clés de tes deux tables?
Si je comprend bien, tu as un form qui contient un champ de saisie "date". Quand tu clics sur un bouton, tu veux que le champ date d'envoie de la table commande soit mis à jour (=Date() ) si la date de commande de l'enregistrement = date du champ de saisie.
Y-a-t il un autre critère? Dois tu mettres à jour des données dans ta table "ligne commande"?
Je suis un peu paumé là.
Je vais manger. Je suis de retours vers 14H. Donc prend ton temps pour expliquer ce que tu veux CLAIREMENT.
:-)
alors j'ai essayé mais comme la date de la commande et date d'envoie sont dans la table commande j'ai mis Set mRs = mDb.OpenRecordset("commande", dbOpenDynaset, dbSeeChanges, dbPessimistic)
mais en exécutant il y a une erreur " variable non définie" et ça concerne dbOpenDynaset
mais en exécutant il y a une erreur " variable non définie" et ça concerne dbOpenDynaset
Là il faut que tu m'en dises plus. Que contiennent tes deux tables?
Quel champs faut-il mettre à jour suivant quel critère?
Quel sont les clés de tes deux tables?
Si je comprend bien, tu as un form qui contient un champ de saisie "date". Quand tu clics sur un bouton, tu veux que le champ date d'envoie de la table commande soit mis à jour (=Date() ) si la date de commande de l'enregistrement = date du champ de saisie.
Y-a-t il un autre critère? Dois tu mettres à jour des données dans ta table "ligne commande"?
Je suis un peu paumé là.
Je vais manger. Je suis de retours vers 14H. Donc prend ton temps pour expliquer ce que tu veux CLAIREMENT.
:-)
Quel champs faut-il mettre à jour suivant quel critère?
Quel sont les clés de tes deux tables?
Si je comprend bien, tu as un form qui contient un champ de saisie "date". Quand tu clics sur un bouton, tu veux que le champ date d'envoie de la table commande soit mis à jour (=Date() ) si la date de commande de l'enregistrement = date du champ de saisie.
Y-a-t il un autre critère? Dois tu mettres à jour des données dans ta table "ligne commande"?
Je suis un peu paumé là.
Je vais manger. Je suis de retours vers 14H. Donc prend ton temps pour expliquer ce que tu veux CLAIREMENT.
:-)
alors j'explique le tout
table "LigneCommande" qui a comme champs : num_LC qui est la clé, numdos, nomdos, date-réception et commentaire
celle-ci a comme clé étrangère num_cmde
table "Commande" qui a comme champs: num_cmde, date_cmde et date_de_réalisation qui est en fait la date d'envoie dont j'ai parlé
voila pour les deux table que j'utilise
Maintenant on en viens aux formulaires
formulaire "date", j'y ai un edit box qui sert à saisir la date de commande mais il y a une autre possibilité pour l'utilisateur c'est celle de cliquer sur la date voulue dans un calendrier qui en fait le sous formulaire de celui-ci
il y a aussi le bouton ouvrir qui ouvre le formulaire "dossiers selon la date de la commande" et un autre bouton qui sert à fermer le formulire
pour le formulire "dossiers selon la date de la commande" alors dès son ouverture on à l'apparition des dossiers qui ont était commandé à cette date
puis j'ai un bouton qui permet d'imprimer un état
enfin je voudrai pouvoir affecter la date de réalisation aux dossiers qui sont affichés c'est à dire que cette date marque le moment où l'administrateur va recolter les commandes des differents utilisateurs et va les envoyer
donc cette date prend la date du jour et elle doit être affectée à toutes les commandes des dossiers ( dans mon MCD une commandes peut contenir plusieurs ligne commande)
voila j'espère que c'est plus clair
table "LigneCommande" qui a comme champs : num_LC qui est la clé, numdos, nomdos, date-réception et commentaire
celle-ci a comme clé étrangère num_cmde
table "Commande" qui a comme champs: num_cmde, date_cmde et date_de_réalisation qui est en fait la date d'envoie dont j'ai parlé
voila pour les deux table que j'utilise
Maintenant on en viens aux formulaires
formulaire "date", j'y ai un edit box qui sert à saisir la date de commande mais il y a une autre possibilité pour l'utilisateur c'est celle de cliquer sur la date voulue dans un calendrier qui en fait le sous formulaire de celui-ci
il y a aussi le bouton ouvrir qui ouvre le formulaire "dossiers selon la date de la commande" et un autre bouton qui sert à fermer le formulire
pour le formulire "dossiers selon la date de la commande" alors dès son ouverture on à l'apparition des dossiers qui ont était commandé à cette date
puis j'ai un bouton qui permet d'imprimer un état
enfin je voudrai pouvoir affecter la date de réalisation aux dossiers qui sont affichés c'est à dire que cette date marque le moment où l'administrateur va recolter les commandes des differents utilisateurs et va les envoyer
donc cette date prend la date du jour et elle doit être affectée à toutes les commandes des dossiers ( dans mon MCD une commandes peut contenir plusieurs ligne commande)
voila j'espère que c'est plus clair
Donc, si on fait une sélection (dans la table commande) de tous les enregistrements avec date_cmde = date du formulaire, on a la liste des enregistrements à mettre à jour. C'est ça?
Si c'est le cas, remplace simplement
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset,
dbSeeChanges, dbPessimistic)
par
Set mRs = mDb.OpenRecordset("Commande", dbOpenDynaset, dbSeeChanges, dbPessimistic)
ATTENTION, pour que les nouvelles dates apparaissent dans le formulaire, il faut faire un update (ou l'ouvrir et le fermer)
:-)
Si c'est le cas, remplace simplement
Set mRs = mDb.OpenRecordset("tDossier", dbOpenDynaset,
dbSeeChanges, dbPessimistic)
par
Set mRs = mDb.OpenRecordset("Commande", dbOpenDynaset, dbSeeChanges, dbPessimistic)
ATTENTION, pour que les nouvelles dates apparaissent dans le formulaire, il faut faire un update (ou l'ouvrir et le fermer)
:-)
C'est ce que j'ai fait mais il y a une erreur, il me dit variable non definie et quand j'appuie sur ok ( du message d'errur qui est apparu) et bien c'est DbOpendDynaset qui est souligné
donc voila où j'en suis
donc voila où j'en suis
Bon, je reprend,
Private Sub Boutton_Click()
Dim mDb As Database
Dim mRs As Recordset
Set mDb = CurrentDb
Set mRs = mDb.OpenRecordset("Commande")
mRs.MoveFirst
Do While (Not mRs.EOF)
If mRs("date_cmde ").Value = Me!maDateSelection.Value Then
mRs.Edit
mRs("date_de_réalisation ").Value = Date()
mRs.Update
End If
mRs.MoveNext
Loop
mDb.Close
Me.Refresh
End Sub
Private Sub Boutton_Click()
Dim mDb As Database
Dim mRs As Recordset
Set mDb = CurrentDb
Set mRs = mDb.OpenRecordset("Commande")
mRs.MoveFirst
Do While (Not mRs.EOF)
If mRs("date_cmde ").Value = Me!maDateSelection.Value Then
mRs.Edit
mRs("date_de_réalisation ").Value = Date()
mRs.Update
End If
mRs.MoveNext
Loop
mDb.Close
Me.Refresh
End Sub
????
Même en ayantt supprimé la variable? Donc
Set mRs = mDb.OpenRecordset("Commande") sans aucun autre paramètres?
Fais un deboggage et dis mois où ils s'arrête et quel est EXACTEMENT le message d'erreur.
:-)
Même en ayantt supprimé la variable? Donc
Set mRs = mDb.OpenRecordset("Commande") sans aucun autre paramètres?
Fais un deboggage et dis mois où ils s'arrête et quel est EXACTEMENT le message d'erreur.
:-)
non c'est parce que j'avais pas encore vu ton message
sinon j'ai fais ce que tu m'a dis mais quand tu pas
Me!maDateSelection.Value
oui que dois je mettre à la place de madateselection car c'est dans le premier formulaire que je saisie ?????
sinon j'ai fais ce que tu m'a dis mais quand tu pas
Me!maDateSelection.Value
oui que dois je mettre à la place de madateselection car c'est dans le premier formulaire que je saisie ?????
Alors:
1. tu crée un module (dans l'onglet Modules) que tu nomes "Globals" et tu écris (exactement):
Public gDateSel As Date
2. Dans ton premier formulaire. Au début de la routine qui provoque l'ouverture du deuxième formulaire (Private Sub XXX_Click() ) tu écris:
gDateSel = Me!NonDuChampDeSaisie.Value
où !NonDuChampDeSaisie est le nom du champ dans lequel du saisis date (ATTENTION, pas son "caption").
3. Tu remplace dans la routine ci dessus
Me!maDateSelection.Value Par gDateSel
:-)
1. tu crée un module (dans l'onglet Modules) que tu nomes "Globals" et tu écris (exactement):
Public gDateSel As Date
2. Dans ton premier formulaire. Au début de la routine qui provoque l'ouverture du deuxième formulaire (Private Sub XXX_Click() ) tu écris:
gDateSel = Me!NonDuChampDeSaisie.Value
où !NonDuChampDeSaisie est le nom du champ dans lequel du saisis date (ATTENTION, pas son "caption").
3. Tu remplace dans la routine ci dessus
Me!maDateSelection.Value Par gDateSel
:-)
oui après avoir fait ça j'ai une erreu " element non trouvé dans cette collecton" et quand je vais sur débogage et bien c'est
mRs("date_réalisation ").Value = date
qui est souligné
pourtant date_réalisation est bien écris comme ça dans ma table
mRs("date_réalisation ").Value = date
qui est souligné
pourtant date_réalisation est bien écris comme ça dans ma table
6 mars 2003 à 09:56
Supposons
que ta table s'appel "tDossier"
que le champ de ton form contenant la date s'appel "nDate"
#XXX# --> commentaires
Private Sub NonDeTonBouton_Click()
Dim mDb As DataBase
Dim mRs As Recordset
Set mDb = CurrentDb #Ouverture de la DB#
Set mRS = mDB.OpenRecordset("SELECT * FROM tDossier WHERE [date_envoie ] = ' " & Me!nDate.Value & " ';") #Ouverture de la table contenant les enregistrements à modifier#
mRs.MoveFirst
mRs.Edit #passer en mode édit#
Do While (Not mRs.EOF) #Tant que la fin du fichier n'est pas atteinte#
mRS("date_envoie ") = Me!nDate.Value #Modifier la date#
mRSMvtsFiltredSorted.MoveNext #Aller à l'enregistrement suivant#
mRS.Update #Faire une màj de la table#
Loop
mDb.Close
End Sub
ATTENTION: pour que cela marche, il faut que la date soit présente dans le formulaire contenant le bouton.
6 mars 2003 à 10:01
pas "mRSMvtsFiltredSorted" mais "mRs"
:-)