Skip to main content

#EvdeKal


Gruba Göre Form Çağırıp, Forma Ekleme

Gruba Göre Form Çağırıp, Forma Ekleme

Çözüldü #1
arkadaşlar merhaba

öyle görünüyor ki bu sıralar sizi biraz fazla rahatsız edeceğim Img-grin

ekteki denemede, frmSiparis ve frmHambezSiparis isimli iki form var. her iki formda da Cari kısmına (frmSiparis = CariIDA, frmHamBezSiparis = DokumacıID) çift tıklayarak frmCariAra formunu açıp ilgili Cariyi hem arayıp hem seçmek istiyorum. frmSiparis formunda bu konu çalışıyor. ama ben frmSiparis formunda bu formu açtığımda Cari grubunun = 1 olmasını, HamBezSiparis formunda da CariGrubunun =10 olmasını istiyorum) 

ayrıca DokumacıID kısmında çift tıkladığımda da ilgili Cariyi getirmiyor. (frmCariAra formundaki Vba kodundan kaynaklı oldugunu biliyorum ama nasıl bir kod yazmam gerektiğini bilemedim Img-cray )

yardımcı olur musunuz?

teşekkürler
.rar deneme-20.05.rar (Dosya Boyutu: 422,11 KB | İndirme Sayısı: 1)
Son Düzenleme: 21/05/2019, 00:25, Düzenleyen: magmar.
Cevapla
#2
her 2 formunda çift tıklama olayına argüman eklemeniz gerek
'openArg=argüman olarak gönderilen değer istediğinizi yazabilirsiniz amaç arama formunu hangi formun açtığını anlamak ama burada cari gruplar 1 ve 10 olduğu için 1 ve 10 kullanmanız daha uygun yoksa işi diğer taraflarda düzeltmek gerekiyor

Visual Basic Code
Private Sub cboCariIDA_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 1  'openArg=argüman olarak gönderilen değer
End Sub

Visual Basic Code
Private Sub cboDokumaciID_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 10
End Sub

liste kutusunun sorgu kaynağını aşağıdaki gibi düzeltmeniz gerek böylece gelen argümana göre aramayı 1 yada 10'a göre yapacak eğer arguman gelmemişse metin kutusu boşsa tüm kayıtları gösterecek
Like IIf(IsNull([Formlar]![frmCariAra]![TxtId]),"*",[Formlar]![frmCariAra]![TxtId]) 'boş ise like "*"

Visual Basic Code
SELECT tblCari.Cariidm, tblCari.CariUnvani, tblCari.CariGrubu
FROM tblCari
WHERE (((tblCari.CariUnvani) Like "*" & [Forms]![frmCariAra]![txtCariUnvaniAraGecici] & "*") AND ((tblCari.CariGrubu) Like IIf(IsNull([Formlar]![frmCariAra]![TxtId]),"*",[Formlar]![frmCariAra]![TxtId])))
ORDER BY tblCari.CariUnvani;

arama formuna ekleyeceğiniz bir metin kutusunu kriter olarak liste kutusunda kullanabilirsiniz
2 - sorun için de yine "openargs" metodunu kullanabilirsiniz

Visual Basic Code
Private Sub lstCariAra_DblClick(Cancel As Integer)

If Me.TxtId = 1 Then 'Sipariş formundan gelen arguman=1
Forms!frmSiparis.SetFocus
Forms!frmSiparis!cboCariIDA = lstCariAra.Column(0)
DoCmd.Close acForm, "frmCariAra"

ElseIf Me.TxtId = 10 Then 'hambez formundan gelen arguman=10

Forms!frmHamBezSiparis.SetFocus
Forms!frmHamBezSiparis!cboDokumaciID = lstCariAra.Column(0)
DoCmd.Close acForm, "frmCariAra"
End If

End Sub

.rar deneme-20.05_hy.rar (Dosya Boyutu: 238,69 KB | İndirme Sayısı: 3)
Cevapla
#3
(21/05/2019 01:16)haliliyas Adlı Kullanıcıdan Alıntı: her 2 formunda çift tıklama olayına argüman eklemeniz gerek
'openArg=argüman olarak gönderilen değer istediğinizi yazabilirsiniz amaç arama formunu hangi formun açtığını anlamak ama burada cari gruplar 1 ve 10 olduğu için 1 ve 10 kullanmanız daha uygun yoksa işi diğer taraflarda düzeltmek gerekiyor

Visual Basic Code
Private Sub cboCariIDA_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 1  'openArg=argüman olarak gönderilen değer
End Sub

