VBA kullanarak MS Access'teki tarihlerle hesaplıyorum. Bu, aynı formda iki tarihim olduğunda (örneğin 2016-01-21), ancak bir dizeyi şu şekilde değiştirmem gerektiğinde iyi olmaz: 20160121 -> 2016-01-21.Uyumsuz türleri CDate() kullanılarak Access VBA'da
Bu benim yapmaya çalıştığım şey bu:
Dim sYear As String, sMonth As String, sDay As String, sDate As String
sYear = Left("20160121", 4)
sMonth = Mid("20160121", 5, 2)
sDay = Mid("20160121", 7, 2)
sDate = sYear & "-" & sMonth & "-" & sDay
MsgBox CDate(sDate)
Bu Hata 13 Uyumsuz türlerini döndürür.
Bu olsa çalışır:
MsgBox CDate("2016-01-21")
Neden benim yöntemimle çalışır?
Yukarıdaki kod çalışır. Benim tahminim "20160121" 'aslında sabit bir değer değil, Null içerebilen veritabanı alanı mı? Eğer öyleyse, [Nz() işlevini kullanın] (https://msdn.microsoft.com/en-us/library/office/aa172237%28v=office.11%29.aspx?f=255&MSPPError=- 2147217396). – Tomalak
Haklısınız, işe yarıyor ama ... "20160121" yerine, bir metin kutusundan aldığım bir değişken var. Left() ve cDate() çalışmalarında kullanabiliyorum, ancak bunu Mid() 'de kullandığımda bunu yapmıyor ... Bunu daha açık hale getiriyor mu? – PoorCadaver
Hayır, aslında, maalesef. Kodunuzda bir kesme noktası ayarlayın, satır satır boyunca ilerleyin, hatanın oluştuğu satırın tamamını ve bu noktada tüm değişken değerleri not edin. Bu basit bir gözetim olmalı ve gerçek bir sorun değil. – Tomalak