Accesde Birden Fazla Tabloyu Tek Sorguda Sorgulama ?

Katılım
14 Aralık 2006
Mesajlar
14
Excel Vers. ve Dili
Microsotf 2003
Merhaba Arkadaşlar...
Bir veri tabanı hazırlıyorum.
Daha önce kayıtları Tek tabloda topluyordum. Zaman içerisinde kullanıcı sayısı arttığı için tabloda kilitlenmeler oluyordu.
Bu sorundan dolayı veri tabanına Her kullanıcı için bir tablo oluşturdum. Ama rapor alır iken Bütün kullanıcıların verilerini tek rapor ile Almak istiyorum.
Bunu Nasıl yaparım....

Şimdiden herkese teşekkürler....
 
Katılım
16 Kasım 2005
Mesajlar
1,090
Excel Vers. ve Dili
Access 2002
Tabloları kişi kullanıcı adedince çoğaltınız bunu ilk defa duyuyorum. Biliyorsunuz ki aslında tablolar tek formlar ve diğer nesneler çoğaltılıp erişim sağlanıyordu yani bağlı tablo yöneticisi ile sizinki tam tersi olmuş .... Access'e ters mi bilmem bu mantık
ama sorgu ile birleştirebilirsiniz bunu ancak örnek ekleseniz daha kolay yardım edebilirdim..
Böyle biraz afaki oluyor sanırım...

kolay gelsin..
 
Katılım
14 Aralık 2006
Mesajlar
14
Excel Vers. ve Dili
Microsotf 2003
Kardeş öncelikle ilgin için teşekkür ederim.
  1. Veri tabanında
    • 5 Adet Ustaya ait 5 adet ayrı tablo var.
    • Yapmak istediğimi iki farklı şekilde yapabiliriz.
      • Bütün tablolardaki veriler Herhangi bir komut yardımı ile ana tabloya aktarılacak
      • Veya Bütün tablolardan Aynı anda 1 defada rapor alınacak....
    • Bunları nasıl yaparım....
    • Üzerinde çalıştığım dosyayı ekleyemiyorum çünkü 30 MB oldu :)
    • Şimdiden yardım larınız için teşekkür ederim....
 
Katılım
6 Şubat 2005
Mesajlar
1,467
tek tabloda toplanıyor. Raporunu yapmadım, genel tabloya dayalı bir rapor yaparsan.
örnek ekte
 
Katılım
14 Aralık 2006
Mesajlar
14
Excel Vers. ve Dili
Microsotf 2003
tek tabloda toplanıyor. Raporunu yapmadım, genel tabloya dayalı bir rapor yaparsan.
örnek ekte

Öncelikle teşekkür ederim...

Kodları hangi mantığa dayanarak yazıyorsunuz...
Bu konuda bilgi alabilirmiyim...

Veyada Usta İsimlerini yazarsak bu işlemi nasıl yaparız....
 
Son düzenleme:
Katılım
6 Şubat 2005
Mesajlar
1,467
Ekli Örneği Kodsuz yaptım.
Genel Tablo için ve her usta Tablosu için birer sorgu yaptım (hiç kriter olmadan)
Genel tablosunu tekrar tasarım görünümünde açtım, En üste bulunan Sorgu seçeneklerinden éSilme Sorgusunu" işaretleyip yine hiç kriter değişikliği yapmadan onaylayarak kapattım.
Diğer Usta tablolarını teker teker tasarım görünümünde açarak, bu sefer Ekleme Sorgusuna tıkladım, çıkana iletişim tablosunda hedef tablo olarak genel tabloyu işaretleyip kapatım.
Makrolar Sayfasında yeni seçeneğini tıkladım. Altı satıra Eylem seçeneğini Sorgu Aç olarak belirledim.
İlk Satırda eylemin içinde iken alta çıkan "Sorgu Adı" hanesinde Silme Sorgısunun adı olan Sorgu1'i seçtim, Sıra ile her satırda diğer sorguları belirledim.
Bu altı eyleme birden Makro1 adını verdim.
Forumda Yeni bir Komut kutusu oluşturunca çıkan sihirbazda Çeşitli seçeğinden Makro çalıştırı seçerek kapattım
Örnekekre
 
