Metin Dosyasından şartlı Bilgi Alımı

Katılım
17 Mayıs 2005
Mesajlar
117
Excel Vers. ve Dili
2013 TR
2013 EN
Merhabalar,

Bir Paket Programdan Aktardığım TXt verilerini Access e aktararak özel Raporlamalar yapmak istiyorum,

TXT dosyasında Aktarmak istediğim dosyada 2 Farklı bilgi bulunmakta Bunlar hem Fişlerin Genel bilgileri hemde Haraket bilgileri,

Ben Öncelikle Fiş Bilgilerini bir Tabloya Fiş Bilgi tablosuna almak istiyorum, Fiş Bilgi Tablolarının TXT den satır başlangıcında B harfi bulunmakta bu doğrultuda aktarımda önce B ile başlayan satırları bir tabloya ardından ise H ile başlayanları ayrı bir tabloya almam gerekmekte,

Her ne kadar uğraştım ise bir türlü bu 2 kritere göre ayrımı yapamadım, bunu nasıl gerçekleştirebilirim acaba,


Dosya Ektedir,

Not B ile başlayan Satırların Aktarım Filtresi Veri al bölümünde kayıtlıdır,
 
Son düzenleme:
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Neden tabloları bölmek istiyorsunuz?

Aynı tabloya alıp sorgu ile ayırabilirsiniz.

İyi çalışmalar
 
Katılım
17 Mayıs 2005
Mesajlar
117
Excel Vers. ve Dili
2013 TR
2013 EN
aynı tabloya alamayışımın nedeni şuki txt yapısı aynı tabloya almaya müsait değil şöyleki

B ile başlayan özet alanda 1 Kolon uzunluğu 10 karakter ise ve Tablo uzunluğu 120 karakter ise

H ile başlayan tabloda Kolon değerleri farklı yani verilerin aynı kolona gelmesi ve tablo uzunluğu aynı değill,
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın serinci,

Kodla metin dosyasını açıp verileri almak mümkün ancak uğraşmak gerekir.

Bu aralar da pek uğraşacak zamanım yok.

Bir form hazırlanır, açılan bir kutu konur, verileri B ve H olur. Bir düğüme eklenir, seçilen harfe göre başlayan veriler ilgili tabloya aktarılabilir. Ancak tabi metin dosyasını inceleyip ona göre analiz yapmak gerekir ki bu da epey bir zaman alır.
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Daha önce bir uygulamada kullandığım kodları ve açıklamaları ekliyorum.

Kod:
Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fs, f
    Dim name, text, path As String
    Dim txtLen, adetYıldız, adetTarih 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 uygulamasının adını ve yolunu atıyoruz
 
    path = CurrentProject.path
    name = path & "\kaynak"
 
    '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
 
    'Eğer text değişkeninin ilk karakteri * ise
 
    If Mid(text, 1, 1) = "*" Then
 
            '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
            'Mid ile ilk sırada text metninin 2. karakterinden başlamak üzere 6 karakter seçiyoruz
            '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("Sıra") = Trim(Mid(text, 2, 6))
                rst("DoğumTarihi") = Trim(Mid(text, 8, 4))
                rst("KütükNo") = Trim(Mid(text, 13, 4))
                rst("TCKimlikNo") = Trim(Mid(text, 18, 11))
                rst("Durumu") = Trim(Mid(text, 30, 120))
                rst("Soyadı") = Trim(Mid(text, 151, 50))
                rst("Adı") = Trim(Mid(text, 202, 50))
                rst("DiğerAdı") = Trim(Mid(text, 253, 50))
                rst("BabaAdı") = Trim(Mid(text, 304, 50))
                rst("DiğerBabaAdı") = Trim(Mid(text, 355, 50))
                rst("AnaAdı") = Trim(Mid(text, 407, 50))
                rst("DiğerAnaAdı") = Trim(Mid(text, 457, 50))
                rst("Köy/Mahalle") = Trim(Mid(text, 509, 50))
                rst("AileSıraNo") = Trim(Mid(text, 560, 2))
                rst("CiiltNo") = Trim(Mid(text, 563, 12))
                rst("SayfaNo") = Trim(Mid(text, 576, 2))
                rst("NüfusKayıtİli") = Trim(Mid(text, 579, 50))
    End If
 
    Loop
 
    'f metin dosyasını kapatıyoruz
    f.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

Uygulamada * başlayan satırları okudum. En önemli ve zaman alan kısım ise Trim fonksiyonunun kullanıldığı bölüm.

Siz
name = path & "\kaynak" satırını

name = path & "\"gmfisler.TXT" olarak değiştirmeniz gerekiyor.



İyi çalışmalar
 
Katılım
17 Mayıs 2005
Mesajlar
117
Excel Vers. ve Dili
2013 TR
2013 EN
ilginiz için teşekkür ederim.

trim kısmının dosya özellikleri bende mevcut zaten sadece B ve H ayrımını yapmak mümkün olmuyordu Veri alözelliği kullanılınca, teşekkür ederim
 
Üst