Access İle Hazırlanan Çok Satırlı Veriyi Belirli Sayılarda Metin Dosyalarına Kaydetme

1 2 3 4
09/12/2017, 14:06

Onurr

Arkadaşlar merhaba.Forumda yeniyim ve Access ile Sql de kod yazarak veya başka bir yol ile 5000 -10000 verilik Access belgesini 100 er 100 er metin belgesi olarak kaydetmek istiyorum.Bunu nasıl yapacağımı tam olarak bilmiyorum.Yardımcı olabilecek kimse var mıdır?Teşekkür ederim.
09/12/2017, 17:26

ozanakkaya

Hazırladığım örnek uygulama ektedir. Uygulamadaki kodları kendinize göre uyarlayabilirsiniz.
11/12/2017, 10:12

Onurr

(09/12/2017, 17:26)ozanakkaya yazdı: Hazırladığım örnek uygulama ektedir. Uygulamadaki kodları kendinize göre uyarlayabilirsiniz.

Ozan Hocam merhaba.Emeğiniz için çok teşekkür ederim ancak anlamadığım birkaç yer var yardımcı olabilir misiniz?

        Veri1 = rs!LOGICALREF

        rs.Move 99 ( 99 lu olarak mı kayıt yapılıyor)
        
        Veri2 = rs!LOGICALREF (burada veri1,veri2 tablonun başlangıçtaki satırında bulunan verisi mi ?) 
        
        
        MsgBox (Veri1 & "-" & Veri2)
        DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tbl_gecici ( LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF ) SELECT LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF FROM tbl_test WHERE (((LOGICALREF) Between " & Veri1 & " And " & Veri2 & "));" (between komutu ilk veri ile son veri arasını mı nitelemeli?)
        
        DoCmd.OutputTo acOutputQuery, "srg_gecici", "MS-DOSText(*.txt)", CurrentProject.Path & "\" & Veri1 & "-" & Veri2 & "Veriler.txt", False, "", , acExportQualityPrint (burada 25 veri içeren metin belgeleri şeklinde bir klasöre kayıt yaptıramıyorum)
       
        DoCmd.RunSQL "DELETE * FROM tbl_gecici;"


gönderdiğim ekteki fotoğrafta, komut butonuna tıklayınca sadece 2-118 yazıyor bir kayıt işlemi yapmıyor hocam,nasıl bir yol izlemem gerekli?
11/12/2017, 17:44

ozanakkaya

Merhaba,
Butona tıkladığınızda döngü başlar.

Veri1 = rs!LOGICALREF

Bu kod tbl_test isimli tablodaki LOGICALREF alanı. Tabloda ilk satırdaki veri 2 olduğu için Veri1 değişkenine 2 değeri atanır.



Veri1'e değer atadıktan sonra rs.Move 99 kodu ile tablodaki 99. kayda gidilir. Verileri 100'erli aktarmak için buraya 99 yazıldı.

tablodaki 99. kayda gittikten sonra Veri2 = rs!LOGICALREF koduyla 99. kayıttaki veriyi yani 118 değerini Veri2 değişkenine atanır.
Tablodaki 100. satırdaki veri 118 olduğu için bu değer atandı. 

Bu şekilde Veri1 ve Veri2'ye değer belirlemiş olduk.

DoCmd.RunSQL "INSERT INTO tbl_gecici ( LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF ) SELECT LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF FROM tbl_test WHERE (((LOGICALREF) Between " & Veri1 & " And " & Veri2 & "));"

Bu kod ile, tbl_test tablosunda LOGICALREF alanı Veri1 ve Veri2 arasında yani 2 ve 118 arasında olan verileri tbl_gecici isimli tabloya aktardık.


DoCmd.OutputTo acOutputQuery, "srg_gecici", "MS-DOSText(*.txt)", CurrentProject.Path & "\" & Veri1 & "-" & Veri2 & "Veriler.txt", False, "", , acExportQualityPrint

Kodu ile de uygulamanın bulunduğu dizine geçerli veriye göre "2-118Veriler.txt" adında dosya oluşturduk ve srg_gecici isimli sorgudaki verileri bu dosyaya aktardık. Burada srg_gecici sorgusunun kullanılma sebebi aktarım yapılırken LOGICALREF'in sıralı olması.

Aktarma işi bittikten sonra 


 DoCmd.RunSQL "DELETE * FROM tbl_gecici;"

Kodu ile tbl_gecici isimli tablodaki verileri sildik.

Daha sonra sonraki döngüye geçti. Sonraki döngüde Veri1'in değeri 118, Veri2'nin değeri ise 100 kayıt sonrası olan 230 değeridir.

Butonu tıkladığınızda 2-118, 118 230,..... şeklindeki döngü yerine, son sayının bir fazlası olan 2-118, 119 231, 232-336..... şeklinde devam etmesini istiyorsanız 


DoCmd.SetWarnings True
 kodunun hemen altına 


rs.Move 1


kodu eklemelisiniz.
18/12/2017, 09:50

Onurr

(11/12/2017, 17:44)ozanakkaya yazdı: Merhaba,
Butona tıkladığınızda döngü başlar.

Veri1 = rs!LOGICALREF

Bu kod tbl_test isimli tablodaki LOGICALREF alanı. Tabloda ilk satırdaki veri 2 olduğu için Veri1 değişkenine 2 değeri atanır.



Veri1'e değer atadıktan sonra rs.Move 99 kodu ile tablodaki 99. kayda gidilir. Verileri 100'erli aktarmak için buraya 99 yazıldı.

