Skip to main content

AccessTr.neT


SendKeys "{F5}" sorunu ve çoklu kayıtlardan sadece birini gösterme

SendKeys "{F5}" sorunu ve çoklu kayıtlardan sadece birini gösterme

Çözüldü #1
.rar Stok.rar (Dosya Boyutu: 140,73 KB | İndirme Sayısı: 8)
iyi akşamlar, benim 2 tane sorum olacaktı
1 - SendKeys "{F5}" komutunu her çalıştırdığımda "numlock" tuşu açıksa kapalı kapalıysa açık oluyor, "numlock" tuşunun değerinin değişmesini nasıl engellerim?
2 - oluşturduğum sorguda aynı kayıtların değerinin toplanmasını nasıl sağlarım?
mesela 1 haziran için 4 farklı yemek seçmişim ve bu yemeklerin üçünde ayçiçek yağı kullanılıyor benim amacım bu 4 farklı yemekte kullanılan malzeme miktarını hesaplamak ama bu hesabı yaparken bu 3 faklı yemekte kullanılan ayçiçek yağının toplam miktarını tek satıra yazmak.
1. yemekte 3 kilo domates ,5 kilo patlıcan ve 100gr ayçiçek yağı
2. yemekte 2 kg patates, 3kg tavuk ve 150gr ayçiçek yağı
3. yemekte 1kg pirinç, 2 kg mercimek ve 200gr ayçiçek yağı
4. yemekte ise 500gr mercimek, 1 kg bulgur ve 2 litre su

malzeme Kullanılan malzeme İktarı
domates 3 kg
patlıcan 5 kg
ayçiçek yağı 450gr (100 + 150 + 200)
patates 2 kg
tavuk 3kg
pirinç 1 kg
mercimek 2,5 kg (2+0,5)
bulgur 1 kg
Su 2 litre

Ek Dosyalar
Stok.rar
Son Düzenleme: 30/07/2014, 14:24, Düzenleyen: berduş.
Cevapla
#2
2. sorunuzun yanıtı için bazı uyarılar: Eğer yemek bazında malzeme toplamı almayacaksanız o zaman formda alttaki "malzemelist" liste kutusunu 3 sütun yapacaksanız. Çünkü hem malzemeleri yemeklerdeki toplamıyla isteyip hem de tek tek alamazsınız. Bu durumda o liste kutusunun Sql görünümü şöyle olacak:
Visual Basic Code
SELECT MenuTbl.Tarih, YemekListesiTbl.[Malzeme Adı], Sum([YemekListesiTbl]![1 - 2 Yaş]*[Formlar]![Menueklefrm]![1-2Y]+[YemekListesiTbl]![3 - 6 Yaş]*[Formlar]![Menueklefrm]![3-6Y]+[YemekListesiTbl]![7 - 12 Yaş]*[Formlar]![Menueklefrm]![7-12Y]+[YemekListesiTbl]![Yaşlı]*[Formlar]![Menueklefrm]![Yasli]+[YemekListesiTbl]![Personel]*[Formlar]![Menueklefrm]![Personel]) AS Miktar
FROM MenuTbl INNER JOIN YemekListesiTbl ON MenuTbl.Yemek = YemekListesiTbl.[Yemek Adı]
GROUP BY MenuTbl.Tarih, YemekListesiTbl.[Malzeme Adı]
HAVING (((MenuTbl.Tarih)=[Formlar]![Menueklefrm]![TarihGir]));

İlk sorunuza henüz bakmadım. Onda nerede f5 yaptığınıza bakacağım. Gerekirse her f5 eyleminde aynı yöntemle Numluck açtırabilirsiniz. Yani senkeys kullanarak. Denediniz mi?
İnadına, ille de Accesstr.net...
Cevapla
Thumbs Up #3
(30/07/2014 20:22)mehmetdemiral Adlı Kullanıcıdan Alıntı: 2. sorunuzun yanıtı için bazı uyarılar: Eğer yemek bazında malzeme toplamı almayacaksanız o zaman formda alttaki "malzemelist" liste kutusunu 3 sütun yapacaksanız. Çünkü hem malzemeleri yemeklerdeki toplamıyla isteyip hem de tek tek alamazsınız. Bu durumda o liste kutusunun Sql görünümü şöyle olacak:
Visual Basic Code
SELECT MenuTbl.Tarih, YemekListesiTbl.[Malzeme Adı], Sum([YemekListesiTbl]![1 - 2 Yaş]*[Formlar]![Menueklefrm]![1-2Y]+[YemekListesiTbl]![3 - 6 Yaş]*[Formlar]![Menueklefrm]![3-6Y]+[YemekListesiTbl]![7 - 12 Yaş]*[Formlar]![Menueklefrm]![7-12Y]+[YemekListesiTbl]![Yaşlı]*[Formlar]![Menueklefrm]![Yasli]+[YemekListesiTbl]![Personel]*[Formlar]![Menueklefrm]![Personel]) AS Miktar
FROM MenuTbl INNER JOIN YemekListesiTbl ON MenuTbl.Yemek = YemekListesiTbl.[Yemek Adı]
GROUP BY MenuTbl.Tarih, YemekListesiTbl.[Malzeme Adı]
HAVING (((MenuTbl.Tarih)=[Formlar]![Menueklefrm]![TarihGir]));

