AccessTr.neT
Gruba Göre Form Çağırıp, Forma Ekleme - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Access (https://accesstr.net/forum-microsoft-access.html)
+--- Forum: Access Cevaplanmış Soruları (https://accesstr.net/forum-access-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Gruba Göre Form Çağırıp, Forma Ekleme (/konu-gruba-gore-form-cagirip-forma-ekleme.html)

Sayfalar: 1 2


Gruba Göre Form Çağırıp, Forma Ekleme - magmar - 21/05/2019

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


Cvp: Gruba Göre Form Çağırıp, Forma Ekleme - berduş - 21/05/2019

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



Cvp: Gruba Göre Form Çağırıp, Forma Ekleme - magmar - 21/05/2019

(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


Cvp: Gruba Göre Form Çağırıp, Forma Ekleme - berduş - 21/05/2019

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



Cvp: Gruba Göre Form Çağırıp, Forma Ekleme - magmar - 21/05/2019

(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?


Cvp: Gruba Göre Form Çağırıp, Forma Ekleme - berduş - 21/05/2019

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ı?