Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

access__açılan kutu listesinde yoksa

Konu, 'Veritabanları' kısmında realperest tarafından paylaşıldı.

  1. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    Merhaba,

    Formumun üzerinde bir açılan kutu var ve bu açılan kutu başka bir tablonun stununa bağlı kullanıcı bunlardan birini seçerek kayda alıyor ancak eğer kullanıcı bu seçeneklerden başka bir tane seçmek ve o listeye eklemek istiyorsa bu durumda ne gibi bir kod yazmalıyım.
    Not : Şu anda eğer açılan kutudan yoksa o kutuyu çift tıklattırıp bu çift tıklama olayına o tabloya bağlı bir form açtırıp o listeye eklemesini sağlıyorum ama hiç böyle formlar falan açtırmadan,
    Kullanıcının girdiği yeni bilgi seçenekler içinde yoksa kullanıcıya "BU YENİ SEÇENEĞİ SEÇENEK LİSTENİZE EKLEYEYİM Mİ ?" gibi bir soru sorduktan sonra cevap EVET ise otomatikman o tabloyu bulup o tabloya bu seçeneği bir kayıt olarak gönderemezmi ?
     
  2. acemi

    acemi Misafir

    Yapilabilir. Oncelikle acilan kutunun "liste ile sinirli" (limit to list) ozelligini "No" yapman gerekir. Daha sonra ayni kutunun guncelleme sonrasinda (after update) olayina kod yazacaksin.

    Kodda, yazilan seyin ilgili tabloda olup olmadigi kontrol edilecek. (DCount fonksiyonunu kullanabilirsin). Eger bu veri, ilgili tabloda yoksa kullaniciya "ekleyeyim mi" diye soracak. Eger "ekle" derse "INSERT INTO.." kullanilarak tabloya bu bilgi eklenecek.
     
  3. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    bu konuda biraz daha detay verebilirmisiniz

    daha önce ko komutları içeren bir kod yazmamıştım

    kalıplarını falan bilmiyorum

    sağolun
     
  4. acemi

    acemi Misafir

    Oncelikle hangi yontemi kullanmak istedigini soyle, ona gore ornek kod yazayim. Ornegin soyle birsey, uygulaman icin uygun olur mu?

    Yanyana duram iki tane list box olacak. Birinci list box'da (bu sol tarafta duruyor) butun secenekler olacak ve ikinci list box (bu da sag tarafta duruyor) baslangicta bos olacak.

    Seceneklerin oldugu list box'taki her secenege cift tikladiginda, secim sag taraftaki bos list box'a gidecek, asil listeden silinecek. Boylece sag taraftaki list box'a sectiklerini dolduracaksan.

    Tabii hatali birsey sectiginde, sagdaki list box'tan hatali secime cift tiklayarak, secimi soldaki list box'a geri gonderebileceksin.

    Sag tarafta bulunan, sectigin verilerin yer aldigi list box dolunca "bunlari tabloya ekle" butonuna basacaksin ve bu secimlere gore tabloya kayitlar eklenecek.
     
  5. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    Yok yok yapmak istediğim öyle birşey değil.

    Şimdi bi adres tablom var buradan adres girişlerini yapıyorum mesela.... ilçe adı diye di bir tablo yarattım daha önceden buraya olabilecek ilçeleri yazdım. Formdan adres girerken ilçe kaydının yapılacağı açılan kutunun açılan kutu kaynağını bu tablo olarak belirledim. Sadece bu listede olan verileri seçebiliyor kullanıcı.
    Ama bi gün gelipte bu listede olmayan ilçeden birisinin adresini girmem gerekirse işte o zaman...... Kullanıcının bunu açılan kutuya klavye ile girebilmesini ve eğer girdiği bu değer ilçe tablosunda yoksa kullanıcıdan onay aldıktan sonra bunu hem o an girilen kayda hemde açılan kutunun veri kaynağı olan ilçe tablosuna doğrudan (hiç bir form falan açtırmadan) yazmasını sağlamaya çalışıyorum.
    Umarım şimdi anlaşılmıştır. Bu işlemi açılan kutuya çift tıkattırıp sonra yeni bir form açtırıp, bu form sayesinde ilgili tabloya bilgiyi ekleyip,sonra bu formu kapattırıp,yeni formu açtırıp,tekrar requery çektirip yapmanın daha kısa yolunu arıyorum yani, form falan olmayacak açılan kutuda yer alan değerlerden değilse direk tabloya ekleyece)
    Teşekürler....
     
  6. acemi

    acemi Misafir

    Yaa ben sorulari karistirmisim. Bir baska sorun icin cevap yazmisim.

    Dedigin isi yapmanin soyle bir basit yontemi var. Acilan kutu, verileri baska tablodan degil, yine kendinden alacak. Yani bilgilerin gelecegi kaynak olarak ayni tablonun, ayni alani gosterilecek. (veri tekrarini engellemek icin listeyi olusturan sorguyu gruplamak gerekiyor)

    Bi de acilan kutunun "limit to list" (liste ile sinirli) ozelligi "no" olacak.

    Ve hic kod yazmadan is bitmis olacak.
     
  7. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    Tekrar merhaba,

    Bunu denemiştim aynı tabloda olunca problemsiz oluyor. Ama ben örneği verirken ilçe adı gibi basit bi anlatımla anlattım fakat daha karışık tablolarda bazı durumlarda kullanıcıya bir tanımlar menüsü vermek istediğimde kullanıcı aynı zamanda kendisi hiç veri girişiyle işi olmadığı halde girip tanımlayabilsin. Ama bu durumda bunlar asıl tablonun içindeki değerler olunca yani yeni bir tanım yapmak için yeni bir kayıt girmek gerekecek o yüzden ayrı tabloda tutuyorum.
    Şöyle örnekleyebilirim

    önceki mesajımda ilçe demiştim ya mesela bunun il olduğunu farz edelim. kullanıca bu tabloya bağlı bir tanım formundan ili tanımlarken, posta kodunu,telefon alan kodunu falan da girmesini sağlamak istersem bu sefer tabloyu ayrı bir yerde tutmam lazım.
    O yüzden formun bağlı olduğu tablodan ayrı bir tabloya da aynı anda bilgi göndermek anlattığım şekilde mümkün değilmi yani. ??

    Önceki mesajın sanıyorum açılan kutudan çoklu seçim soruma cevaptı evet o uygun olabilir. Dediğin şekilde kullanabilirim.
     
  8. acemi

    acemi Misafir

    Acilan kutunun After Update (Guncelleme Sonrasinda) olayi icin Code Builder'i calistir ve Private Sub ... End Sub arasina su kodlari ekle:

    Dim cnn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim strSQL As String

    'Bu veri tabloda var mi diye bak
    If DCount("*", "TabloAdi", "AlanAdi='" & Screen.ActiveForm!AcilanKutuAdi & "'") > 0 Then
    'Tablo var
    'islem yapmaya gerek yok

    Else
    'tabloda yok
    'tabloya ekleyeyim mi diye sor
    If MsgBox("Bu veri, kayitlar arasinda yok. Eklensin mi?", vbYesNo) = vbYes Then
    'evet cevabi geldi
    'tabloya veriyi ekle
    Set cnn = New ADODB.Connection
    Set cnn = CurrentProject.Connection
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = cnn

    strSQL = "INSERT INTO TabloAdi (AlanAdi) " & _
    "VALUES ('" & Screen.ActiveForm!AcilanKutuAdi & "');"
    cmd.CommandText = strSQL
    cmd.Execute
    cnn.Close
    End If
    End If

    Set cmd = Nothing
    Set cnn = Nothing


    Acilan kutunun "On Got Focus" (odaklanildiginda) olayi icin de su kodu kullansan iyi olur:

    DoCmd.Requery "AcilanKutuAdi"
     
  9. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    UFFFF BEEEEE
    HARİKA
    ÇOK SAĞOL
    ACEMİ
     
    Son düzenleme yönetici tarafından yapıldı: 1 Şubat 2003
  10. acemi

    acemi Misafir

  11. realperest

    realperest Aktif Üye

    Kayıt:
    29 Ocak 2003
    Mesajlar:
    472
    Beğenilen Mesajlar:
    0
    :) :sus: :super:
    mesaj alınmıştır...
     
  12. hakansor

    hakansor Daimi Üye

    Kayıt:
    14 Ekim 2004
    Mesajlar:
    635
    Beğenilen Mesajlar:
    0
    Şehir:
    Ankara
    çoktandır bu kodu arıyordum. Harbiden harikasın sen !