Access VBA ile Tarih Formatı Değiştirmek

02/01/2016, 17:18

Akifff

Merhaba arkadaşlar, 

sistemim ms Sql ile bağlı tablolar aracılığı ile çalışıyor. Sql üzerinde tarih formatını değişrmeyi beceremedim. Bu sebeple formlar üzerindeki dd.mm.yyyy şeklinde olan tarih formatını Sql in istediği yyyy-mm-dd formatına çevirmek istedim. Bunun için bütün formlarda iki tarih alanı oluşturdum ve aşağıdaki resimde de görebileceğiniz gibi yaptım. 



Yalnız gerin görün ki aynı işlemi "pbif" adlı formda uyguladığım zaman "Type Mismatch" hatası alıyorum. Kodlamalar birebir aynı. Sorunun Sql üzerindeki tabloların data tipiden olacağını düşündüm. Fakat data tiplerini date olarakta yapsam veya nvchar olarak da yapsam hep aynı hatayı aldım. Diğer tablolar bütün datat tiplrinde çalıştı birtek bu çalışamadı. Yardımlarınızı bekliyorum. Teşekkürler.



T
02/01/2016, 19:35

ozanakkaya

Sorunlu olan formun kayıt kaynağındaki tabloda tarih alanları Tarih/Saat olarak belirlenmiş. Bunları Metin olarak değiştirirsen düzelir.

Ayrıca, nesne isimleri Access yerleşik ifadeler ile aynı olmamalı. format adında metin kutusu eklemişsin. Bunun adını mtn_format vs. şeklinde değiştir.
03/01/2016, 12:15

Akifff

Çok sağolun hocam, saatlerce denedim format isminden kaynaklanacağını hiç düşünmemiştim. Çok teşekkürler.
03/01/2016, 13:57

ozanakkaya

Aslında bazı modüllerdeki acıklamaları görünce incelemeyi bırakmıştım.
03/01/2016, 14:22

ozguryasin

ek olarak format değiştirme olayında bölüm bölüm alarakta yapabillirsiniz. Örneğin:

2015-11-26 tarihini

me.metinkutusu = mid(tarih,9,2) & "." & mid(tarih,6,2) & "." &  mid(tarih,1,4)  yazdığınızda = 26.11.2015  verecektir.

mid(tarih,9,2) yazan yerdeki tarih olayına metin kutusu veya değişken atayabilirsiniz.

mid(me.metinkutusuadi,9,2) tarzında.
----------------------------------------------

ayrıca bu durumu left, right ve mid 3 ünü kullanarakta yapabilirsiniz. 

2015-11-26 tarihini


me.metinkutusu = left(tarih,4) & "." & mid(tarih,6,2) & "." &  right(tarih,2)  yazdığınızda = 26.11.2015  verecektir.
03/01/2016, 14:49

ozguryasin

ayrıca şunuda belirteyim. deminki şekilde üst üste uğraşmak istemiyorsanız. convert fonksiyonunu da kullanabilirsiniz.

vba bölümüne

me.tariholanmetinkutusu = cdate(me.tarih) bu durum sorguda ve formdada gerçekleşiyor.

aslında bir çok yol ve yöntem var :S

şu tarih olayını bir türlü stabilduruma getirmediler. MsSql'de