Puantaj programı ile ilgili olarak direk sütun belirleyerek excelle aktarım yapıyorum fakat kayıt sayısı değişken olduğu için bu ay 70 kişi varsa 3 ay sonra 90 kişiye çıkabilir veya eksilebilir. Direk sütun belirleyerek aktarmak bugünü kurtarsa da daha sonra sorun çıkaracak, tblimza ve buna bağlı frmimza olarak form oluşturdum. Resimde görülen örnek
Excel dosyasına son satırı baz alarak ilk kaydımı atıyorum.
Alıntı:Set Rs2 = CurrentDb.OpenRecordset("tblimza")
kodu ile yeni oluşturduğum tabloya tanımlama yaptım.
Alıntı:sonB = Cells(Rows.Count, "B").End(3).Row + 3
excl.Range("B2:B" & sonB).Find("", Range("B" & sonB), xlValues, xlByRows, xlPrevious).Select
kodu ile son satırı buldum. Altına
Alıntı:excl.Range("B" & sonB) = Rs2(0)
kodunu yazınca çalıştı, fakat
Alıntı:excl.Range("B" & sonB) = Rs2(2)
kodunu da ekleyince hiçbir veri getirmedi. Amacım son satırı bulup PUANTAJ programında yer alan kısaltmaları ekteki resimde görüldüğü gibi yazmak, hemen peşine tblimzadan verilerimi çekmek.
ne yapmaya çalıştığınızı hangi verileri getirmeye çalıştığınızı tam olarak anlamasam da kodunuz çalışıyor ama hep aynı hücreye veriyi yazıyor
siz sabit bir hücre seçmişsiniz veri sürekli excl.Range("B" & sonB) = Rs2(2) hücresine yazıldığı için en son hangi veri girildiyse o kalıyor
Kod:
excl.Range("B" & sonB) = Rs2(0)
excl.Range("B" & sonB + 1) = Rs2(2)
kodum bu şekilde yazmıyordu bu mesajı attığımda ama bugün sizin mesajınızdan sonra denedim iki veriyi getirmiş, cuma günü çalışmayan kod bugün nasıl çalıştı anlamadım ama teşekkürler cevabınız için
Sayın Berduş aynı kod şu an aktarmıyor, ilk aktar butonuna bastığımda aktarıyor ama bir seferliğe mahsus oluyor bu daha sonraki aktarma işlemlerinde çalışmıyor tek seferlik çalışan kod gibi
Yoğunluk nedeniyle örneğinizi çok detaylı inceleme fırsatım olmadı ancak;
sonB ile son satırı bulup ardından
excl.Range("B" & sonB) = Rs2(0)
excl.Range("B" & sonB + 1) = Rs2(2)
ile kayıtlarınızı aktarıyorsunuz.
Burada dikkat etmeniz gereken sonB ile bulduğunuz son satırdan itibaren sadece 1 satır veri kayıt ekliyorsanız sonB / sonB + 1 sorun çıkartmaz ancak aktardığınız veri birkaç satır ise her veri setinin akarımından önce sonB bulmanız gerekir. Zira kod ilerlerken sonB ataması yaptığında kaç satır veri eklerseniz ekleyin bir sonraki sonB+1 de bulduğu sonB üzerinden işlem yapıp üstüne yazar. Ayrı ayrı yazılması gerekli ise her veriseti aktarımından önce son satırı buldurmanız gerekli.
Kod:
excl.Range("C" & i + 11 & ":" & "D" & i + 11).MergeCells = True
excl.Range("C" & i + 11 & ":" & "D" & i + 11).Font.Bold = True
excl.Range("C" & i + 11) = "TANZİM EDEN"
excl.Range("C" & i + 14 & ":" & "D" & i + 14).MergeCells = True
excl.Range("C" & i + 14) = rs3(0)
excl.Range("C" & i + 15 & ":" & "D" & i + 15).MergeCells = True
excl.Range("C" & i + 15) = rs3(2)
sn berduş'un katkıları ile düzenlenen kodlarda tanımlanan i ile son satırı zaten alıyordum, ben ayrıca son satırı bulup üzerinden devam etmek istedim kod yazımındaki mantığı daha iyi anlayabilmek için olmadı. İlk yazdığımda çalışan kodlar daha sonra çalışmadı bende sayın berduş'un kodları üzerinden devam ettim.
şimdi personel izin veya görev giderse bunları aktarmak için uğraşıyorum puantaj içerisine tamamen bu siteye güvenerek girdim izin görev vs aktarma işine takıldığım/ yapamadığım yerde yardım geleceğine eminim. Teşekkür ederim ilgindiğiniz için