çapraz Sorgu Hk.
#1
Arkadaşlar Merhaba,

Veri tablosunda yer alan Veri1,veri2,veri3,veri4,veri5 ve veri6 alanlarında hangi hata kodundan kaç tane olduğunu günlük olarak yeni tabloya insert edilmesini istiyorum. Yeni tablodaki alan adları için hata tablosunda ki kodları kullanmasını istiyorum. Yeni tabloda olmasını istediğim örnek bulunmaktadır. 0 değerleri yerine hata kodlarını saymasını istiyorum

Bir türlü yapamadım. Bu konuda yardımcı olursanız çok sevinirim.

Saygılarımla,


Eklenti Dosyaları
.rar   Örnek.rar (Boyut: 18,61 KB / İndirilme: 19)



  Alıntı
Bu mesajı beğenenler:
#2
Bir tane çapraz sorgu hazırlayın,
Visual Basic
  1. TRANSFORM Count(Veri.veri2) AS VerSay SELECT Format([tarih],"Short Date") AS Trh FROM Veri GROUP BY Format([tarih],"Short Date") PIVOT Veri.veri2



Bir tanede Ekleme sorgusu
Visual Basic
  1. INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı], 1, 3, 13, 108, 114, 132, 136, 140 ) SELECT Query1.Trh, "Veri2" AS TIPI, Query1.[1], Query1.[3], Query1.[13], Query1.[108], Query1.[114], Query1.[132], Query1.[136], Query1.[140] FROM Query1



Ekleme sorgusunu çalıştırdıktan sonra 3, 13,... sütunlarına ait çapraz sorguda ki  PIVOT alanını değiştirin ve ekleme sorgusundaki TIPI allananındaki Veri1.2. 3.... olan yeri değiştirin ve ekleme sorusunu çalıştırın.

140 sütuna kadar tekrarlarsanız Yeni Tablo verileri oluşturursunuz.

VBA da Kod ile Hata tablosunu SELECT yaparak yukarıdaki SQL'ler ile prosedür hazırlayabilirsiniz.

Analizlerini icin VBA da DAO da veri cagirma islemi her daim bilmelisiniz.
Visual Basic
  1. Sub Isle()
  2. Dim Kyt As Recordset
  3. Set Kyt = CurrentDb.OpenRecordset("SELECT * FROM Hata")
  4. If Kyt.RecordCount = 0 Then
  5. Do Until Kyt.EOF
  6. ******islem yapilacak yer*******
  7. Kyt.MoveNext
  8. Loop
  9. Kyt.Close
  10. Set Kyt = Nothing
  11. End Sub





  Alıntı
Bu mesajı beğenenler:
#3
(13-10-2023, 08:59)dsezgin demiş ki: Bir tane çapraz sorgu hazırlayın,
Visual Basic
  1. TRANSFORM Count(Veri.veri2) AS VerSay SELECT Format([tarih],"Short Date") AS Trh FROM Veri GROUP BY Format([tarih],"Short Date") PIVOT Veri.veri2



Bir tanede Ekleme sorgusu
Visual Basic
  1. INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı], 1, 3, 13, 108, 114, 132, 136, 140 ) SELECT Query1.Trh, "Veri2" AS TIPI, Query1.[1], Query1.[3], Query1.[13], Query1.[108], Query1.[114], Query1.[132], Query1.[136], Query1.[140] FROM Query1



Ekleme sorgusunu çalıştırdıktan sonra 3, 13,... sütunlarına ait çapraz sorguda ki  PIVOT alanını değiştirin ve ekleme sorgusundaki TIPI allananındaki Veri1.2. 3.... olan yeri değiştirin ve ekleme sorusunu çalıştırın.

140 sütuna kadar tekrarlarsanız Yeni Tablo verileri oluşturursunuz.

VBA da Kod ile Hata tablosunu SELECT yaparak yukarıdaki SQL'ler ile prosedür hazırlayabilirsiniz.

Analizlerini icin VBA da DAO da veri cagirma islemi her daim bilmelisiniz.
Visual Basic
  1. Sub Isle()
  2. Dim Kyt As Recordset
  3. Set Kyt = CurrentDb.OpenRecordset("SELECT * FROM Hata")
  4. If Kyt.RecordCount = 0 Then
  5. Do Until Kyt.EOF
  6. ******islem yapilacak yer*******
  7. Kyt.MoveNext
  8. Loop
  9. Kyt.Close
  10. Set Kyt = Nothing
  11. End Sub



Hocam valla bir işe bulaştım ama bulaşmaz olaydım. Aslında herşeyi yapmıştım ama program yavaş çalışınca değişikliğe gittim. Şimdi en önemli raporlama kısmını yeni şekilde dönüştüremiyorum.

Çapraz sorguları oluşturup en son bir sorgu ile birleştirip rapor sayfasını oluşturmuştum. Ama veri sayfasında çok aşırı veri olduğu için yarım saatlik verilerden günlük ve aylık verileri hesaplarken program çok yavaş çalıştı. Bu nedenle veri sayfasındaki saatlik verileri, ortalama ve say gibi işlevler ile günlük verilere dönüştürüp başka bir tabloya günlük veri olarak insert ettim ve veri sayfasını sildim. Bu şekilde program daha hızlı çalıştı.

