AccessTr.neT

Tam Versiyon: Açılan Kutudan Seçilene Göre Veri Getirme
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Merhaba,

Klasik veri getirme yönteminden biraz farklı bir durum olduğu için çok uğraştım ama yapamadım.

Ekteki dosyada standart_raporu_formu'nda bulunan açılan kutudan seçtiğim kritere göre alttaki liste kutusuna "standartlar_listesi_tablosu"ndan veri getirmek istiyorum ama veri tabanındaki alanda veriler aralarında virgül bulunarak tek satırda yazıyor. Bunların içinden süzüp bulduklarını getirmesi lazım. "Like" ile yapmayı denedim ama Vba kodunda uygulayamadım. 

Yardımcı olursanız sevinirim...
Önceki sorunuzda yaptığı uyarı bunun içindi. Çözülemeyecek bir sorun değil ancak yanlış yol. Olması gereken:

Normalizasyon ile yapılırsa :

Yetkinlikler için ayrı bir tablo olmalı. standartlar_listesi_tablosu tablosundaki Id değeri ile hangi yetkinlik varsa o değer kaydedilmeli.

Amelezasyon ile yapılırsa :
Ben genelde bu yöntemi kullanıyorum Fur standartlar_listesi_tablosu içinde yer yetkinlik için bir sayısal alan oluşturun. Alan boyutu Bayt, varsayılan değeri 0 olsun. Formda onay kutusu işaretlenince tablodaki değerini 1 yapacaksınız. Daha sonra bu sorudaki gibi arama yapacak olunca XX alanı = 1 olan diye aratmanız yeterli ve en önemlisi doğru yöntem olacaktır.

Muhtemelen siz lazım olan o alan değerine göre farklı Kalıp Hazırlama vs. gibi metin göstermek istiyorsunuz. Bu konuda sizi engelleyen bir şey yok. Nasıl ki onay kutularının Güncelleme sonrasında olayında IF kontrolü yaptınız aynısını metin/cümle gösteriminde de yapacaksınız.

Şu anki duruma göre çözüm zor değil aslında.

  1. Liste kutusunun Özellikler->Satır Kaynağı'ndaki yazanları silin.
  2. Satır Kaynak Türü Tablo/Sorgu olmalı
  3. Biçim sekmesindeki Sütun Sayısı alanına kaç sütun gösterecekseniz o sayıyı yazın.
  4. Sütun Genişliklerine kaç cm gözükmesini istediğinizi aralarına ; koyarak yazın. Üstteki maddede 5 olarak ayarladınız diyelim o zaman burada da 5 tane değer girmelisiniz.
  5. Sonuçları Göster butonunun Tıklanma olayına alttaki kodları yazmanız yeterlidir

    Me.standart_listesi.RowSource = "SELECT * FROM standartlar_listesi_tablosu WHERE yetkinlik LIKE '*" & Me.sec & "*'"
    Me.standart_listesi.Requery


Önce açılan kutudan bir yetkinlik seçin sonra Sonuçları Göster butonuna tıklayın.
(19/04/2017, 16:19)alpeki99 yazdı: [ -> ]Önceki sorunuzda yaptığı uyarı bunun içindi. Çözülemeyecek bir sorun değil ancak yanlış yol. Olması gereken:

Normalizasyon ile yapılırsa :

Yetkinlikler için ayrı bir tablo olmalı. standartlar_listesi_tablosu tablosundaki Id değeri ile hangi yetkinlik varsa o değer kaydedilmeli.

Amelezasyon ile yapılırsa :
Ben genelde bu yöntemi kullanıyorum Fur standartlar_listesi_tablosu içinde yer yetkinlik için bir sayısal alan oluşturun. Alan boyutu Bayt, varsayılan değeri 0 olsun. Formda onay kutusu işaretlenince tablodaki değerini 1 yapacaksınız. Daha sonra bu sorudaki gibi arama yapacak olunca XX alanı = 1 olan diye aratmanız yeterli ve en önemlisi doğru yöntem olacaktır.

Muhtemelen siz lazım olan o alan değerine göre farklı Kalıp Hazırlama vs. gibi metin göstermek istiyorsunuz. Bu konuda sizi engelleyen bir şey yok. Nasıl ki onay kutularının Güncelleme sonrasında olayında IF kontrolü yaptınız aynısını metin/cümle gösteriminde de yapacaksınız.

Şu anki duruma göre çözüm zor değil aslında.

  1. Liste kutusunun Özellikler->Satır Kaynağı'ndaki yazanları silin.
  2. Satır Kaynak Türü Tablo/Sorgu olmalı
  3. Biçim sekmesindeki Sütun Sayısı alanına kaç sütun gösterecekseniz o sayıyı yazın.
  4. Sütun Genişliklerine kaç cm gözükmesini istediğinizi aralarına ; koyarak yazın. Üstteki maddede 5 olarak ayarladınız diyelim o zaman burada da 5 tane değer girmelisiniz.
  5. Sonuçları Göster butonunun Tıklanma olayına alttaki kodları yazmanız yeterlidir

    Me.standart_listesi.RowSource = "SELECT * FROM standartlar_listesi_tablosu WHERE yetkinlik LIKE '*" & Me.sec & "*'"
    Me.standart_listesi.Requery


Önce açılan kutudan bir yetkinlik seçin sonra Sonuçları Göster butonuna tıklayın.

Tüm önerileriniz için çok teşekkürler. Dün ki uyarınız aklımda ama nasıl yapacağımı bilemedim. O yüzden kaydetme işlemini bu yöntemle yapmak zorunda kalmıştım. 

Bildiğim her yolu denedim. Verileri Like ile çekeceğimi de biliyorum ama nasıl yapacağımı bulamadım. Sayenizde LIKE '*" & Me.sec & "*'" komutu ile tam istediğim sonuca ulaştım...