yapılabilir ama şöyle bir durum var metin dosyalarınızda benzersiz bir alan yok o nedenle veri her alındığında klasörde eğer daha önce veri alınmış txt dosyası varsa aynı veriler yeniden eklenir.
zaten sorun orda çıkıyor hocam, muhtemelen kodlarla bişeyler yapılması lazım.
Bu benzer konuda 2. mesajda paylaştığım kod bu işlemde uyarlanabilir. txt dosylarının adlarında değişiklik yok ise ve veriler sonradan alt satırlara ekleniyorsa tablodaki kayıt sayısı satır no olarak belirlenerek txt dosyalarından aktarım yapılabilir. Yılsonu telaşları ve fail olmaya doğru giden bir proje nedeni ile malesef çok ciddi zaman sorumun var o yüzden detaylı inceleyip çalışma şansı bulamıyorum konu ile ilgili ama hem size hem Kıymetli @
berduş hocama yol gösterebilir.
1 - ekte de göreceğiniz gibi
Access tablonuzdaki
hisse adı alanını
metin/string yapıp, yeni bir ID (Otomatik sayı) alanı ekledim
yani önce tablo yapınızı değiştirmeniz gerekiyor
2 - aşağıdaki kod sadece
Access ile aynı dizinde bulunan
IMKBH'ANGEN.txt dosyası için
(ihtiyaç halinde belli bir klasördeki tüm txt dosyalarının seçilmesi sağlanabilir)
3 - aşağıdaki kod bir butona atanmalı
Sub txtVeriAl()
Dim s As Object
Fname$ = CurrentProject.Path & "\IMKBH'ANGEN.txt"
' Dim s As New adodb.stream
Set s = CreateObject("adodb.stream")
s.Charset = "utf-8"
s.Open
s.LoadFromFile (Fname$)
Dim txt As String
txt = s.readText
s.Close
dzStr = Split(txt, vbNewLine)
For x = LBound(dzStr) To UBound(dzStr)
If Len(dzStr(x) & "") = 0 Then GoTo SonStr
dzstn = Split(dzStr(x), "#")
xDeger = " """ & dzstn(0) & """"
xDeger = xDeger & ", '" & dzstn(1) & "'"
xDeger = xDeger & ", " & CLng(CDate(dzstn(2)))
xDeger = xDeger & ", " & Replace(CDbl(CDate(dzstn(3))), ",", ".")
xDeger = xDeger & ", " & dzstn(4)
xDeger = xDeger & ", " & Replace(dzstn(5), ",", ".")
xDeger = xDeger & ", '" & dzstn(6) & "'"
xDeger = xDeger & ", '" & dzstn(7) & "'"
'IMKBH'ANGEN#ALIS#2023.12.05#10:05:55#371#14,45#İlk Alım#0
strSQL = "INSERT INTO [Veritabanı] ("
strSQL = strSQL & " [Hisse Adı]"
strSQL = strSQL & ", [İşlem Türü]"
strSQL = strSQL & ", [Tarih]"
strSQL = strSQL & ", [Saat]"
strSQL = strSQL & ", [Adet]"
strSQL = strSQL & ", [Fiyat]"
strSQL = strSQL & ", [Açıklama]"
strSQL = strSQL & ", [Yöntem]"
strSQL = strSQL & ") VALUES ("
strSQL = strSQL & xDeger
strSQL = strSQL & ")"
CurrentDb.Execute strSQL
' DoCmd.RunSQL strSQL
SonStr:
Next x
KlnSQL = " (SELECT First(Veritabanı.ID)"
KlnSQL = KlnSQL & " FROM Veritabanı"
KlnSQL = KlnSQL & " GROUP BY [Hisse Adı] & [İşlem Türü] & [Tarih] & [Saat] & [Adet] & [Fiyat] & [Açıklama] & [Yöntem] & '')"
SilSQL = " delete * from [Veritabanı]"
SilSQL = SilSQL & " where [ID] Not IN (" & KlnSQL & ")"
CurrentDb.Execute SilSQL
' DoCmd.RunSQL SilSQL
End Sub
(07/12/2023, 00:04)atoykan yazdı: Bu benzer konuda 2. mesajda paylaştığım kod bu işlemde uyarlanabilir. txt dosylarının adlarında değişiklik yok ise ve veriler sonradan alt satırlara ekleniyorsa tablodaki kayıt sayısı satır no olarak belirlenerek txt dosyalarından aktarım yapılabilir. Yılsonu telaşları ve fail olmaya doğru giden bir proje nedeni ile malesef çok ciddi zaman sorumun var o yüzden detaylı inceleyip çalışma şansı bulamıyorum konu ile ilgili ama hem size hem Kıymetli @berduş hocama yol gösterebilir.
teşekkürler @
atoykan hocam
metin dosyalarının yapısı farklı olduğu için farklı bir yöntem kullandım