ADO Recordset Type Tarih ve Saat

Katılım
29 Ocak 2024
Mesajlar
252
Excel Vers. ve Dili
Office 2016
Kıymetli Hocalarım merhabalar,

Excel ortamına Access DB' den SQL ile veri çekerken; tarih ve saat formatını ayırmak istiyorum.

Aşağıdaki script' te saat bilgisini de tarih formatında getiriyor.

Kod:
               Select Case rs(field).Type
                            Case adDate
                                '// Format date fields
                                FieldValue = Format(rs(field), "dd.mm.yyyy")


                          Case adBigInt
                                FieldValue = CLng(rs(field))
Access DB' de formatı saat olarak belirtilen alanların ("hh:mm") formatında getirmek için kodu nasıl düzenleyebiliriz ?

desteğiniz için şimdiden teşekkürler,
iyi Çalışmalar dilerim.
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,072
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Sorununuz, Access veritabanında sadece saat bilgisini tutması beklenen bir alanın (örneğin formatı hh:mm olan bir alanın) da adDate tipi olarak algılanması ve sizin dd.mm.yyyy formatıyla yalnızca tarih kısmını getirmenizden kaynaklanıyor. Saat bilgisi bu formatın içinde gizleniyor.

Veri tabanı alan adlarınıza (column names) güveniyorsanız, alan adına göre özel bir kontrol eklemek en güvenilir yoldur.
Eğer saat bilgisini tutan alanların adları hep "Saat" veya "GirisSaati" gibi belirgin bir kelime içeriyorsa, bu kelimeyi kontrol edebilirsiniz.

Kod:
Select Case rs(field).Type
                        Case adDate
                            Dim FieldName As String
                            FieldName = rs(field).Name
                            
                            If InStr(1, FieldName, "Saat", vbTextCompare) > 0 Then
                                
                                FieldValue = Format(rs(field), "hh:mm")
                            Else                               
                                FieldValue = Format(rs(field), "dd.mm.yyyy")
                            End If

                      Case adBigInt
                            FieldValue = CLng(rs(field))
                      ' ... diğer Case'ler
                   End Select
 
Katılım
29 Ocak 2024
Mesajlar
252
Excel Vers. ve Dili
Office 2016
Sorununuz, Access veritabanında sadece saat bilgisini tutması beklenen bir alanın (örneğin formatı hh:mm olan bir alanın) da adDate tipi olarak algılanması ve sizin dd.mm.yyyy formatıyla yalnızca tarih kısmını getirmenizden kaynaklanıyor. Saat bilgisi bu formatın içinde gizleniyor.

Veri tabanı alan adlarınıza (column names) güveniyorsanız, alan adına göre özel bir kontrol eklemek en güvenilir yoldur.
Eğer saat bilgisini tutan alanların adları hep "Saat" veya "GirisSaati" gibi belirgin bir kelime içeriyorsa, bu kelimeyi kontrol edebilirsiniz.

Kod:
Select Case rs(field).Type
                        Case adDate
                            Dim FieldName As String
                            FieldName = rs(field).Name
                           
                            If InStr(1, FieldName, "Saat", vbTextCompare) > 0 Then
                               
                                FieldValue = Format(rs(field), "hh:mm")
                            Else                              
                                FieldValue = Format(rs(field), "dd.mm.yyyy")
                            End If

                      Case adBigInt
                            FieldValue = CLng(rs(field))
                      ' ... diğer Case'ler
                   End Select
teşekkür ederim Hocam
iyi Çalışmalar.
 
Üst