J'ai un jeu d'enregistrements qui fonctionne bien dans mon cas de Microsoft Access, mais lorsque je l'essaie d'être sur un autre ordinateur, il échoue.
J'ai déjà beaucoup d'enregistrements exécutés dans les deux versions de mon application d'accès. Les deux sont sur accès 2010, mais ils ont probablement des pilotes différents. P>
Le code ressemble à ceci: p> J'ai utilisé une msgbox pour confirmer tout de mes variables fonctionnent. Le code fonctionne comme prévu sur mon premier ordinateur, mais le second échoue simplement avec une erreur générique "en cliquant sur". P> Il apparaît que le problème ici est la partie comprise, car c'est la seule fois que je ' jamais utilisé entre. P> Y a-t-il une sorte de pilote SQL que mon deuxième ordinateur doit pouvoir exécuter cette requête entre entre-deux? P> P>
4 Réponses :
Vous devez formater votre valeur de date sous forme de représentation de texte: Si vous avez suivi le conseil d'Albert et il échoue toujours , alors essayez: p> ou, si une zone de texte peut être vide: p>
Utilisation de ce code, j'ai eu la même erreur. Je ne pense pas que la date est la question ici - j'ai déjà beaucoup de code allant bien entre mes deux ordinateurs impliquant des dates.
Assurez-vous de définir ces zones de texte non liées comme format de date. Ensuite, l'utilisation de l'exemple ci-dessus doit fonctionner. Si vous ne le faites pas, une date de date régionale sur l'ordinateur des utilisateurs vous gâtera. Le résultat est que vos questions fonctionnent sur tous les ordinateurs, quelles que soient les paramètres de la date de l'utilisateur. Ainsi, les paramètres de date PC de l'utilisateur peuvent gâcher les choses. Si vous forcer / définir les boîtes de texte sur le format de date, l'approche ci-dessus devrait fonctionner - même pour des ordinateurs avec des formats de date différents.
Merci pour l'aide. Cela n'a pas corrigé mon problème, mais Albert, votre solution Voici m'a aidé à trouver la vraie solution.
Comme suggéré par @erika dans les commentaires, l'utilisation de paramètres au lieu de concaténer les valeurs de formulaire dans votre relevé SQL évite toutes les questions découlant des différences régionales et protégerait également votre code de la possibilité de Injection SQL .
Considérez l'exemple suivant en fonction du contenu de votre code actuel: P>
With CurrentDb.CreateQueryDef _ ("", "select * from timecards t where t.employeeid = @id and t.workdate between @from and @to") .Parameters("@id") = empID .Parameters("@from") = DateValue(Me.Text23) .Parameters("@to") = DateValue(Me.Text25) With .OpenRecordset(dbOpenSnapshot) If Not .EOF Then .MoveFirst Do Until .EOF Debug.Print .Fields(0) .MoveNext Loop End If .Close End With End With
Merci un tas pour cet exemple, je vais certainement essayer cela.
S'il vous plaît essayez de cette façon, selon mon expérience, cela fonctionne mieux.
ComputerVerverSteher m'a pointé dans la bonne direction en me dirigeant À ce numéro . J'ai essayé de la base de données compacte et de réparation, qui a jeté une erreur sur mon deuxième ordinateur. Il s'avère qu'il y avait une référence manquante sur mon deuxième ordinateur, "Microsoft Windows Common Controls 6.0 (SP6)". Après cela, j'ai fait la fonction compacte et de réparation et je l'ai testé à nouveau et cela a fonctionné. Je ne peux pas dire que je sais pourquoi il ne s'est écrasé que sur la seule requête, mais le problème est parti maintenant. P>
Juste Utiliser des paramètres ! Ceci est probablement un problème avec différents formats de temps sur différents ordinateurs, si vous utilisez des paramètres, cela ne se produira pas.
Je viens de finir de lire votre message sur des paramètres, mais je suis sûr de ce que vous voulez que je fasse ici. Le format de temps est le même sur cet autre ordinateur (autant que je sache), et j'ai plusieurs autres requêtes / joints qui utilisent des dates sur les deux ordinateurs et ils travaillent tous sans aucun problème.
Après avoir vérifié votre profil, il semble que vous utilisiez un serveur SQL comme backend? Et certaines machines ont des pilotes ODBC différents (SQL Server 10.xxx). SQL-Server Newer que 2008 et vous utilisez
DateTime2 CODE> ON
WORKDATE CODE>? Pour rendre le problème parfait, certains utilisateurs utilisent le
MS Access Runtime 2010 Code> et vous n'êtes pas au courant de Stackoverflow. COM / A / 56640798/9439330 ?
Merci d'avoir posté ceci, j'ai suivi le lien et j'ai essayé ce que Paul Tiki a dit qu'il l'avait fait, et cela a effectivement résolu le problème. La solution consistait à apporter le fichier .Accdb sur le deuxième ordinateur, supprimer une référence cassée, réparer et compacter le code, puis une fois que cela a été exporté vers .ACCDE tout a bien fonctionné. Je vais tester les autres réponses soumises à cela ensuite, mais cela semble être ce qui n'allait pas.