Skip to main content

AccessTr.neT


Açılır Kutudaki Değere Göre Alt Forma Kayıt Ekleme

Açılır Kutudaki Değere Göre Alt Forma Kayıt Ekleme

Çözüldü #1
Hayırlı akşamlar benim uygulamamda
2 tane tablo ile 1 tane form ve form içinde 2 tane form var.
Yapılan işlem Form1 de Açılan kutu ile STOK sorgulayıp Alt formlarda o kaydı buluyorum.
Form1 de bulduğum kayda açılan kutu durumu seçip UYGUN veya RED olarak Form1_AltForm a yazdırıyorum

Benim istediğim ise  Form1_AltForm ile RED yapılan kayıtın aynı stoğundan Tablo2de yani Form2 de varsa Tablo2'ye yeni kayıt eklesin ve kayıtla aynı kaydın STOK, MALZEME, ADEDİ aynı yazsın. Ancak;
Form1_AltForm ile UYGUN yapılan kayıtın aynı stoğundan Tablo2de yani Form2 de varsa Tablo2'ye yeni kayıt yapmasın.

Biraz karışık oldu ama özetlersem
Tablo1                                                                  Tablo2
STOK   MALZEME   ADET    DURUMU                       STOK    MALZEME     ADET
1234    MASA         1         UYGUN                           1234    MASA          1 
3254    SİLGİ         1         RED                               3254    SİLGİ          1
6548   KALEM        1         UYGUN                           6548   KALEM        1

Yukarıdaki 1234 nolu stoğu sorgulayıp Tablo1 e UYGUN yazdığımda Tablo2'ye yeni kayıt eklemesin çünkü aynısı var.
Yukarıdaki 3254 nolu stoğu sorgulayıp Tablo1 e RED yazdığımda Tablo2'de olduğu halde Tablo2'ye yeni kayıt eklesin ve  Tablo1'deki STOK, MALZEME ve ADEDi'ni Tablo2'ye eklesin. 
Boş satır eklemeyecek. Bulunan kaydın  STOK, MALZEME ve ADEDi'ni de yazsın.
Tablo1'deki stok Tablo2'de yoksa hiçbirşey yapmasın.
İnşallah derdimi anlata bilmişimdir. Şimdiden ilginiz için çok teşekkür ediyorum.
.rar Kurala göre kayıt ekleme.rar (Dosya Boyutu: 61,99 KB | İndirme Sayısı: 9)
Son Düzenleme: 13/12/2023, 20:57, Düzenleyen: Acemi54.
Cevapla
#2
Uygula düğmesinin kodunu aşağıdaki gibi düzenleyip dener misiniz?

Private Sub Uygula_Click()
Dim strSQ As String
strSQL = "UPDATE Sorgu1 SET DURUMU = [Formlar]![FORM1]![Açılan_DURUM];"
DoCmd.SetWarnings False
DoCmd.RunSQL (strSQL)
If Me.Açılan_DURUM = "RED" And Len(Me.Metin_1 & Me.Metin_2 & Me.Metin_3 & "") > 0 Then
xSQLEkle = ""
xSQLEkle = xSQLEkle & " INSERT INTO Tablo2 ( STOK, MALZEME, ADEDİ )"
xSQLEkle = xSQLEkle & " SELECT Tablo1.STOK, Tablo1.MALZEME, Tablo1.ADEDİ"
xSQLEkle = xSQLEkle & " FROM Tablo2 INNER JOIN Tablo1 ON Tablo2.STOK = Tablo1.STOK"
xSQLEkle = xSQLEkle & " WHERE (((Tablo1.STOK)=[Formlar]![FORM1]![Açılan_STOK]));"
DoCmd.RunSQL (xSQLEkle)
End If
Me.Form2.Requery
DoCmd.SetWarnings True
End Sub
Cevapla
#3
(14/12/2023, 14:52)berduş yazdı: Uygula düğmesinin kodunu aşağıdaki gibi düzenleyip dener misiniz?

