[VBA] Sorguları vba kodu ile birleştirme
#7
CurrentDb.Execute "UPDATE T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = 'Açık' WHERE (((T_Tüm_isler.statü)='kapalı'))"

En son satir yukarida ki gibi yazilmali ve kac kalem sorusu ise guncelleme yapilmadan once gunclleme sorgusunun kriteri ile elde edilebilir.
Misal :
Yukarida ki satir uzerinden gidersek
Dim Kyt As recordset
Set kyt=currentdb.openrecordset("SELECT count(*) From T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino WHERE (((T_Tüm_isler.statü)='kapalı'))")
Msgbox kyt.fields(0) & " Adet Kayit Guncellenecektir."
kyt.close:set kyt=nothing
CurrentDb.Execute "UPDATE T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = 'Açık' WHERE (((T_Tüm_isler.statü)='kapalı'))"
siralamasi ile yapilabilir.



  Alıntı
Bu mesajı beğenenler:
#8
Sayın dsezgin83260 sizin güncellemeleri sayması için yazmış olduguz kodu yapıştırdım çalışıyor, ancak diger 4 sorguyada uyguladıgumda imleç hatası diyor ilaverer yaptım ama bulamadım bakmanız mümkün mü

Private Sub Verilerial_Click()
''MsgBox "Merhaba eski veriler silinecek yeni veriler gelecek"
'Tablo1 boşaltır
CurrentDb.Execute "DELETE * FROM [Tablo1] "
'''''Tablo1e yeni verileriekler

''''''''''MsgBox "Merhaba yeni veriler gelecek", vbCritical + vbYesNo, UYARI
DoCmd.TransferSpreadsheet acImport, 8, "Tablo1", "C:\Users\User\Documents\Tablo1.xlsx", True, "a1:j20"
''''''''''''''MsgBox " ana tabloya veri ekleniyor"
Dim Kyt As Recordset

Set Kyt = CurrentDb.OpenRecordset(T_Tüm_isler ( isemrino, açıklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu )" & _
"SELECT Tablo1.isemrino, Tablo1.açıklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino")
MsgBox Kyt.Fields(0) & " Adet yeni veri ekleme yapıldı."

Kyt.Close: Set Kyt = Nothing

CurrentDb.Execute "INSERT INTO T_Tüm_isler ( isemrino, açıklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu )" & _
"SELECT Tablo1.isemrino, Tablo1.açıklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino"

''MsgBox " ana tabloya veri eklendi"
Dim Kyt As Recordset

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*)Form Tablo1 INNER JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino SET T_Tüm_isler.tarih = [Tablo1]![tarih], T_Tüm_isler.verilenyöv = [Tablo1]![verilenyöv];")

MsgBox Kyt.Fields(0) & " Adet güncelleme yapıldı."

Kyt.Close: Set Kyt = Nothing

CurrentDb.Execute "UPDATE Tablo1 INNER JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino SET T_Tüm_isler.tarih = [Tablo1]![tarih], T_Tüm_isler.verilenyöv = [Tablo1]![verilenyöv];"

''MsgBox " ana tabloya veri günellendi"

Dim Kyt As Recordset

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*) From T_Tüm_isler LEFT JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = 'kapalı', T_Tüm_isler.kapatma_tr = Date() WHERE (((Tablo1.isemrino) Is Null))")

MsgBox Kyt.Fields(0) & " Adet Kayit kapalı statüsüne çevridi."

Kyt.Close: Set Kyt = Nothing

CurrentDb.Execute "UPDATE T_Tüm_isler LEFT JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = '" & kapalı & "', T_Tüm_isler.kapatma_tr = Date() WHERE (((Tablo1.isemrino) Is Null));"


