Skip to main content

AccessTr.neT


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)
magmar, 02-10-2009 tarihinden beri AccessTr.neT üyesidir.
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
Private Sub cboCariIDA_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 1  'openArg=argüman olarak gönderilen değer
End Sub
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 "*"
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

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 yazdı: 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
Private Sub cboCariIDA_DblClick(Cancel As Integer)
DoCmd.OpenForm "frmCariAra", , , , , , 1  'openArg=argüman olarak gönderilen değer
End Sub
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 "*"
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

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
magmar, 02-10-2009 tarihinden beri AccessTr.neT üyesidir.
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ı
DoCmd.OpenForm "frmsiparis", , , "[CariIDA]=" & lstCariAra
Cevapla
#5
(21/05/2019, 10:58)haliliyas yazdı: 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ı
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?
magmar, 02-10-2009 tarihinden beri AccessTr.neT üyesidir.
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
Task