Katılım
14 Aralık 2006
Mesajlar
14
Excel Vers. ve Dili
Microsotf 2003
ömerceri ustamın vermiş olduğu örnek uygulama doğrultusunda kodları aşağıdaki gibi değştirdim. Ama yine hata alıyorum...

Sorunu nasıl çözebilirim....

Not hata mesajlarını resim olarak ekliyorum....

Yazılı kodlar aşağıda eklidir...

Şimdiden teşekkürler...

Kod:
Private Sub Komut0_Click()[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]Dim sil As New ADODB.Recordset[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]SQL0 = "Delete Usta_Genel.No, Usta_Genel.[Onarım Tarihi], Usta_Genel.Teknisyen Adı, Usta_Genel.[Arıza Kabul Fiş No], Usta_Genel.Cihazın Modeli, Usta_Genel.[Cihazın Seri Numarası], Usta_Genel.Görülen Arıza, Usta_Genel.[Cihaza Yapılan işlem]"[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]SQL0 = SQL0 & "FROM Usta_Genel;"[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]sil.Open SQL0, CurrentProject.Connection, adOpenKeyset, adLockOptimistic[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]sil.Open SQL0, CurrentProject.Connection, adOpenKeyset, adLockOptimistic[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3][/SIZE][/FONT] 
[FONT=Arial Narrow][SIZE=3]For i = 1 To 15[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]Dim yaz As New ADODB.Recordset[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]SQL = "INSERT INTO Usta_Genel ( No, [Onarım Tarihi], Teknisyen Adı, [Arıza Kabul Fiş No], Cihazın Modeli, [Cihazın Seri Numarası], Görülen Arıza, [Cihaza Yapılan işlem] )"[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]SQL = SQL & "SELECT Usta_" & i & ".No, Usta_" & i & ".[Onarım Tarihi], Usta_" & i & ".Teknisyen Adı, Usta_" & i & ".[Arıza Kabul Fiş No], Usta_" & i & ".Cihazın Modeli, Usta_" & i & ".[Cihazın Seri Numarası], Usta_" & i & ".Görülen Arıza, Usta_" & i & ".[Cihaza Yapılan işlem]"[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]SQL = SQL & "FROM Usta_" & i & ";"[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]yaz.Open SQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]Next[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]End Sub[/SIZE][/FONT]
[FONT=Arial Narrow][SIZE=3]
 
Son düzenleme:
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın SéFiLGa

İlk gözüme çarpan Teknisyen Adı alan adında boşluk olmasına rağmen köşeli parantez arasına almadınız. Size tavsiyem alan adlarında hiçbir zaman boşluk kullanmayın bu kod yazarken size çk yardımcı olacaktır.

İyi çalışmalar:)
 
Katılım
14 Aralık 2006
Mesajlar
14
Excel Vers. ve Dili
Microsotf 2003
Türkçe karakter ve boşlukları silip tekrar deneyeceğim....
 
Katılım
15 Kasım 2006
Mesajlar
583
Excel Vers. ve Dili
Ms Office 2003 Türkçe
Tablo yapını gözden geçir ve daha fazla kod yazmadan tablonu düzenle.

Yoksa bu tür sorunlardan hiç kurtulamazsın.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
Sn SéFiLGa
Geçenlerde bir iş için uğraşırken UNION ALL sql'in terimi ile çözüm bulmuştum. Senin sorununu da daha kolay çözer herhalde.
Oluşturacağın Usta tabloarının adlarının başına Usta kelimesini ekle UstaHasan, UstaMehmet....gibi
Sonradan oluşturacağın tablolarıda otomatik olarak rapora alacaktır.
Raporun Open olayına da aşağıdaki kodları ekle.
Örnek ekte
Kolay gelsin.

Private Sub Report_Open(Cancel As Integer)
Dim a(100)
ab = 0
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentData
For Each obj In dbs.AllTables

If Left(obj.Name, 2) = "Us" Then
a(ab) = obj.Name
ab = ab + 1
End If
Next obj
For i = 0 To ab - 1
SQL = SQL & " SELECT * FROM " & a(i) & " UNION ALL "

Next
Me.RecordSource = Mid(SQL, 2, Len(SQL) - 10)
End Sub
 
Üst