• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı dosyadan alınan verilerde tarih sorunu ?

Katılım
15 Ocak 2009
Mesajlar
257
Excel Vers. ve Dili
Türkçe 2010
S.a Arkadaşlar,

Aşağıda bir kod var kapalı dosyadan veri alabiliyorum (kodlar Evren hocama ait) burada yaşadığım sıkıntı aldığım kodlar üzerinde işlem yapıyorum fakat alınan kodlar içersinde F sütununda tarih kayıtlı tarih formatında almıyor bunu nasıl düzeltebiliriz ?

Verileri alırken F sütununu tarih formatına çevirebilirmiyiz ?





Sub Veri_getir()
Dim conn As Connection, rs As ADODB.Recordset, sat As Long
Dim yol As String, dosya As String
Sheets("-----").Select
yol = ThisWorkbook.Path & "\-----\"
dosya = "------.xls"
If yol & dosya = "" Then
MsgBox yol & dosya & " Bulunamadı." & vbLf & " İşlem iptal edildi.", vbCritical, "UYARI"
Exit Sub
End If
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open "Provider=microsoft.jet.oledb.4.0;data source=" & yol & dosya _
& ";extended properties=""excel 8.0;hdr=yes;"""
rs.Open "select * from [------$A1:AN65536] order by S_NO;", conn, adOpenKeyset, adLockReadOnly
sat = Cells(65536, "A").End(xlUp).Row + 1


Application.ScreenUpdating = False
Range("A2:AN65536").ClearContents
Range("A2").CopyFromRecordset rs
Application.ScreenUpdating = True
atla:
rs.Close: conn.Close
Set rs = Nothing: Set conn = Nothing
End Sub
 
S.a Arkadaşlar,

Aşağıda bir kod var kapalı dosyadan veri alabiliyorum (kodlar Evren hocama ait) burada yaşadığım sıkıntı aldığım kodlar üzerinde işlem yapıyorum fakat alınan kodlar içersinde F sütununda tarih kayıtlı tarih formatında almıyor bunu nasıl düzeltebiliriz ?

Verileri alırken F sütununu tarih formatına çevirebilirmiyiz ?





Sub Veri_getir()
Dim conn As Connection, rs As ADODB.Recordset, sat As Long
Dim yol As String, dosya As String
Sheets("-----").Select
yol = ThisWorkbook.Path & "\-----\"
dosya = "------.xls"
If yol & dosya = "" Then
MsgBox yol & dosya & " Bulunamadı." & vbLf & " İşlem iptal edildi.", vbCritical, "UYARI"
Exit Sub
End If
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open "Provider=microsoft.jet.oledb.4.0;data source=" & yol & dosya _
& ";extended properties=""excel 8.0;hdr=yes;"""
rs.Open "select * from [------$A1:AN65536] order by S_NO;", conn, adOpenKeyset, adLockReadOnly
sat = Cells(65536, "A").End(xlUp).Row + 1


Application.ScreenUpdating = False
Range("A2:AN65536").ClearContents
Range("A2").CopyFromRecordset rs
Application.ScreenUpdating = True
atla:
rs.Close: conn.Close
Set rs = Nothing: Set conn = Nothing
End Sub
Örnek dosyanızı eklermisiniz?
Hem vt'yi hemde asıl dosyayı.:cool:
 
Evren bey,
Dosyayı ekte göderiyorum

Tarih formatı olacak sütunlar J-K
 

Ekli dosyalar

Evren hocam yeni dosya gönderiyorum burada verileri aldıktan sonra Formu açarsanız kayıtların forma gelmediğini göreceksiniz.
Ama Tarihlerin üzerine çift tıklatınca veriler düzeliyor.
 

Ekli dosyalar

Yazılan kod Tarihleri tarih olarak değilde text olarak alıyor demişsiniz.
Pekiiiiiiiii,Veritabanınızdaki tarihleri kontrol ettinizmi?Acaba onlar tarihmi?
Önce bunları kontrol edip sonra kodda hata aramalısınız.Ama Soruyu soran arkadaşlar ise tam tersini yapıyorlar.
Ben veri tabanınızdaki tarih içeren sütunlara baktım.Hepside metin şeklinde alınmışlar.Dolayısı ile ado verileri alırken metin olarak alıyor.
Siz önce veri tabanınıza verileri tarih olarak atın ondan sonra kodda bir düzeltme lazım olursa yaparız.:cool:
 
Hocam öncelikle kodda hata olduğunu söylemiyorum özellikle kodları sizin yazdığınızı söyledim çünkü hata olmadığını ve olmayacağını belirtmek için.
Sadece bir sıkıntı olduğunu ve bunu nasıl aşarız diye yazdım.

Kayıt yaptığım kodların tarih kısımları aşağıda onları tarih formatında kayıt yapıyorum.



Kayit.Fields(9) = CDate(TextBox20)
Kayit.Fields(10) = CDate(TextBox21)
 
Hocam öncelikle kodda hata olduğunu söylemiyorum özellikle kodları sizin yazdığınızı söyledim çünkü hata olmadığını ve olmayacağını belirtmek için.
Sadece bir sıkıntı olduğunu ve bunu nasıl aşarız diye yazdım.

Kayıt yaptığım kodların tarih kısımları aşağıda onları tarih formatında kayıt yapıyorum.



Kayit.Fields(9) = CDate(TextBox20)
Kayit.Fields(10) = CDate(TextBox21)
Anladım.
Ben bu excele ado ile kayıt konusunda daha önceden uyarmıştım.
Excele ado ile kayıt girerken ado bütün alanları metin olarak tanıyor.
Exceli mdb tabloları gibi alanları belirtemiyoruz.
Excel çorba olduğu için bir sütuna sayısal değerde girilebiliyor,metinde girielebiliyor.
Oysa gerçek veri tabanlarında bu olamaz.
Dağa önceki denemelrimde gördüm ki eğer bir alana daha önceden ilk kayıt sayı olarak girilmişse(Tabii ki elle girlmesi lazım.Zira direk ilk kayıt metin olarak algılanıyor.) o sütunu(alanı sayı olarak görüyor ado.Tarih girilmişse tarih görüyor)
Excele Ado ile veri girmenin bu sakıncaları var.Ayrıca tarih olarak kabul ettiyse o alana başka sayı veya metin girerseniz onu görmüyor.
Bence vt olarak excel değilde en azından mdb(access dosyası kullanın).
ADO ile excel için en uygun işlem veri alma işlemi bence.Diğer durumlar uymuyor.:cool:
 
Hocam bilgiler için çok teşekkür ederim
Sanırım bundan sonra mdb(access) kullanıcam.
Bu tarz sıkıntıları yaşamamak için.
 
Kapalı olan excel dosyasını kod ile açıp verileri girdikten sonra kod ile kaydedip kapatabilirsiniz.Bu durumda hedef dosyanızda çok veri olduğunda çok yavaş çalışacaktır.
Madem ki ado kullanacaksınız veri tabanı için en azından mdb(access dosyası) kullanın derim.EXCEL-VBA ile ado - sql kullanarak mdb dosyasında her türlü işlemi yapabilirsiniz.Hem daha hızlı çalışır.
İsterseniz sql server de kullanabilirsiniz.ms sql compact 3.5 diye nette ve forumda arama yapabilirsiniz.Ücretsizdir.:cool:
 
Geri
Üst