ilişki önemli değil, önemli olan 2 nokta var
1.si eğer üst tabloda o isim yoksa ekleyemez
2.si ise aslında yine 1.yle ilgili mesela üst tabloda isim "maviş" ama pdf dosyasının ismi "MAVIS" ise sistem bunu 2 farklı isim olarak algılayacak ve tabloda "MAVIS" bulamadığından ekleyemeyecek
(20/03/2019, 16:06)haliliyas yazdı: [ -> ]ilişki önemli değil, önemli olan 2 nokta var
1.si eğer üst tabloda o isim yoksa ekleyemez
2.si ise aslında yine 1.yle ilgili mesela üst tabloda isim "maviş" ama pdf dosyasının ismi "MAVIS" ise sistem bunu 2 farklı isim olarak algılayacak ve tabloda "MAVIS" bulamadığından ekleyemeyecek
Kesinlikle size katılıyorum, çok doğru. İsmin aynı olmasına dikkat etmek zorundayım.
Peki, taşıma işlemini tamamladıktan sonra, _Tarananlar klasöründe birşey kalmışsa, Access'teyken "işlem tamamlandı" ya da "Eksik kalan uyuşmayan dosyaar var" şeklinde bir mesaj üretebilir miyiz? Mümkün mü?
büyük bir ihtimalle eklenebilir ama araştırmam lazım.
Hocam, şimdiye kadar vermiş olduğunuz destek için teşekkür ederim. Allah sizden razı olsun. Emeğiniz, bende büyük.
bir yerden aşağıdakine benzer bir denetleme buldum ama ne kadar etkilidir hangi hataları gösterir bilmiyorum.
bir tek
Set flr = fso.GetFolder(xKonum)
kalandosya = flr.Files.Count
If kalandosya = 0 Then MsgBox ("işlem tamam")
If kalandosya > 0 Then MsgBox (kalandosya & "Taşınamamıştır")
kısmındaki uyarıları ben ekledim klasörde dosya kalsa kalmasa da bildiriyor
butonun kaodunu aşağıdakiyle değiştirebilirsiniz
Dim fso As Object
Dim flr As Object
Dim MyFile As String
Dim txtDosyaAdi() As String
On Error GoTo HataYakala
Set fso = CreateObject("Scripting.FileSystemObject")
ReDim DirectoryListArray(1000)
MyFile = Dir$(CurrentProject.Path & "\Müşteriler\_Tarananlar\*.pdf")
Counter = 0
Do While MyFile <> ""
DirectoryListArray(Counter) = Replace(MyFile, ".pdf", "")
MyFile = Dir$
Counter = Counter + 1
Loop
For x = 0 To Counter - 1
xMyFile = DirectoryListArray(x)
txtDosyaAdi = Split(xMyFile, "_")
xKonum = CurrentProject.Path & "\Müşteriler\_Tarananlar\"
'________________Klasör yoksa olustur__________
Xhedef = CurrentProject.Path & "\Müşteriler\" & txtDosyaAdi(0)
If Dir(Xhedef, vbDirectory) = "" Then MkDir Xhedef
Xhedef = Xhedef & "\" & Replace(txtDosyaAdi(3), ".pdf", "")
If Dir(Xhedef, vbDirectory) = "" Then MkDir Xhedef
Xhedef = Xhedef & "\" & txtDosyaAdi(1)
If Dir(Xhedef, vbDirectory) = "" Then MkDir Xhedef
Xhedef = Xhedef & "\" & txtDosyaAdi(2)
If Dir(Xhedef, vbDirectory) = "" Then MkDir Xhedef
Xhedef = Xhedef & "\"
'________________Klasör yoksa olustur bitti__________
'_______________dosya var mı
n = 1
Do
DosyaAdi = Xhedef & xMyFile & "_" & Replace(Space$(3 - Len(n)), " ", "0") & n & ".pdf"
n = n + 1
Loop Until Dir(DosyaAdi) = ""
'_______________dosya var mı bitti
Name xKonum & xMyFile & ".pdf" As DosyaAdi
DoCmd.RunSQL "insert into 2_Dosya_Link_T (MUSTERI_ADI,DOSYA_LINK) values ('" & _
txtDosyaAdi(0) & "', '#" & DosyaAdi & "#');"
Next
'___Taşınmayan dosya kaldı mı
Set flr = fso.GetFolder(xKonum)
kalandosya = flr.Files.Count
If kalandosya = 0 Then MsgBox ("işlem tamam")
If kalandosya > 0 Then MsgBox (kalandosya & "Taşınamamıştır")
'___Taşınmayan dosya kaldı mı
HataYakala_Exit:
On Error Resume Next
Set flr = Nothing
Set fso = Nothing
Exit Sub
HataYakala:
If Err.Number = 70 Then
MsgBox "Aşağıdaki Sorunlara raslandı." & vbCrLf & vbCrLf & _
"Hata Kodu: " & Err.Number & vbCrLf & _
"Hata Kaynağı: Dosya taşıma " & vbCrLf & _
"Hata Tanımı: " & Err.Description, _
vbCritical, "An Error has Occured!"
Else
MsgBox "Aşağıdaki Sorunlara raslandı." & vbCrLf & vbCrLf & _
"Hata Kodu: " & Err.Number & vbCrLf & _
"Hata Tanımı: " & Err.Description, _
vbCritical, "An Error has Occured!"
End If
Resume HataYakala_Exit
Merhaba Hocam,
Kodu dediğiniz şekilde ekledim. Şayet, alakasız bir dosya var ise, ekteki hata mesajını verdi. En azından bu mesajı verse bile bir hata olduğunu anlayabilirim. Doğru bir şekilde taşıma işlemini yapınca da işlem tamam mesajını veriyor.
Taşıma işlemi tamalanmadığında, işlem tamamlanmadı mesajını bir şekilde getirtebilirsek süper olurdu.
1. Bu arada, dosya adımız;
MusteriAdi_Yil_Ay_BelgeTuru_BelgeSayisi şeklinde. Bu kuralı kendi içinde (yerlerini / sırasını) değiştirmem gerekirse, kod yine aynı şekilde çalışır mı?
ALI_2019_01_KDV_001.pdf
MusteriAdi_Yil_Ay_BelgeTuru_BelgeSayisi
ALI_2019_KDV_01_001.pdf
MusteriAdi_Yil_BelgeTuru_Ay_BelgeSayisi
2.
Access teki 2_Dosya_Link_T tablosunun içerisine aynı kayıttan atarsa uyarı verdirmem gerekiyor. Mükerrer olmaması adına. Aklıma, tablo ayarından alan özelliğini Sıralı: Evet-Yineleme Yok dersem kayıt atmayacağını biliyorum. ancak, bir mesajı nasıl döndürürüm sizin kodun içinde orayı bilmiyorum.
3. Taşıma esnasında aynı dosyadan varsa, yüksek ihtimal üzerine yazar diye düşünüyorum. Bu durum öncesi, dosya var, yine de taşınsın mı diye bir mesaj çıkarabilir miyiz?