Private Sub Uygula_Click()
Dim strSQ As String
strSQL = "UPDATE Sorgu1 SET DURUMU = [Formlar]![FORM1]![Açılan_DURUM];"
DoCmd.SetWarnings False
DoCmd.RunSQL (strSQL)
If Me.Açılan_DURUM = "RED" And Len(Me.Metin_1 & Me.Metin_2 & Me.Metin_3 & "") > 0 Then
        xSQLEkle = ""
        xSQLEkle = xSQLEkle & " INSERT INTO Tablo2 ( STOK, MALZEME, ADEDİ )"
        xSQLEkle = xSQLEkle & " SELECT Tablo1.STOK, Tablo1.MALZEME, Tablo1.ADEDİ"
        xSQLEkle = xSQLEkle & " FROM Tablo2 INNER JOIN Tablo1 ON Tablo2.STOK = Tablo1.STOK"
        xSQLEkle = xSQLEkle & " WHERE (((Tablo1.STOK)=[Formlar]![FORM1]![Açılan_STOK]));"
        DoCmd.RunSQL (xSQLEkle)
End If
Me.Form2.Requery
DoCmd.SetWarnings True
End Sub
Çok sağolun hocam zahmet verdim. 
Bu buton Metin1 değeri "0" dan büyükse çalışsın Metin1 değeri "0" dan küçükse çalışmasın bunu nasıl yapabiliriz acaba hocam. 
Allah ne muradın varsa versin.
(14/12/2023, 19:36)Acemi54 yazdı:
(14/12/2023, 14:52)berduş yazdı: Uygula düğmesinin kodunu aşağıdaki gibi düzenleyip dener misiniz?

Private Sub Uygula_Click()
Dim strSQ As String
strSQL = "UPDATE Sorgu1 SET DURUMU = [Formlar]![FORM1]![Açılan_DURUM];"
DoCmd.SetWarnings False
DoCmd.RunSQL (strSQL)
If Me.Açılan_DURUM = "RED" And Len(Me.Metin_1 & Me.Metin_2 & Me.Metin_3 & "") > 0 Then
        xSQLEkle = ""
        xSQLEkle = xSQLEkle & " INSERT INTO Tablo2 ( STOK, MALZEME, ADEDİ )"
        xSQLEkle = xSQLEkle & " SELECT Tablo1.STOK, Tablo1.MALZEME, Tablo1.ADEDİ"
        xSQLEkle = xSQLEkle & " FROM Tablo2 INNER JOIN Tablo1 ON Tablo2.STOK = Tablo1.STOK"
        xSQLEkle = xSQLEkle & " WHERE (((Tablo1.STOK)=[Formlar]![FORM1]![Açılan_STOK]));"
        DoCmd.RunSQL (xSQLEkle)
End If
Me.Form2.Requery
DoCmd.SetWarnings True
End Sub
Çok teşekkür ederim hocam zahmet verdim.
Bu buton Metin1 "0" dan büyükse çalışsın Metin1 "0" dan küçükse çalışmasın. Onu nasıl yapabiliriz hocam.
Allah ne muradın varsa versin.
Son Düzenleme: 14/12/2023, 20:39, Düzenleyen: Acemi54.
Cevapla
#4
tam olarak anlamadım?
Metin1 değeri stok no değil miydi?
stok no nasıl "0"dan küçük olabilir?
Cevapla
#5
(14/12/2023, 22:10)berduş yazdı: tam olarak anlamadım?
Metin1 değeri stok no değil miydi?
stok no nasıl "0"dan küçük olabilir?

Kusura bakmayın hocam formdaki başka bir metin kutusu mesela Metin20 sıfırdan büyükse kod çalışsın sıfırdan küçükse kod çalışmasın.
İlgin için çok teşekkür ederim.
Cevapla
#6
ekleme sorgusunun çalışma koşulu
If Me.Açılan_DURUM = "RED" And Len(Me.Metin_1 & Me.Metin_2 & Me.Metin_3 & "") > 0 Then bu kısma diğer koşullar eklenebilir.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task