Visual Basic Code
Private Sub cboDokumaciID_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 10
End Sub

liste kutusunun sorgu kaynağını aşağıdaki gibi düzeltmeniz gerek böylece gelen argümana göre aramayı 1 yada 10'a göre yapacak eğer arguman gelmemişse metin kutusu boşsa tüm kayıtları gösterecek
Like IIf(IsNull([Formlar]![frmCariAra]![TxtId]),"*",[Formlar]![frmCariAra]![TxtId]) 'boş ise like "*"

Visual Basic Code
SELECT tblCari.Cariidm, tblCari.CariUnvani, tblCari.CariGrubu
FROM tblCari
WHERE (((tblCari.CariUnvani) Like "*" & [Forms]![frmCariAra]![txtCariUnvaniAraGecici] & "*") AND ((tblCari.CariGrubu) Like IIf(IsNull([Formlar]![frmCariAra]![TxtId]),"*",[Formlar]![frmCariAra]![TxtId])))
ORDER BY tblCari.CariUnvani;

arama formuna ekleyeceğiniz bir metin kutusunu kriter olarak liste kutusunda kullanabilirsiniz
2 - sorun için de yine "openargs" metodunu kullanabilirsiniz

Visual Basic Code
Private Sub lstCariAra_DblClick(Cancel As Integer)

If Me.TxtId = 1 Then 'Sipariş formundan gelen arguman=1
Forms!frmSiparis.SetFocus
Forms!frmSiparis!cboCariIDA = lstCariAra.Column(0)
DoCmd.Close acForm, "frmCariAra"

ElseIf Me.TxtId = 10 Then 'hambez formundan gelen arguman=10

Forms!frmHamBezSiparis.SetFocus
Forms!frmHamBezSiparis!cboDokumaciID = lstCariAra.Column(0)
DoCmd.Close acForm, "frmCariAra"
End If

End Sub


halil bey çok teşekkürler. gerçekten harika anlatmışsınız. yalnız burda anlamadığım, argümana göre getirdiğimiz formumuz filtreli olarak nasıl gelecek? yani bana sadece carigrubu 1 olanları ya da 10 olanları getirsin? nasıl yazmamız lazım
Cevapla
#4
formunuzun hangi alana göre gelmesini istiyorsanız kriteri ona göre ayarlamalısınız diyelim ki sipariş formunuzu "CariIDA "alanına göre çağıracaksınız ve "lstCariAra" alanı da size "CariIDA"yı veriyor ozaman form açma kodu aşağıdaki gibi bir şey olmalı

Visual Basic Code
DoCmd.OpenForm "frmsiparis", , , "[CariIDA]=" & lstCariAra

Cevapla
#5
(21/05/2019 10:58)haliliyas Adlı Kullanıcıdan Alıntı: formunuzun hangi alana göre gelmesini istiyorsanız kriteri ona göre ayarlamalısınız diyelim ki sipariş formunuzu "CariIDA "alanına göre çağıracaksınız ve "lstCariAra" alanı da size "CariIDA"yı veriyor ozaman form açma kodu aşağıdaki gibi bir şey olmalı

Visual Basic Code
DoCmd.OpenForm "frmsiparis", , , "[CariIDA]=" & lstCariAra


halil bey çok özür dilerim ama anlamadım. bu kodda CariGrubu kısmını nasıl filtreliyor? yani sadece müşterileri, ya da sadece dokumacıları getirmesi gerektiğini nasıl algılıyor?
Cevapla
#6
afedersiniz yanlış anlamışım. "DoCmd.OpenForm "frmsiparis", , , "[CariIDA]=" & lstCariAra" kodu "cariGrubu" kısmı filtrelemek için değil.
bu kod arama formunda seçtiğiniz kaydı sipariş formunda açmak için.
"cariGrubu" filtrelemek için sorguyu değiştirip grup filtresini, arama formuna eklediğim, "TxtId" metin kutusu sağlıyor.
dikkat ederseniz "sipariş" yada "hambez" formları "arama" formunu açarken aşağıdaki kodu kullanıyor
"DoCmd.OpenForm "frmCariAra", , , , , , 1 yada 10". frmCariAra açılırken eğer 1 gelirse TxtId=1, 10 gelirse TxtId=10 yapıyor
liste kutusunun sorgu kaynağına da kriter olarak "TxtId" eklendiğinden filtreleme ona göre yapılıyor.
sormanızın sebebi hatalı çalışması mı?
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da