'''MsgBox " ana tabloda eşleşmeyenler kapalı statüsüne alıdı"

Dim Kyt As Recordset

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*) From T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino WHERE (((T_Tüm_isler.statü)='kapalı'))")

MsgBox Kyt.Fields(0) & " Adet Kayit kapalıdan açık statüsüne çevridi."

Kyt.Close: Set Kyt = Nothing

CurrentDb.Execute "UPDATE T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = 'Açık' WHERE (((T_Tüm_isler.statü)='kapalı'))"




End Sub


Eklenti Dosyaları
.rar   Desktop.rar (Boyut: 43,73 KB / İndirilme: 70)



  Alıntı
Bu mesajı beğenenler:
#9
Private Sub Verilerial_Click()
Dim Kyt As Recordset
MsgBox "Merhaba eski veriler silinecek yeni veriler gelecek"
CurrentDb.Execute "DELETE * FROM [Tablo1] "

MsgBox "Merhaba yeni veriler gelecek", vbCritical + vbYesNo, UYARI
DoCmd.TransferSpreadsheet acImport, 8, "Tablo1", CurrentProject.Path & "\Tablo1.xlsx", True, "a1:j20"
MsgBox "Merhaba yeni veriler geldi"
MsgBox " ana tabloya veri ekleniyor"

Set Kyt = CurrentDb.OpenRecordset("SELECT Count(*) FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino")
MsgBox Kyt.Fields(0) & " Adet yeni veri ekleme yapýldý."
Kyt.Close: Set Kyt = Nothing
CurrentDb.Execute "INSERT INTO T_Tüm_isler ( isemrino, açýklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu )" & _
"SELECT Tablo1.isemrino, Tablo1.açýklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino"

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*) FROM Tablo1 INNER JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino")
MsgBox Kyt.Fields(0) & " Adet güncelleme yapýldý."
Kyt.Close: Set Kyt = Nothing
CurrentDb.Execute "UPDATE Tablo1 INNER JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino SET T_Tüm_isler.tarih = [Tablo1]![tarih], T_Tüm_isler.verilenyöv = [Tablo1]![verilenyöv];"

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*) From T_Tüm_isler LEFT JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino WHERE (((Tablo1.isemrino) Is Null))")
MsgBox Kyt.Fields(0) & " Adet Kayit kapalý statüsüne çevridi."
Kyt.Close: Set Kyt = Nothing
CurrentDb.Execute "UPDATE T_Tüm_isler LEFT JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = '" & kapalý & "', T_Tüm_isler.kapatma_tr = Date() WHERE (((Tablo1.isemrino) Is Null));"

Set Kyt = CurrentDb.OpenRecordset("SELECT count(*) From T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino WHERE (((T_Tüm_isler.statü)='kapalý'))")
MsgBox Kyt.Fields(0) & " Adet Kayit kapalýdan açýk statüsüne çevridi."
Kyt.Close: Set Kyt = Nothing
CurrentDb.Execute "UPDATE T_Tüm_isler INNER JOIN Tablo1 ON T_Tüm_isler.isemrino = Tablo1.isemrino SET T_Tüm_isler.statü = 'Açýk' WHERE (((T_Tüm_isler.statü)='kapalý'))"
end sub



Turkce karakterleri prosedur icinde degistirmelisiniz.



  Alıntı
Bu mesajı beğenenler:
#10
Hocam bu ekleme sorgusunun kodu hariç diğerleri çalışıyor. bunda da 6 veri ekleniyor mesajı geliyor fakat bu altı veride eklenecek tabloda olduğu için (koşulumuz eşleşmeyenler) hataya çeviriyor diye düşündüm ;
verileri değiştirdim gene aynı hata yı aldım
hata mesajı : 3061 çok az parametre uyarısı alıyorum
Tükçe karakter kullanmayın demişsiniz kullandığım sütün isimlerini değiştirmem gerekir mi?
birde hocam ben bu işlemi ekleme, güncelleme , silme veriyi alma sorgusu ile yapıyorsam vba kodu ile hepsini bir buton altında toplamak bana kazandırıyor ? sistemin daha hızlı çalışması mı ? yoksa sorgularda ki dağınıklılık mı ?
Bizleri cevapsız bırakmadıgınız için ilginize teşekkür ederim

Set Kyt = CurrentDb.OpenRecordset("SELECT Count(*) FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino")
MsgBox Kyt.Fields(0) & " Adet yeni veri ekleme yapyldy."
Kyt.Close: Set Kyt = Nothing
CurrentDb.Execute "INSERT INTO T_Tüm_isler ( isemrino, açyklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu )" & _
"SELECT Tablo1.isemrino, Tablo1.açyklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino"



  Alıntı
Bu mesajı beğenenler:
#11
Sorularin nasil calistigina bakmadim. VBA'da SQL'in arkasi arkasiya nasil calistirildigina misaldi.
VT istenilen hizda islemlerin gerceklestirilmesi. Tablo yapilari ve veri turlerinin ihtiyaciniza gore tasarlamali ve tablo iliskileri bire-cok tercih edilmelidir. Tablolar arasinda anahtar alanlar sayi olarak secilmesi ve kriter alanlarin bu alanlar uzerinden yapilmasi size arti avantajlar sunacaktir.

Kalem Sayisi Sorma Sorgusu
SELECT Count(*) FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino WHERE (((T_Tüm_isler.isemrino) Is Null))

Ekleme Sorgusu
INSERT INTO T_Tüm_isler ( isemrino, açıklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu ) SELECT Tablo1.isemrino, Tablo1.açıklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino WHERE (((T_Tüm_isler.isemrino) Is Null))

olarak degistirin. Eklenecek tablonun icinde isemrino olmayan kayitlar denmesi ile istenen sonuc alinabilir.



  Alıntı
Bu mesajı beğenenler:
#12
Set Kyt = CurrentDb.OpenRecordset("SELECT count(*)Form Tablo1 INNER JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino WHERE (((T_Tüm_isler.isemrino) Is Null))")

MsgBox Kyt.Fields(0) & " Adet yeni veri ekleme yapıldı."

şeklinde kayıt say yapıyorum eksik içleç hatası veriyor

ekleme sorgusu çalışıyor

CurrentDb.Execute "INSERT INTO T_Tüm_isler ( isemrino, açıklama, tarih, verilenyöv, durumu, yer, sorumlu, malzeme, malzdurumu ) SELECT Tablo1.isemrino, Tablo1.açıklama, Tablo1.tarih, Tablo1.verilenyöv, Tablo1.durumu, Tablo1.yer, Tablo1.sorumlu, Tablo1.malzeme, Tablo1.malzdurumu FROM Tablo1 LEFT JOIN T_Tüm_isler ON Tablo1.isemrino = T_Tüm_isler.isemrino WHERE (((T_Tüm_isler.isemrino) Is Null) AND ((T_Tüm_isler.isemrino) Is Null))"
şeklinde

son olarak

"Eklenecek tablonun icinde isemrino olmayan kayitlar denmesi ile istenen sonuc alinabilir."
anladıgımız bumu dur yoksa başka bir şey den mi bahsediyorsunuz
Tablo1.isemrino = T_Tüm_isler.isemrino WHERE (((T_Tüm_isler.isemrino) Is Null) AND ((T_Tüm_isler.isemrino) Is Null))



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [TABLO] Ada Ve Parsel Bilgisini Farklı Bir Kolonda Birleştirme mmisildar 4 458 04-09-2024, 13:37
Son Mesaj: mmisildar
  [RAPOR] Access De Ki Raporu Word Belgesi Olarak Vba Kodu Ile Açma Ahmet51 10 879 01-08-2024, 10:28
Son Mesaj: dsezgin
  Bir Tabloda Bulunan 2 Alanı Birleştirme programmer67 10 752 25-06-2024, 11:49
Son Mesaj: halily
  [SORGU] Sayı Formatı Bozulmadan Metinle Birleştirme atyaty 2 380 08-12-2023, 18:57
Son Mesaj: atyaty
  Birden Fazla Alandaki Veriyi Sorguda Alt Alta Birleştirme adnnfrm 3 648 18-11-2023, 19:54
Son Mesaj: dsezgin
  Birleştirme Hakkında. Satir 7 677 10-09-2023, 18:21
Son Mesaj: Satir
  [VBA] Yıl Ay Sayı Sıralama Kodu Hakkında Ahmet51 6 767 29-05-2023, 09:31
Son Mesaj: halily
  [SORGU] Sql Kodu Ahmet51 10 1.131 11-04-2023, 19:01
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi