Txt dosyasından veri alma

Katılım
19 Mayıs 2007
Mesajlar
46
Excel Vers. ve Dili
tamersyilmaz
Sayfamızda bu konu ile ilgili çok örnek var ama ben bir türlü kavrayamadım. not defterinde şı şekilde olan verileri access proğramıma kod yardımıyla nasıl alabilirim.

Örnek not defteri :

010201001015;25
010205978564;63

Şeklindeki txt dosyasındaki verileri nasıl accessE çağırabilirim.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın tamersyilmaz,

Aşağıdaki yordam işinizi görür:

Kod:
Public Sub VeriEkle()
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fs, f
    Dim name, text, path As String
    Dim txtLen As Long
    Dim cnn As New ADODB.Connection
    Dim rst As New Recordset
    
    'path a bulunduğumuz vt nın yolunu atıyoruz,
    'name e açılacak olan text dosyamızın adını ve yolunu atıyoruz
    
    path = CurrentProject.path
    name = path & "\kaynak.txt"
    
    'fs ye dosya sisteminin bir nesnesi olarak ayarlıyoruz
    'f ye metin dosyası olarak name değişkenine atadığımız dosyayı okumak üzere(1) açıyoruz
    'yukarıdaki sabitlere yaptığımız tanımlar üzere
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(name, 1, -2)
    
    'cnn yi mevcut vt bağlantısı olarak ayarlıyoruz
    'rst olarak cnn bağlantısında bulunan tblAlınan Veriler tablosunu ekleme yapmak üzere
    'açıyoruz.
    
    Set cnn = CurrentProject.Connection
    rst.Open "tblAlınanVeriler", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    
    'f dosyasının sonu gelene kadar çevrimi çalıştırıyoruz(bugün AtEndofStream i arıyordum)
    
    Do While Not f.AtEndofStream
    
    'text değişkenine f deki satırları okuyup metni atamasını sağlıyoruz
    
    text = f.readLine
    
               
            'rst kayıt kümesine yeni bir kayıt ekliyoruz parantez içine
            '0 başlayarak alan indexlerini veya adlarını yazabiliyoruz
            'Trim le aldığımız metnin sağ ve solundaki boşlukları temizliyoruz
           
            'Burada dikkat edilecek konu, metin dosyası yazılırken kayıtlar arasında
            'boşluk bırakıldı bunları da göz önüne almak gerekiyor. Ben kaynak dosyasını notpad de açıp
            'oradan sayarak buldum sayıları. Ve adım adım ilerliyerek
            'İleti kutusuyla verileri teker teker kontrol ettim
            
            rst.AddNew
                rst("veri") = Trim(text)
               
    End If
   
    Loop
    
    'f metin dosyasını kapatıyoruz
    f.Close
    'veritabanını kapatıyoruz
    rst.Close
    'İlerde hataların önüne geçmek için mutlaka işin sonunda
    'tüm ayarları hiçbirşey ile eşitlememiz gerekiyor
    
    Set f = Nothing
    Set fs = Nothing
    Set rst = Nothing
    Set cnn = Nothing
    
    
End Sub
Sorunuz var ise cevaplandırabilirim. Satır satır okunan veriler mevcut uygulamanın tblAlınanVeriler tablosu içinde veri alanına kaydediliyorlar.

İyi çalışmalar
 
Katılım
19 Mayıs 2007
Mesajlar
46
Excel Vers. ve Dili
tamersyilmaz
Modalı hocam çok teşekkür ederim şimdi yordaımınızla çalışacağım mutlaka aklıma takılan sorular olacak ve size geri döneceğim ilgi ve alakanız için yine çok teşekkür ederim.
 
Katılım
19 Mayıs 2007
Mesajlar
46
Excel Vers. ve Dili
tamersyilmaz
Sorularım

Modalı hocam öncelikle verdiğiniz yordamı bir form yaratarak bir buton üzerinde tıklandığında özelliğine yerleştirdim ve ilk önce şu hatayı verdi;

- End if without block if

Bende bu hatayı veren end if kısmını sildim sonra ise ;

İşleme bu koşullarda izin verilmiyor hatası verdi visula basic kısmında ise

rst.Close işaretliydi onuda sildim sonunda yordam çalışmaya başladı ama tam istediğim gibi değil.

Ben şöyle bir şey istiyorum aldığımız txt dosyasındaki

0022454545;45 diye satır noktalı virgülden önceki satır ürün kodu sonraki rakam ise adeti verecek.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Ben sadece veriyi aldım. Nasıl işleneceğini nereden bilebilirim.

Metin işleme fonksiyonları ile mümkün. Kod hep 12 karakter mi? Bir örnek ekleyin, üstünde çalışayım.

İyi çalışmalar
 
Katılım
19 Mayıs 2007
Mesajlar
46
Excel Vers. ve Dili
tamersyilmaz
Örnek Ekte...

Sayın Modalı hocam örnegi ekledim sizden ricam şu olacak ; hem tabloya hemde txt dosyasına kullanmış olduğum kod örneklerini yazdım. Kod olmadan Access ten dış veri al diyerek txt dosyasını şeçtikten sonra sınırlandırılmış -virgül veya sekme gibi karakter alanları aırır özelliği seçili kısmından noktalı virgül seçilmiş alanını seçerek istediğim tabloya ekleyebiliyorum. İşte ben bu özelliği kod yardımıyla yapmak istiyorum. Çünkü formumda bir buton koyarak veri almak istiyorum.
 

Ekli dosyalar

Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın tameryılmaz,

Kodları şu şekilde değiştirdim.

Kod:
Private Sub Komut0_Click()
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fs, f
    Dim name, text, path As String
    Dim txtLen As Long
    Dim cnn As New ADODB.Connection
    Dim rst As New Recordset
    
    'path a bulunduğumuz vt nın yolunu atıyoruz,
    'name e açılacak olan text dosyamızın adını ve yolunu atıyoruz
    
    path = CurrentProject.path
    name = path & "\kaynak.txt"
    
    'fs ye dosya sisteminin bir nesnesi olarak ayarlıyoruz
    'f ye metin dosyası olarak name değişkenine atadığımız dosyayı okumak üzere(1) açıyoruz
    'yukarıdaki sabitlere yaptığımız tanımlar üzere
    
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(name, 1, -2)
    
    'cnn yi mevcut vt bağlantısı olarak ayarlıyoruz
    'rst olarak cnn bağlantısında bulunan tblAlınan Veriler tablosunu ekleme yapmak üzere
    'açıyoruz.
    
    Set cnn = CurrentProject.Connection
    rst.Open "tblAlınanVeriler", cnn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
    
    'f dosyasının sonu gelene kadar çevrimi çalıştırıyoruz(bugün AtEndofStream i arıyordum)
    
    Do While Not f.AtEndofStream
    
    'text değişkenine f deki satırları okuyup metni atamasını sağlıyoruz
    
    text = f.readLine
    
               
            'rst kayıt kümesine yeni bir kayıt ekliyoruz parantez içine
            '0 başlayarak alan indexlerini veya adlarını yazabiliyoruz
            'Trim le aldığımız metnin sağ ve solundaki boşlukları temizliyoruz
           
           [COLOR=Red] text = Trim(text)
            
            '; karakterinin dizide kaçıncı karakter olduğunu buldum
            ayrac = InStr(1, text, ";", 1)
            
            'dizinin başından ayraçın bir önceki karakterine kadar olan kısmı aldım
            kod = Left(text, (ayrac - 1))
            
            'dizinin sağından dizinin boyutu - ayraca kadar olan kısmı aldım
            adet = Right(text, Len(text) - (ayrac))[/COLOR]
            
           
            rst.AddNew
                rst("Kod") = kod
                rst("Miktar") = CLng(adet)
            [COLOR=Red]rst.Update[/COLOR]
    
   
    Loop
    
    'f metin dosyasını kapatıyoruz
    f.Close
    'veritabanını kapatıyoruz
    'İlerde hataların önüne geçmek için mutlaka işin sonunda
    'tüm ayarları hiçbirşey ile eşitlememiz gerekiyor
    
    Set f = Nothing
    Set fs = Nothing
    Set rst = Nothing
    Set cnn = Nothing
    
    
End Sub
rst.Update i ilk kodlarda yazmayı unutmuşum. yazılmaz ise son veri tabloya kaydedilmiyor.


İyi çalışmalar
 
Katılım
19 Mayıs 2007
Mesajlar
46
Excel Vers. ve Dili
tamersyilmaz
Teşekkürler..

Sayın Modalı hocam çok teşekkür ederim.Ellerinize sağlık ilerki günlerde de bu konunun devamı ile sizi rahatsız edebilirim tabi izniniz olursa. Saygılarımla.

Tamer ŞAHİNYILMAZ
GIDA MÜHENDİSİ
 
Üst