verdiğiniz Sql komutu 2. sorumu (ve sormadığım 3. gizli sorumu) çözdü çok teşekkür ederim. )

(30/07/2014 20:22)mehmetdemiral Adlı Kullanıcıdan Alıntı: İlk sorunuza henüz bakmadım. Onda nerede f5 yaptığınıza bakacağım. Gerekirse her f5 eyleminde aynı yöntemle Numluck açtırabilirsiniz. Yani senkeys kullanarak. Denediniz mi?

1. sorum için önerdiğiniz (eğer sizi yanlış anlamadıysam) aynı komutu 2 defa ard arda yazmayı daha önce denemiştim çalışmamıştı siz önerdikten sonra tekrar denedim ama maalesef hala aynı sorun devam ediyor, "numlock" kafasına göre takılıyor
Son Düzenleme: 30/07/2014, 23:10, Düzenleyen: berduş.
Cevapla
#4
F5'i nerede kullandığınızı söylerseniz onda da yardımcı olmaya çalışırım. Ben aramayayım, s,z yazın lütfen. Bekliyorum.
İnadına, ille de Accesstr.net...
Cevapla
#5
1 - ilk kullandığım yer "tarihgir" metin kutusunda değişiklik olduğunda çalışıyor
böylece belirtilen tarihe göre veri tabanını ve list boxların hepsini yeniliyor

Private Sub TarihGir_Change()
SendKeys "{F5}"

'SendKeys "{NUMLOCK}"
'DoCmd.RefreshRecord
'Me.SyList.Requery
'Me.Ara1List.Requery
'Me.OYlist.Requery
'Me.ara2List.Requery
'Me.AYList.Requery
'Me.Ara3List.Requery

End Sub

2 - 2. kullandığım yer ise "sil" butonu
kayıt silme onaylanınca yine veritabanını ve listboxları yenilemek için:

Private Sub Sil_Click()
x = MsgBox("Bu kaydı Silmek İstediğinize Emin misiniz?", vbYesNo + vbQuestion, "DİKKAT")
If x = vbYes Then
DoCmd.RunSQL " DELETE *" & _
" FROM MenuTbl" & _
" WHERE (((MenuTbl.Tarih)=[Formlar]![Menueklefrm]![TarihSil])" & _
" AND ((MenuTbl.Ogun)=[Formlar]![Menueklefrm]![OgunSil]) " & _
" AND ((MenuTbl.Yemek)=[Formlar]![Menueklefrm]![YemekSil]));"
SendKeys "{F5}"
Else
Undo
End If
End Sub
Cevapla
#6
Siz F5 gönderme işini yanlış kullanıyorsunuz. Bu iş için klasör yeniler gibi f5 yapmaya gerek yok. O komutun yerine değiştiğinde olayına

Kod
docmd.requery
kodunu yazın. Aynı güncelleme olacaktır.

2. durumda da aynı şey geçerli.Yalnız oradaki kodlarınız hatalı. Öncelikle silme onayını göstermeyin. Bunun için siz kendiniz soru sordurun ve evet hayır durumuna göre silme ya da vazgeçme koyun.Bunu yapmışsınız ama tam değil. Mesela silmeyi onaylama penceresinde ilk soruya (msgbox ile sorduğunuz soruya) Evet deyip Eylem sorgusundaki soruya Hayır deyince hata döner. Debug ekranı gelir. Bu yüzden orayı da şöyle yapmalısınız:

Kod
Private Sub Sil_Click()
On Error GoTo Err_hata
DoCmd.SetWarnings False

x = MsgBox("Bu kaydı Silmek İstediğinize Emin misiniz?", vbYesNo + vbQuestion, "DİKKAT")
If x = vbYes Then
DoCmd.RunSQL " DELETE *" & _
              " FROM MenuTbl" & _
              " WHERE (((MenuTbl.Tarih)=[Formlar]![Menueklefrm]![TarihSil])" & _
              " AND ((MenuTbl.Ogun)=[Formlar]![Menueklefrm]![OgunSil]) " & _
              " AND ((MenuTbl.Yemek)=[Formlar]![Menueklefrm]![YemekSil]));"
   DoCmd.Requery
   MsgBox "Seçilen kayıt silindi", vbInformation, "SİLİNDİ"
   Else
  Undo
  MsgBox "Kayıt Silinmedi", vbInformation, "SİLİNMEDİ"
  
  End If
  DoCmd.SetWarnings True
  Err_hata:
End Sub


Bu arada yerleştirdiği err_hata yapısını da kullanın kodlarınızda. Zarar etmezsiniz.
Kolay gelsin.
İnadına, ille de Accesstr.net...
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da