Ama hata kodlarını sql ile bir şekilde saydırıp yeni tabloya alamıyorum.


Bana açıkcası aşağıdaki gibi mantıkla bir kod lazım. Left join leri arttırdığım zaman bu şekilde sadece veri1'in hata kodunu sayıyor  ve hem veri1'de hemde veri2'de aynı değerler oluyor.

Belki iç içe sorgu yapmak lazım ama yapamadım.



Visual Basic
  1. Dim Kyt As New ADODB.Recordset
  2. sQLA = "SELECT [hata].[kod] as kod,day([veri].[tarih]) as gun,Count([veri].[veri1) AS txtveri1,Count([veri].[veri2) AS txtveri2 FROM [hata] LEFT JOIN [veri] ON [hata].[KOD] = [veri].[veri1] and [hata].[KOD] = [veri].[veri2]  " & _
  3. "WHERE (((Year([veri].[tarih])) = ""2023"")) GROUP  BY [hata].[kod],day([veri].[tarih])"
  4. Kyt.Open Replace(sQLA, "|", Chr(34)), CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  5. If Kyt.RecordCount = 0 Then Exit Sub
  6. Dim GecGun As String, Veri As Double
  7. Do Until Kyt.EOF
  8.  
  9.        CurrentDb.Execute "INSERT INTO YeniTablo (gun,hata,veri1,veri2) VALUES(t1(),veri()," & Kyt!gun & "," & Kyt!Hata & ", " & Replace(Kyt!veri1, ",", ".") & ", " & Replace(Kyt!txtveri2, ",", ".") & ")"
  10.  
  11.  
  12.  
  13. Kyt.MoveNext
  14. Loop
  15. Kyt.Close
  16. Set Kyt = Nothing





  Alıntı
Bu mesajı beğenenler:
#4
Visual Basic
  1. Sub jj()
  2. CurrentDb.Execute "DELETE * From [Yeni Tablo]"
  3. Dim SW As Long
  4. For SW = 1 To CurrentDb.TableDefs("Veri").Fields.Count - 2
  5. CurrentDb.Execute "INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı]) SELECT Format([tarih],'Short Date') AS Trh, 'veri" & SW & "' As Sutun FROM Veri GROUP BY Format([tarih],'Short Date') ORDER BY Format([tarih],'Short Date')"
  6. Next SW
  7. Dim Kyt As New ADODB.Recordset, SutSay, Sayac As Long
  8. Kyt.Open "SELECT * FROM [Yeni Tablo] ORDER BY Tarih", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
  9. If Kyt.RecordCount = 0 Then Exit Sub
  10. SutSay = Kyt.Fields.Count - 1
  11. Do Until Kyt.EOF
  12.    For Sayac = 3 To SutSay
  13.             Kyt(Sayac) = DCount("*", "Veri", "Format([tarih],'yyyymmdd')=" & Format(Kyt.Fields(1), "yyyymmdd") & "  And  Veri.[" & Kyt![Veri Adý] & "]=" & Kyt.Fields(Sayac).Name)
  14.    Next Sayac
  15.    Kyt.Update
  16. Sayac = 3
  17. Kyt.MoveNext
  18. Loop
  19. Kyt.Close
  20. Set Kyt = Nothing
  21. End Sub



ile yapılır.


Eklenti Dosyaları
.rar   Capraz(Snapper).rar (Boyut: 25,82 KB / İndirilme: 18)



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  çapraz Sorgu toros333 2 133 04-12-2023, 22:02
Son Mesaj: hüsün
  Acces Raporda Metin Kutusundaki Yaziyi Sol Alttan Sağ üste Doğru çapraz Yazdırmak ŞabanTR 4 170 09-01-2023, 12:43
Son Mesaj: ŞabanTR
  [SORGU] çapraz Sorgu Koşulu Sağlayamayan Görülmüyor snapper 5 229 26-05-2022, 13:56
Son Mesaj: snapper
  [SORGU] Access çapraz Sorgu Koşul Kullanmak erdalcetinoutlook 3 460 04-02-2021, 10:14
Son Mesaj: sametunal
  [SORGU] çapraz Sorgu Temelli Raporlarda Koşul / Filtre Kullanmak ctnerdal 2 484 31-01-2021, 19:48
Son Mesaj: ctnerdal
  [SORGU] çapraz Sorgu Ile Oluşturulan Grafik ekremer1969 2 395 28-01-2021, 17:39
Son Mesaj: ekremer1969
  [SORGU] Acces çapraz Sorguların Hesaplanması admylmaz@gmail.com 1 386 08-01-2021, 20:22
Son Mesaj: dsezgin
  [SORGU] çapraz Sorguda Sıralamayı Değiştirme ekremer1969 2 412 30-12-2020, 07:45
Son Mesaj: ekremer1969

Foruma Git:


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