tablodaki 99. kayda gittikten sonra Veri2 = rs!LOGICALREF koduyla 99. kayıttaki veriyi yani 118 değerini Veri2 değişkenine atanır.
Tablodaki 100. satırdaki veri 118 olduğu için bu değer atandı. 

Bu şekilde Veri1 ve Veri2'ye değer belirlemiş olduk.

DoCmd.RunSQL "INSERT INTO tbl_gecici ( LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF ) SELECT LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF FROM tbl_test WHERE (((LOGICALREF) Between " & Veri1 & " And " & Veri2 & "));"

Bu kod ile, tbl_test tablosunda LOGICALREF alanı Veri1 ve Veri2 arasında yani 2 ve 118 arasında olan verileri tbl_gecici isimli tabloya aktardık.


DoCmd.OutputTo acOutputQuery, "srg_gecici", "MS-DOSText(*.txt)", CurrentProject.Path & "\" & Veri1 & "-" & Veri2 & "Veriler.txt", False, "", , acExportQualityPrint

Kodu ile de uygulamanın bulunduğu dizine geçerli veriye göre "2-118Veriler.txt" adında dosya oluşturduk ve srg_gecici isimli sorgudaki verileri bu dosyaya aktardık. Burada srg_gecici sorgusunun kullanılma sebebi aktarım yapılırken LOGICALREF'in sıralı olması.

Aktarma işi bittikten sonra 


 DoCmd.RunSQL "DELETE * FROM tbl_gecici;"

Kodu ile tbl_gecici isimli tablodaki verileri sildik.

Daha sonra sonraki döngüye geçti. Sonraki döngüde Veri1'in değeri 118, Veri2'nin değeri ise 100 kayıt sonrası olan 230 değeridir.

Butonu tıkladığınızda 2-118, 118 230,..... şeklindeki döngü yerine, son sayının bir fazlası olan 2-118, 119 231, 232-336..... şeklinde devam etmesini istiyorsanız 


DoCmd.SetWarnings True
 kodunun hemen altına 


rs.Move 1


kodu eklemelisiniz.

ozanakkaya hocam çok teşekkür ederim.Ancak bakabildim foruma gerçekten çok güzel açıklamışsınız tane tane,umarım başka arkadaşlara da yardımcı olur bu konu.Elinize emeğinize sağlık hocam.
19/12/2017, 10:35

Onurr

(11/12/2017, 17:44)ozanakkaya yazdı: Merhaba,
Butona tıkladığınızda döngü başlar.

Veri1 = rs!LOGICALREF

Bu kod tbl_test isimli tablodaki LOGICALREF alanı. Tabloda ilk satırdaki veri 2 olduğu için Veri1 değişkenine 2 değeri atanır.



Veri1'e değer atadıktan sonra rs.Move 99 kodu ile tablodaki 99. kayda gidilir. Verileri 100'erli aktarmak için buraya 99 yazıldı.

tablodaki 99. kayda gittikten sonra Veri2 = rs!LOGICALREF koduyla 99. kayıttaki veriyi yani 118 değerini Veri2 değişkenine atanır.
Tablodaki 100. satırdaki veri 118 olduğu için bu değer atandı. 

Bu şekilde Veri1 ve Veri2'ye değer belirlemiş olduk.

DoCmd.RunSQL "INSERT INTO tbl_gecici ( LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF ) SELECT LOGICALREF, GRPCODE, TRCODE, FICHENO, TIME_, DOCODE, CLIENTREF FROM tbl_test WHERE (((LOGICALREF) Between " & Veri1 & " And " & Veri2 & "));"

Bu kod ile, tbl_test tablosunda LOGICALREF alanı Veri1 ve Veri2 arasında yani 2 ve 118 arasında olan verileri tbl_gecici isimli tabloya aktardık.


DoCmd.OutputTo acOutputQuery, "srg_gecici", "MS-DOSText(*.txt)", CurrentProject.Path & "\" & Veri1 & "-" & Veri2 & "Veriler.txt", False, "", , acExportQualityPrint

Kodu ile de uygulamanın bulunduğu dizine geçerli veriye göre "2-118Veriler.txt" adında dosya oluşturduk ve srg_gecici isimli sorgudaki verileri bu dosyaya aktardık. Burada srg_gecici sorgusunun kullanılma sebebi aktarım yapılırken LOGICALREF'in sıralı olması.

Aktarma işi bittikten sonra 


 DoCmd.RunSQL "DELETE * FROM tbl_gecici;"

Kodu ile tbl_gecici isimli tablodaki verileri sildik.

Daha sonra sonraki döngüye geçti. Sonraki döngüde Veri1'in değeri 118, Veri2'nin değeri ise 100 kayıt sonrası olan 230 değeridir.

Butonu tıkladığınızda 2-118, 118 230,..... şeklindeki döngü yerine, son sayının bir fazlası olan 2-118, 119 231, 232-336..... şeklinde devam etmesini istiyorsanız 


DoCmd.SetWarnings True
 kodunun hemen altına 


rs.Move 1


kodu eklemelisiniz.

Ozan hocam merhaba.Bir sorum olacak bu kod ile ilgili.Bu kod ile biz sizin dediğiniz gibi her buton a bastığımızda metin dosyası oluşuyor.Bu durumu otomatikleştiremez miyiz? Örneğin butona basacağım ve belli bir klasöre veriler bitene kadar 100 erli kayıt içeren metin dosyaları oluşturabilinir mi?
1 2 3 4