re Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref
rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces
Ces 3 valeurs proviennent de ta requête. Celle-ci retourne un seul
enregistrement pour la date du jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les instructions
Dim... en oubliant pas de modifier Dim tr, te, ts as Integer en
Dim tr as Integer, ts as Integer, te as Integer comme te l'a signalé
Pierre
Dim rst as DAO.Recordset
set rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs")
' en supposant que les champs sont dans cet ordre dans la '
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl écrivait news::Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le transformer
en fonction ? il suffit juste de remplacer sub et end sub par
function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >> rqoffresxmises.CompteDedatetransmission: ts >> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Subre,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement à
la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ", ChampB="
&
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un sql
d'ajout
strSQL = "Insert Into TableDate(UneDate, ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA & ","
&
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord" !!!)
pour pouvoir faire exécuter cette fonction à partir d'une macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl écrivait news::Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans 3
requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA et
à sa syntaxe maudite (un coup des . un coup des ; un coup des !
enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur sans problèmesre,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl écrivait
news::On Thu, 15 Jul 2004 02:57:19 -0700, Eric
wrote:Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la fonction
DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date.
Ca te fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle à
partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl écrivait
news::Complément d'information :
Avec mon système de suppression avant nouvelle création cela ne
marche pas si il n'y a pas d'enregistrement pour la date du
jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace les
valeurs par les nouvelles, sinon crées un enregistrement avec
la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul a
une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout prendre
les valeurs calculées A B et C et les mettre dans les champs A
B et C de la table, mais le problème vient du fait que
j'aimerais n'avoir qu'une seule valeur par jour et pas une à
chaque fois que les calculs sont faits, en fait j'aimerai qu'a
chaque fois qu'un calcul est fait la valeur REMPLACE celle de
la journée en cours, par exemple si le 15/07 je fais le calcul
a 10h30 et a 17h30 je ne veux garder que la valeur de 17h30 et
je me moque de celle de 10h30., c'est pour faire des
statistiques journalières et donc je ne veux pas avoir 12
enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
re Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref
rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces
Ces 3 valeurs proviennent de ta requête. Celle-ci retourne un seul
enregistrement pour la date du jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les instructions
Dim... en oubliant pas de modifier Dim tr, te, ts as Integer en
Dim tr as Integer, ts as Integer, te as Integer comme te l'a signalé
Pierre
Dim rst as DAO.Recordset
set rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs")
' en supposant que les champs sont dans cet ordre dans la '
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl <nobody@nowhere.com> écrivait news:opsa8fxtlkarkwbw@news.free.fr:
Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le transformer
en fonction ? il suffit juste de remplacer sub et end sub par
function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >> rqoffresxmises.CompteDedatetransmission: ts >> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Sub
re,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement à
la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ", ChampB="
&
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un sql
d'ajout
strSQL = "Insert Into TableDate(UneDate, ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA & ","
&
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord" !!!)
pour pouvoir faire exécuter cette fonction à partir d'une macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl <nobody@nowhere.com> écrivait news:opsa6gedkparkwbw@news.free.fr:
Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans 3
requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA et
à sa syntaxe maudite (un coup des . un coup des ; un coup des !
enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur txl@free.fr sans problèmes
re,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl <nobody@nowhere.com> écrivait
news:opsa6fntvzarkwbw@news.free.fr:
On Thu, 15 Jul 2004 02:57:19 -0700, Eric <f_framZZ@hotmail.com>
wrote:
Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la fonction
DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date.
Ca te fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle à
partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl <nobody@nowhere.com> écrivait
news:opsa59t5t8arkwbw@news.free.fr:
Complément d'information :
Avec mon système de suppression avant nouvelle création cela ne
marche pas si il n'y a pas d'enregistrement pour la date du
jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace les
valeurs par les nouvelles, sinon crées un enregistrement avec
la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul a
une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout prendre
les valeurs calculées A B et C et les mettre dans les champs A
B et C de la table, mais le problème vient du fait que
j'aimerais n'avoir qu'une seule valeur par jour et pas une à
chaque fois que les calculs sont faits, en fait j'aimerai qu'a
chaque fois qu'un calcul est fait la valeur REMPLACE celle de
la journée en cours, par exemple si le 15/07 je fais le calcul
a 10h30 et a 17h30 je ne veux garder que la valeur de 17h30 et
je me moque de celle de 10h30., c'est pour faire des
statistiques journalières et donc je ne veux pas avoir 12
enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
re Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref
rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces
Ces 3 valeurs proviennent de ta requête. Celle-ci retourne un seul
enregistrement pour la date du jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les instructions
Dim... en oubliant pas de modifier Dim tr, te, ts as Integer en
Dim tr as Integer, ts as Integer, te as Integer comme te l'a signalé
Pierre
Dim rst as DAO.Recordset
set rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs")
' en supposant que les champs sont dans cet ordre dans la '
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl écrivait news::Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le transformer
en fonction ? il suffit juste de remplacer sub et end sub par
function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >> rqoffresxmises.CompteDedatetransmission: ts >> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Subre,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement à
la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ", ChampB="
&
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un sql
d'ajout
strSQL = "Insert Into TableDate(UneDate, ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA & ","
&
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord" !!!)
pour pouvoir faire exécuter cette fonction à partir d'une macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl écrivait news::Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans 3
requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA et
à sa syntaxe maudite (un coup des . un coup des ; un coup des !
enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur sans problèmesre,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl écrivait
news::On Thu, 15 Jul 2004 02:57:19 -0700, Eric
wrote:Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la fonction
DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date.
Ca te fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle à
partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl écrivait
news::Complément d'information :
Avec mon système de suppression avant nouvelle création cela ne
marche pas si il n'y a pas d'enregistrement pour la date du
jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace les
valeurs par les nouvelles, sinon crées un enregistrement avec
la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul a
une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout prendre
les valeurs calculées A B et C et les mettre dans les champs A
B et C de la table, mais le problème vient du fait que
j'aimerais n'avoir qu'une seule valeur par jour et pas une à
chaque fois que les calculs sont faits, en fait j'aimerai qu'a
chaque fois qu'un calcul est fait la valeur REMPLACE celle de
la journée en cours, par exemple si le 15/07 je fais le calcul
a 10h30 et a 17h30 je ne veux garder que la valeur de 17h30 et
je me moque de celle de 10h30., c'est pour faire des
statistiques journalières et donc je ne veux pas avoir 12
enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
Rebonjour
merci pour vos tuyaux, j'ai réecrit le code comme suite, c'est bon ?
Je ne peus pas récupérer les calculs dans 1 seule requete, j'ouvre
donc les 3 requetes en récupérant à chaque fois le bon résultat.
J'ai aussi refait les dim pour mes variables comme me l'a indiqué
3stone.
Par contre ma macro "stats" qui appele la fonction txl() me dit que la
focntion n'existe pas,; il faut l'enregistrer comment ?
Merci encore
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Functionre Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces Ces 3 valeurs proviennent de ta
requête. Celle-ci retourne un seul enregistrement pour la date du
jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les
instructions Dim... en oubliant pas de modifier Dim tr, te, ts as
Integer en Dim tr as Integer, ts as Integer, te as Integer comme te
l'a signalé Pierre
Dim rst as DAO.Recordset
set
rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs"
) ' en supposant que les champs sont dans cet ordre dans la
'
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on
récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl écrivait news::Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le
transformer en fonction ? il suffit juste de remplacer sub et end
sub par function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >>> rqoffresxmises.CompteDedatetransmission: ts >>> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Subre,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement
à la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ",
ChampB=" &
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un
sql d'ajout strSQL = "Insert Into TableDate(UneDate,
ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA &
"," &
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord"
!!!) pour pouvoir faire exécuter cette fonction à partir d'une
macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl écrivait
news::Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans
3 requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA
et à sa syntaxe maudite (un coup des . un coup des ; un coup des
! enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur sans problèmesre,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl écrivait
news::On Thu, 15 Jul 2004 02:57:19 -0700, Eric
wrote:Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la
fonction DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date. Ca te
fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle
à partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl écrivait
news::Complément d'information :
Avec mon système de suppression avant nouvelle création cela
ne marche pas si il n'y a pas d'enregistrement pour la date
du jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace
les valeurs par les nouvelles, sinon crées un enregistrement
avec la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul
a une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout
prendre les valeurs calculées A B et C et les mettre dans les
champs A B et C de la table, mais le problème vient du fait
que j'aimerais n'avoir qu'une seule valeur par jour et pas
une à chaque fois que les calculs sont faits, en fait
j'aimerai qu'a chaque fois qu'un calcul est fait la valeur
REMPLACE celle de la journée en cours, par exemple si le
15/07 je fais le calcul a 10h30 et a 17h30 je ne veux garder
que la valeur de 17h30 et je me moque de celle de 10h30.,
c'est pour faire des statistiques journalières et donc je ne
veux pas avoir 12 enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
Rebonjour
merci pour vos tuyaux, j'ai réecrit le code comme suite, c'est bon ?
Je ne peus pas récupérer les calculs dans 1 seule requete, j'ouvre
donc les 3 requetes en récupérant à chaque fois le bon résultat.
J'ai aussi refait les dim pour mes variables comme me l'a indiqué
3stone.
Par contre ma macro "stats" qui appele la fonction txl() me dit que la
focntion n'existe pas,; il faut l'enregistrer comment ?
Merci encore
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
re Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces Ces 3 valeurs proviennent de ta
requête. Celle-ci retourne un seul enregistrement pour la date du
jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les
instructions Dim... en oubliant pas de modifier Dim tr, te, ts as
Integer en Dim tr as Integer, ts as Integer, te as Integer comme te
l'a signalé Pierre
Dim rst as DAO.Recordset
set
rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs"
) ' en supposant que les champs sont dans cet ordre dans la
'
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on
récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl <nobody@nowhere.com> écrivait news:opsa8fxtlkarkwbw@news.free.fr:
Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le
transformer en fonction ? il suffit juste de remplacer sub et end
sub par function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >>> rqoffresxmises.CompteDedatetransmission: ts >>> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Sub
re,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement
à la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ",
ChampB=" &
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un
sql d'ajout strSQL = "Insert Into TableDate(UneDate,
ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA &
"," &
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord"
!!!) pour pouvoir faire exécuter cette fonction à partir d'une
macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl <nobody@nowhere.com> écrivait
news:opsa6gedkparkwbw@news.free.fr:
Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans
3 requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA
et à sa syntaxe maudite (un coup des . un coup des ; un coup des
! enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur txl@free.fr sans problèmes
re,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl <nobody@nowhere.com> écrivait
news:opsa6fntvzarkwbw@news.free.fr:
On Thu, 15 Jul 2004 02:57:19 -0700, Eric <f_framZZ@hotmail.com>
wrote:
Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la
fonction DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date. Ca te
fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle
à partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl <nobody@nowhere.com> écrivait
news:opsa59t5t8arkwbw@news.free.fr:
Complément d'information :
Avec mon système de suppression avant nouvelle création cela
ne marche pas si il n'y a pas d'enregistrement pour la date
du jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace
les valeurs par les nouvelles, sinon crées un enregistrement
avec la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul
a une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout
prendre les valeurs calculées A B et C et les mettre dans les
champs A B et C de la table, mais le problème vient du fait
que j'aimerais n'avoir qu'une seule valeur par jour et pas
une à chaque fois que les calculs sont faits, en fait
j'aimerai qu'a chaque fois qu'un calcul est fait la valeur
REMPLACE celle de la journée en cours, par exemple si le
15/07 je fais le calcul a 10h30 et a 17h30 je ne veux garder
que la valeur de 17h30 et je me moque de celle de 10h30.,
c'est pour faire des statistiques journalières et donc je ne
veux pas avoir 12 enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
Rebonjour
merci pour vos tuyaux, j'ai réecrit le code comme suite, c'est bon ?
Je ne peus pas récupérer les calculs dans 1 seule requete, j'ouvre
donc les 3 requetes en récupérant à chaque fois le bon résultat.
J'ai aussi refait les dim pour mes variables comme me l'a indiqué
3stone.
Par contre ma macro "stats" qui appele la fonction txl() me dit que la
focntion n'existe pas,; il faut l'enregistrer comment ?
Merci encore
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Functionre Txl,
Ta procédure est bonne mais il te manque les valeurs de :
rqoffrescrees.CompteDeref rqoffresxmises.CompteDedatetransmission
rqoffressucces.CompteDesucces Ces 3 valeurs proviennent de ta
requête. Celle-ci retourne un seul enregistrement pour la date du
jour ?
Si c'est le cas, il faut que tu mettes en début de ta procédure
(transformée en Function pour ton appel par macro) sous les
instructions Dim... en oubliant pas de modifier Dim tr, te, ts as
Integer en Dim tr as Integer, ts as Integer, te as Integer comme te
l'a signalé Pierre
Dim rst as DAO.Recordset
set
rst=CurrentDB.Openrecordset("NomDeLaRequêteQuiFaitLesCalculs"
) ' en supposant que les champs sont dans cet ordre dans la
'
' requête:CompteDeref, CompteDedatetransmission, CompteDesucces
tr=rst(0):te=rst(1):ts=rst(2)
rst.Close:set rst=Nothing ' on ferme le Recordset et on
récupère la
place mémoire
A+
Eric
N'oublies pas de cocher la Référence DAO 3.x Object Library (Menu
Outils|Références)
Txl écrivait news::Coucou,
Voila mon module "stats" une fois sauvé, que faire pour le
transformer en fonction ? il suffit juste de remplacer sub et end
sub par function et end function ?
Pour etre franc je ne sais pas quelles différences il y a entre sub,
module fonction et autres joyeusetés d'access.
Encore merci pour ton aide.
Sub RechDateValeursTxl()
Dim strSQL As String
Dim tr, ts, te As Integer
tr = rqoffrescrees.CompteDeref: te >>> rqoffresxmises.CompteDedatetransmission: ts >>> rqoffressucces.CompteDesucces
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Subre,
Voila un exemple de la procédure:
Elle manipule une table nommée TableDate ayant 4 champs: UneDate,
ChampA, ChampB, ChampC.
On regarde si l'enregistrement pour la date courante existe ou non,
si c'est le cas on fait un Update sinon on ajoute l'enregistrement
à la table.
J'ai mis dans mon exemple des valeurs pour les 3 champs en dur,
histoire de tester le sql. Toi, tu devras récupérer ces valeurs à
partir de tes requêtes.
Sub RechDateValeursTxl()
Dim strSQL As String
' les valeurs ci-dessous c'est pour le test
NewA = 100: NewB = 200: NewC = 300
'on regarde si la recherche aboutie
If Not IsNull(DLookup("[UneDate]", "TableDate", "[UneDate]=#" _
& Format(Date, "mm/dd/yy") & "#")) Then
'si l'enregistrement existe pour cette date
' on définit un sql d'insertion
strSQL = "Update TableDate set ChampA=" & NewA & ",
ChampB=" &
NewB & ", ChampC=" & NewC _
& " Where UneDate=#" & Format(Date, "mm/dd/yy") & "#;"
Else
'si l'enregistrement à cette date n'existe pas on fait un
sql d'ajout strSQL = "Insert Into TableDate(UneDate,
ChampA, ChampB,
ChampC)" _
& " Values(#" & Format(Date, "mm/dd/yy") & "#," & NewA &
"," &
NewB _
& "," & NewC & ");"
End If
' on execute le SQL validé par le If Not IsNull(...)
CurrentDb.Execute strSQL
End Sub
Une fois que tu as modifié ton code pour récupérer les valeurs, tu
changes le Sub en Function (on va utiliser les "effets de bord"
!!!) pour pouvoir faire exécuter cette fonction à partir d'une
macro.
(Plus "beau" mais plus long : Créer une fonction dont la seule
instruction est d'appeler la procédure. Fonction appelée à son tour
par une macro avec la commande ExécuterCode)
A+
Eric
Txl écrivait
news::Ben j'ai fait un module comme suit mais bien sur ca ne marche pas
Option Compare Database
Dim x As Boolean
x = DLookup("[dateenr]", "tblstats", "[dateenr]=now()")
If x = True Then
Delete tblstat.dateenr, tblstat.tr, tblstat.te, tblstat.ts
FROM tblstat
INSERT INTO tblstat ( tr, te, ts )
SELECT rqoffrescrees.CompteDeref,
rqoffresxmises.CompteDedatetransmission,
rqoffressucces.CompteDesucces
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
Else
INSERT INTO tblstat ( tr, te, ts )
SELECT [rqoffrescrees.CompteDeref],
[rqoffresxmises.CompteDedatetransmission],
[rqoffressucces.CompteDesucces]
FROM rqoffrescrees, rqoffressucces, rqoffresxmises
COmme tu peux le voir les résultats des comptes sont appelés dans
3 requetes supplémentaires et( à la compilation il me dit que
l'argument
case est manquant.
Je veux bien essayer ton exemple car je ne comprends rien au VBA
et à sa syntaxe maudite (un coup des . un coup des ; un coup des
! enbfin bref, trop compliqué pour moi....)
Merci beaucoup de ton aide
ps : tu peux me mailer le tout sur sans problèmesre,
Oui en VBA et si tu veux je peux te faire passer la procédure.
Si tu veux l'appeler par une macro, il faudra la transformer en
fonction car une macro, si mes souvenirs sont bons, peut exécuter
du code mais seulement des fonctions et pas des procédures. (Du
moins sous W2k).
Je tiens ca à ta dispo car j'avais préparé un exemple. A toi de
voir si tu veux chercher par toi-même ou t'aider de l'exemple.
A+
Eric
Txl écrivait
news::On Thu, 15 Jul 2004 02:57:19 -0700, Eric
wrote:Bonjour Txl,
Moi je te propose de faire une recherche dans ta table de
l'enregistrement correspondant à la date du jour avec la
fonction DlookUp.
Si elle retourne Null, tu fais un SQL d'ajout dans la table,
sinon un sql de mise à jour des champs pour cette date. Ca te
fait qu'une seule requête à exécuter.
Ca te conviendrait ?
Ca me conviendrait très bien comme système et ca parait assez
logique comme idée, mais je suppose que ce genre de truc ne peut
se faire qu'en VBA, donc je crée un module de code que j'appéle
à partir de ma macro c'est ca ?
Je vais m'attaquer au code ce qui va bien faire rigoler le
compilateur
VBA....
Merci de la suggestion
JC
A+
Eric
Txl écrivait
news::Complément d'information :
Avec mon système de suppression avant nouvelle création cela
ne marche pas si il n'y a pas d'enregistrement pour la date
du jour puisque la requete de suppression me donne une erreur
"impossible de supprimer dans la table spécifiée" ce qui est
juste puisque les valeurs n'ont pas encore été stockées, donc
il me faudrait un truc du genre
s'il existe un enregistrement avec la date du jour remplace
les valeurs par les nouvelles, sinon crées un enregistrement
avec la date du jour et stockes les valeurs
Encore merci de votre aide
Bonjour,
Je voudrais ajouter des données issues de requetes de calcul
a une table mais avec une logique un peu spéciale.
Je voudrais que lorsque la base fait une opération comme
l'ouverture ou la fermeture de tel ou tel formulaire des
calculs soient faits d'un nombre d'enregistrements avec des
cases à cocher et que les résultats de ces calculs soient
stockés dans une table avec la date du jour, par exemple :
Date A B C
11/07/04 18 24 54
12/07/04 21 14 21
13/07/04 5 14 12
15/07/04 25 32 45
Et ainsi de suite...
Jusque la ca marche car je peux avec une requete ajout
prendre les valeurs calculées A B et C et les mettre dans les
champs A B et C de la table, mais le problème vient du fait
que j'aimerais n'avoir qu'une seule valeur par jour et pas
une à chaque fois que les calculs sont faits, en fait
j'aimerai qu'a chaque fois qu'un calcul est fait la valeur
REMPLACE celle de la journée en cours, par exemple si le
15/07 je fais le calcul a 10h30 et a 17h30 je ne veux garder
que la valeur de 17h30 et je me moque de celle de 10h30.,
c'est pour faire des statistiques journalières et donc je ne
veux pas avoir 12 enregistrements pour le 15/07.
Pour le moment je fais ca avec une requete qui efface les
valeurs d'aujourd'hui avant de calculer les nouvelles valeurs
mais ce n'est pas très élégant et assez lourd en ressources
car il faut lancer une macro qui execute les 2 requetes et
comme la base tourne en réseau sur 20+ postes ca ralentit le
bazar.
Merci de votre aide
Bonjour Txl,
Il faut que ta fonction Txl()soit écrite dans un module Standard et non
de formulaire.
Ta macro aura une action : ExécuterCode - Nom de la fonction : Txl()
Eric
Bonjour Txl,
Il faut que ta fonction Txl()soit écrite dans un module Standard et non
de formulaire.
Ta macro aura une action : ExécuterCode - Nom de la fonction : Txl()
Eric
Bonjour Txl,
Il faut que ta fonction Txl()soit écrite dans un module Standard et non
de formulaire.
Ta macro aura une action : ExécuterCode - Nom de la fonction : Txl()
Eric
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
re,
Tes déclarations de variables (Dim) doivent être faites avant leur
affectation. Ca donne:
Dim strSQL As String
Dim rst As DAO.Recordset
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
et ce n'est qu'après que tu fais l'affectation du genre :
tr = rst(0) ...
Pour info, j'aurai nommé les variables tr, ts, te comme suit :
intTr,intTs, intTe pour les différencier des champs de ta table. En les
prefixant par "int" on sait qu'il s'agit de variable de type Integer.
Ta fonction Txl() doit être écrite dans un Module standard puisque tu
veux la faire exécuter par une macro. Pour accéder à un module Standard,
dans la fenêtre de la Base de données, tu cliques sur l'onglet Modules
puis Nouveau ou Modifier suivant le cas. Ce qui différencie un module
standard d'un module de formulaire ou d'état, c'est qu'il n'y a *aucune*
procédure évènementielle dans un module standard. Ils sont destinés à
recevoir les procédures ou fonctions de portée générale à l'application.
Quand tu mets un bouton dans un formulaire et que sur ce bouton, via la
fenêtre des propriétés, par exemple sur Clic, tu mets une procédure
évènementielle alors tu écris le code dans le module du formulaire. C'est
simple à différencier. Toute procédure évènementielle commence par
Private puis le nom du contrôle et enfin _TypeEvènement avec
éventuellement des arguments.
Exemple:
Private Sub Commande5_Click() <---- il s'agit d'un module de formulaire.
Procédure accessible uniquement dans ce formulaire et lors de l'évènement
Clic sur le bouton de commande nomé Commande5.
Les procédures(Sub) ou fonctions (Function) écrites dans les modules
standards sont chargées au démarrage de l'application. Donc ca consomme
des ressources même si celles-ci ne sont pas immédiatement utilisées.
Les procédures (Private Sub, Sub) ou fonction (function) écrites dans les
modules associées aux formulaires ou états ne sont chargées par
l'application qu'au moment ou le formulaire/état est chargé en mémoire,
donc économie de ressources.
Voila, j'espère que ces quelques remarques t'aideront à poursuivre en
VBA.
A+
Eric
PS: Il existe aussi des modules de classe mais ca sera pour une autre
fois. ;-))
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
re,
Tes déclarations de variables (Dim) doivent être faites avant leur
affectation. Ca donne:
Dim strSQL As String
Dim rst As DAO.Recordset
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
et ce n'est qu'après que tu fais l'affectation du genre :
tr = rst(0) ...
Pour info, j'aurai nommé les variables tr, ts, te comme suit :
intTr,intTs, intTe pour les différencier des champs de ta table. En les
prefixant par "int" on sait qu'il s'agit de variable de type Integer.
Ta fonction Txl() doit être écrite dans un Module standard puisque tu
veux la faire exécuter par une macro. Pour accéder à un module Standard,
dans la fenêtre de la Base de données, tu cliques sur l'onglet Modules
puis Nouveau ou Modifier suivant le cas. Ce qui différencie un module
standard d'un module de formulaire ou d'état, c'est qu'il n'y a *aucune*
procédure évènementielle dans un module standard. Ils sont destinés à
recevoir les procédures ou fonctions de portée générale à l'application.
Quand tu mets un bouton dans un formulaire et que sur ce bouton, via la
fenêtre des propriétés, par exemple sur Clic, tu mets une procédure
évènementielle alors tu écris le code dans le module du formulaire. C'est
simple à différencier. Toute procédure évènementielle commence par
Private puis le nom du contrôle et enfin _TypeEvènement avec
éventuellement des arguments.
Exemple:
Private Sub Commande5_Click() <---- il s'agit d'un module de formulaire.
Procédure accessible uniquement dans ce formulaire et lors de l'évènement
Clic sur le bouton de commande nomé Commande5.
Les procédures(Sub) ou fonctions (Function) écrites dans les modules
standards sont chargées au démarrage de l'application. Donc ca consomme
des ressources même si celles-ci ne sont pas immédiatement utilisées.
Les procédures (Private Sub, Sub) ou fonction (function) écrites dans les
modules associées aux formulaires ou états ne sont chargées par
l'application qu'au moment ou le formulaire/état est chargé en mémoire,
donc économie de ressources.
Voila, j'espère que ces quelques remarques t'aideront à poursuivre en
VBA.
A+
Eric
PS: Il existe aussi des modules de classe mais ca sera pour une autre
fois. ;-))
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
re,
Tes déclarations de variables (Dim) doivent être faites avant leur
affectation. Ca donne:
Dim strSQL As String
Dim rst As DAO.Recordset
Dim tr As Integer
Dim ts As Integer
Dim te As Integer
et ce n'est qu'après que tu fais l'affectation du genre :
tr = rst(0) ...
Pour info, j'aurai nommé les variables tr, ts, te comme suit :
intTr,intTs, intTe pour les différencier des champs de ta table. En les
prefixant par "int" on sait qu'il s'agit de variable de type Integer.
Ta fonction Txl() doit être écrite dans un Module standard puisque tu
veux la faire exécuter par une macro. Pour accéder à un module Standard,
dans la fenêtre de la Base de données, tu cliques sur l'onglet Modules
puis Nouveau ou Modifier suivant le cas. Ce qui différencie un module
standard d'un module de formulaire ou d'état, c'est qu'il n'y a *aucune*
procédure évènementielle dans un module standard. Ils sont destinés à
recevoir les procédures ou fonctions de portée générale à l'application.
Quand tu mets un bouton dans un formulaire et que sur ce bouton, via la
fenêtre des propriétés, par exemple sur Clic, tu mets une procédure
évènementielle alors tu écris le code dans le module du formulaire. C'est
simple à différencier. Toute procédure évènementielle commence par
Private puis le nom du contrôle et enfin _TypeEvènement avec
éventuellement des arguments.
Exemple:
Private Sub Commande5_Click() <---- il s'agit d'un module de formulaire.
Procédure accessible uniquement dans ce formulaire et lors de l'évènement
Clic sur le bouton de commande nomé Commande5.
Les procédures(Sub) ou fonctions (Function) écrites dans les modules
standards sont chargées au démarrage de l'application. Donc ca consomme
des ressources même si celles-ci ne sont pas immédiatement utilisées.
Les procédures (Private Sub, Sub) ou fonction (function) écrites dans les
modules associées aux formulaires ou états ne sont chargées par
l'application qu'au moment ou le formulaire/état est chargé en mémoire,
donc économie de ressources.
Voila, j'espère que ces quelques remarques t'aideront à poursuivre en
VBA.
A+
Eric
PS: Il existe aussi des modules de classe mais ca sera pour une autre
fois. ;-))
Ok, merci du truc
Donc mon module est dans la page "modules" avec les forms, les états,
les tables et requetes et mon module se compose du texte suivant
complet pompé dans le VBA editor
Option Compare Database
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffrescrees")
tr = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffressucces")
ts = rst(0)
rst.Close: Set rst = Nothing
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("rqoffresxmises")
te = rst(0)
rst.Close: Set rst = Nothing
Dim tr, ts, te As Integer
Dim ts As Integer
Dim te As Integer
If Not IsNull(DLookup("[Dateenr]", "Tblstat", "[dateenr]=#" &
Format(Date, "mm/dd/yy") & "#")) Then
strSQL = "Update tblstat set tr=" & tr & ", ts=" & ts & ",
te=" &
te & " Where dateenr=#" & Format(Date, "mm/dd/yy") & "#;"
Else
strSQL = "Insert Into Tblstat(dateenr, tr, te, ts)" & "
Values(#"
& Format(Date, "mm/dd/yy") & "#," & tr & "," & te & "," & ts & ");"
End If
CurrentDb.Execute strSQL
End Function
Comment je sais si c'est un module "standard" ou spécial ou d'un autre
type ?
Désolé pour les questions idiotes mais je nage complètement (en fait
je coule meme pas mal, ha ha ha)
Merci
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Salut,
"Txl"
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
<snip>
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Sans regarder le code ;-)
Il ne faut pas que le module porte le nom d'une fonction qui s'y
trouve!
Préfixe ton module par mod_ comme mod_TXL
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Salut,
"Txl"
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
<snip>
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Sans regarder le code ;-)
Il ne faut pas que le module porte le nom d'une fonction qui s'y
trouve!
Préfixe ton module par mod_ comme mod_TXL
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Salut,
"Txl"
Function txl()
Dim strSQL As String
Dim rst As DAO.Recordset
<snip>
le tout est sauvé dans le module "txl", je fais une macro avec "executer
Sans regarder le code ;-)
Il ne faut pas que le module porte le nom d'une fonction qui s'y
trouve!
Préfixe ton module par mod_ comme mod_TXL
--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Dernière question :
ca marche dans un runtime une fonction de ce type ou
il faut impérativement avoir access ?
Dernière question :
ca marche dans un runtime une fonction de ce type ou
il faut impérativement avoir access ?
Dernière question :
ca marche dans un runtime une fonction de ce type ou
il faut impérativement avoir access ?