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.
Access İle Hazırlanan Çok Satırlı Veriyi Belirli Sayılarda Metin Dosyalarına Kaydetme
Hazırladığım örnek uygulama ektedir. Uygulamadaki kodları kendinize göre uyarlayabilirsiniz.
(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?
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.
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.
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
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
kodu eklemelisiniz.
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.
(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
kodunun hemen altınaDoCmd.SetWarnings True
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.
(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
kodunun hemen altınaDoCmd.SetWarnings True
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?
Konuyu Okuyanlar: 2 Ziyaretçi