2009-12-16 4 views
0

La situation:Accès à une base de données Access à partir d'Outlook via VBA

Dans Outlook, j'obtiens un message d'un serveur. Le contenu du message doit être placé dans une base de données Access. Mais, il peut ne pas exister un autre message avec la même date. Donc, je dois regarder dans un db s'il y a déjà un message avec la même date et fois. S'il en existe un, il doit être remplacé et, dans le cas contraire, le message doit être ajouté à la base de données. La base de données contient une liste des positions actuelles des véhicules sur la route .

Le problème:

J'ai des problèmes de comparer un temps de date avec l'heure de la date dans un DB Accès via VBA. La requête que j'utilise ne renvoie aucun enregistrement mais il y a un enregistrement dans la base de données .

C'est la requête que j'utilise:

adoRS.Open "SELECT * FROM currentpositions WHERE ((currentpositions. 
    [dateLT])=" & "#" & date_from_message & "#" & ")", adoConn, adOpenStatic, adLockOptimistic 

Deuxièmement je dois maintenant ce que le résultat est de cette requête.

Comment puis-je déterminer le nombre d'enregistrements que ma requête me donne?

Merci camastanta

Répondre

0

Si la date du message est une date, essayez:

"SELECT * FROM currentpositions WHERE ((currentpositions. 
[dateLT])=#" & Format(date_from_message,"yyyy/mm/dd") & "#)" 

C'est, formatez la date à l'année, le mois, l'ordre de jour.

Est-ce que date_from_message est associé à une heure? Est-ce que dateLT a un temps? Si c'est le cas, il peut être préférable d'exclure l'heure, si seule la date est pertinente.

Vous pouvez obtenir le nombre d'enregistrements renvoyés de la propriété RecordCount, mais vous devez utiliser the right cursor type:

adOpenKeyset: 1
adOpenStatic: 3

Je note que vous utilisez adOpenStatic, donc:

adoRS.Recordcount 

Devrait répondre.

+0

est pas le type de curseur correct adOpenDynamic dans ce cas? Si vous créez un jeu d'enregistrements basé sur une chaîne SQL à l'aide d'ADO, spécifiez la valeur adOpenDynamic CursorType si possible, car Jet ne gère pas les curseurs dynamiques ..., Jet gère cela spécifiquement, offrant les meilleures performances avec les chaînes SQL. , en utilisant une constante supportant un type de curseur spécifique que Jet ne peut pas gérer pour obtenir les meilleures performances avec les chaînes SQL, mais c'est ainsi que cette constante particulière a été mappée en interne. " (http://msdn.microsoft.com/en-us/library/aa188211(office.10).aspx) – onedaywhen

0

Merci pour cela: le format fonctionne mais j'ai toujours le problème avec le temps. J'ai besoin de comparer une date/heure.

J'utilise la date/heure du corps du message pour le comparer avec une date/heure dans une base de données d'accès. S'il existe un enregistrement avec ce temps, alors je dois ne rien faire et sinon je dois ajouter le corps du message à la base de données.

En fait j'utilise plus de champs pour déterminer si l'enregistrement existe mais j'ai seulement des problèmes avec le champ date/heure. Le corps du message est comme ceci: 10125, Road Runner, 16/12/2009 18:28:00, (16/12/2009 17:28:00 UTC), 11,51.32400000,3.20000000, rapport de position (avec des champs: db-numéro, le nom, la date, de la date, de l'état, utc position autre)

Cordialement Camastanta

Questions connexes