تاريخ الوصول المسألة - dd/mm تلقائيا تغير إلى mm/dd
-
06-07-2019 - |
سؤال
لقد مشفرة شيء باستخدام تاريخ البيان في Access VBA.كان يعمل بشكل جيد حتى بداية هذا الشهر, ولكن الآن أرى أن التاريخ قد تتغير تلقائيا شكل من dd/mm/yyyy
إلى mm/dd/yyyy
.أحد واجه نفس المشكلة ؟
المحلول
الوصول الافتراضية SQL تنسيق التاريخ ، بغض النظر عن اللغة ، mm/dd/yyyy.إذا كنت تستخدم تنسيق تاريخ غير صالح ، وسوف 'مفيد' محاولة تحويل ذلك إلى تاريخ صحيح بالنسبة لك.
لذا ، إذا كنت تستخدم '30/09/2008', وسوف تتعرف كنت تستخدم dd/mm/yyyy ، وتحويله بشكل مناسب.ومع ذلك ، فإن قيمة مثل '10/01/2008' صالح mm/dd/yyyy قيمة لتبدأ, لذلك سوف لا يكون تحويلها و تخزينها بشكل غير صحيح في حال كنت في الواقع يعني dd/mm/yyyy....
الحل هو دائما تحويل قيم التاريخ إلى mm/dd/yyyy السلسلة قبل استخدامها في الوصول إلى البيانات SQL.عليك أن تكون حذرا بعض الشيء هنا ، باستخدام VBA تنسيق التاريخ الأقنعة قد لا تعمل تماما كما كنت تتوقع في غير الولايات المتحدة لغات (مثلا ، 'مفيد' تفسير "mm/dd/yyyy" كما "مترجمة تنسيق التاريخ القصير") ، لذا يرجى اختبار بعناية باستخدام جهاز معين وصول/VBA الإصدار.
نصائح أخرى
والوصول يتطلب موعد لا لبس فيها. ويوصى عموما التي تستخدمها س س س س / شهر / يوم، بغض النظر عن اللغة. على سبيل المثال:
strSQL="SELECT SomeDate FROM tblT WHERE SomeDate=#" & Format(DateVar, "yyyy/mm/dd") & "#"
وحاول هذا الرمز:
stLinkCriteria = "[ProjectDate] Between #" & Format(CDate(Me![txtDateFrom]), "mm/dd/yyyy") & "# And #" & Format(CDate(Me![txtDateTo]), "mm/dd/yyyy") & "#"
وكان يعمل بالنسبة لي.
ولقد كانت ناجحة جدا باستخدام الدالة DATEVALUE (). عند الحصول على مواعيد من الضوابط غير منضم على ما يبدو لتكون ذكية بما يكفي لتفسير شكل "يوم / شهر / سنة" بشكل صحيح. وهكذا، استعلام SQL جيت مثل
و"Select * from DateTable where StartDate = datevalue(" & me!TxtStartDate & ");"
ويبدو أن العمل في كل مرة.
وهذا يعمل:
sentenciaSQL = "UPDATE Numeraciones " & _
"SET Valor = " & Valor & ", " & _
"Fecha = #" & **Format(fecha,"mm/dd/yyyy HH:nn:ss") & "#, " &** _
"Id_Usuario = " & Id_Usuario & _
" WHERE Nombre = '" & Nombre & "'"