• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Vba kodu yanyana yazma

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Çözümler
9
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
RS("TC_No") = TC_No
RS("Ad") = Ad
RS("Tel_No") = Tel_No
RS("kan") = Kan
RS("boy") = boy
RS("kilo") = kilo
RS("ten") = Ten
RS("goz") = goz
RS("sac") = sac

Bu şekilde 100 e yakın alan var. Bunları alt alta yazınca iş çığrından çıkıyor yan yana yazabilmenin yolu nedir acaba.
Ya da bunları kısaltabilecek bir yol var mıdır? Yardımlar için teşekkürler.
 
Sayın halily Yanlış görmedim ise VT ye kayıt yapılmıyor, kayıtlar okunup, forma yazılıyor.
Kayıt kodu da var hocam. Dosyanın içeriğini boşaltıp göndermiştim.
Değerli hocalarım. Bu kodlar bana ait değil. Nette bulduğum bir projeyi uyarladım. Kod devşirdim. TAkıldığım yerde forumdan yardım alıyorum.
Bu nedenle yazdığınız kodları şu satırları silip şunların yerine kullan gibi yönlendirme yapabilirseniz çok makbule geçecek. Deneme yanılma ile çok vakit kaybediyorum.
 
mesela ekle ve güncelle düğmelerinde doğrudan recordsete veri atama var
 
deneme verisiyle ekledim hocalarım.
 

Ekli dosyalar

  • PTS.zip
    603.8 KB · Gösterim: 2
aşağıdaki kodlar RS.Open satırının altına yazılabilir
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yada
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
kodların açıklamasını yapalım o zaman:
RS.Open kodu ile recordset açıldıktan sonra
1 - For Each fld In RS.Fields: kodu ile recordsetteki'deki tüm alanlar taranır rs.fields recordsetteik alanlar demektir , for each her biri anlamına gelir fld ise size kalmış bir değişken adıdır isterseniz başka adda kullanabilirsiniz
2 - RS(fld.Name) = Controls(fld.Name): fld.Name alanın adıdır diyelim ki TC_No alanındasınız bu durumda
RS("TC_No") = Controls(TC_No ) olur yani alan adı TC_No olan alana, nesne adı (metin kutusu yada açılır kutu adı) TC_No olan metin kutusunun değeri atanır.
3 - Next fld : sonraki alana geçilir

diğer kodun mantığı da aşağı yukarı aynıdır ilkinde doğrudan alanlar içinde dolaşılırken 2. de alan sırasına göre dolaşılır
1 - for x=0 to rs.fields.count-1 : recordsette alan sıralama 0dan başlar o nedenle ilk alanın sırası 0 son alanın sırası ise alan sayısının 1 eksiğidir
2 - rs(x)=controls(rs(x).name) : x. sıradaki alan değerini aynı alan adına sahip nesneden alıyor diyelim ki 0. alanın adı ID, budurumda rs(0) değerini adı rs(x).name ile aynı yani ID olan metin kutusundan alır
 
Dosyanızı çalıştıramadım, benim ofis versiyonum eski, halily kayıt kodunu uyarlıyor, okuma kodunda tam tersini yapacaksınız.
 
aşağıdaki kodlar RS.Open satırının altına yazılabilir
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yada
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
kodların açıklamasını yapalım o zaman:
RS.Open kodu ile recordset açıldıktan sonra
1 - For Each fld In RS.Fields: kodu ile recordsetteki'deki tüm alanlar taranır rs.fields recordsetteik alanlar demektir , for each her biri anlamına gelir fld ise size kalmış bir değişken adıdır isterseniz başka adda kullanabilirsiniz
2 - RS(fld.Name) = Controls(fld.Name): fld.Name alanın adıdır diyelim ki TC_No alanındasınız bu durumda
RS("TC_No") = Controls(TC_No ) olur yani alan adı TC_No olan alana, nesne adı (metin kutusu yada açılır kutu adı) TC_No olan metin kutusunun değeri atanır.
3 - Next fld : sonraki alana geçilir

diğer kodun mantığı da aşağı yukarı aynıdır ilkinde doğrudan alanlar içinde dolaşılırken 2. de alan sırasına göre dolaşılır
1 - for x=0 to rs.fields.count-1 : recordsette alan sıralama 0dan başlar o nedenle ilk alanın sırası 0 son alanın sırası ise alan sayısının 1 eksiğidir
2 - rs(x)=controls(rs(x).name) : x. sıradaki alan değerini aynı alan adına sahip nesneden alıyor diyelim ki 0. alanın adı ID, budurumda rs(0) değerini adı rs(x).name ile aynı yani ID olan metin kutusundan alır
kaydederken kodları denedim sorunsuzca kaydedildi hocam. Accesten kayıt sil bul değiştir için bu kodları kullanabiliyorum sanırım.
 
Silme dışında kullanabilirsiniz
Silme için daha basit bir kod var
Şu an bilgisayar olmadığından kodunuz aklımda değil ama diyelim ki con adında bir connection/bağlantı kullanıyorsanız
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
yazmaniz yeterli recordset açmanıza bile gerek yok.
aslinda con.execute yontemiyle ekleme silme ve güncelleme de yapılabilir ama alan türüne göre tırnak ekleme gibi başka ayrıntıları da kontrol etmeniz gerektiğinden şimdilik recordset ile yapma işlemi daha pratik
 
Son düzenleme:
Yalniz bulma işleminden neyi kast ettiğinizi tam anlamadım
Bu yöntem sadece değer atama ve değer alma işlemleri için pratik
 
Temizleme kısmı da aşağıdaki gibi olabilir.
Commandbutton1-2-3 için de ilgili kısma temizle yazarak kısaltılabilir.
Kod:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Yalniz bulma işleminden neyi kast ettiğinizi tam anlamadım
Bu yöntem sadece değer atama ve değer alma işlemleri için pratik
Hocam form üzerinde butonlar aracılığıyla ekle, veri çağır, güncelle ve sildirme işlemi yaptırıyorum.
Sizin verdiğiniz kodu ekle için kullandım. Sonuç olumlu. Bu kodunuzu güncelle ve kaydı sil komutları için kullanabilir miyim. Şimdi onları uyarlayacağım yapabilirsem.
 
Güzel oldu ama veri kaydederken aynı sicil kayıtlıysa kaydetmeyi engellemiştik şimdi o denetimi silmişiz. Hem userformda hem veritabanında vardı o denetim nasıl başardım anlamadım.
Adminim sizin kodu uyarlayamadım sanırım. Temizleme yapmadı.
 
Deneyin.
 

Ekli dosyalar

  • FORM.xlsm
    92.9 KB · Gösterim: 2
Eğer accessteki sütun isimleri ile formdaki kontrol isimlerini birebir aynı isimle yaparsanız şu şekilde çok hızlı ve kod kalabalığı olmadan çalışır.
Önce dosyanızın yedeğini alın. RS.Open kodundan sonra şunları yazın .


C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.


Bunun çalışması için sütun başlıklarını listeleyen şu kodu formda boş bir yere ekleyin.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Deneyip dönüş yapacağım hocalarım. Zahmet verdik çok teşekkürler.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Geri
Üst