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.
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
Sub Isle()
Dim Kyt AsRecordset
Set Kyt =CurrentDb.OpenRecordset("SELECT* FROM Hata")
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
Sub Isle()
Dim Kyt AsRecordset
Set Kyt =CurrentDb.OpenRecordset("SELECT* FROM Hata")
If Kyt.RecordCount = 0 Then
DoUntil Kyt.EOF
******islem yapilacak yer*******
Kyt.MoveNext
Loop
Kyt.Close
Set Kyt =Nothing
EndSub
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
Dim Kyt AsNewADODB.Recordset
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] " & _
"WHERE (((Year([veri].[tarih]))= ""2023"")) GROUP BY [hata].[kod],day([veri].[tarih])"
For SW = 1 ToCurrentDb.TableDefs("Veri").Fields.Count - 2
CurrentDb.Execute "INSERT INTO [Yeni Tablo] ( Tarih, [Veri Adı])SELECTFormat([tarih],'Short Date') AS Trh, 'veri" & SW & "' As Sutun FROM Veri GROUP BY Format([tarih],'Short Date') ORDER BY Format([tarih],'Short Date')"
Next SW
Dim Kyt AsNewADODB.Recordset, SutSay, Sayac AsLong
Kyt.Open "SELECT* FROM [Yeni Tablo] ORDER BY Tarih", CurrentProject.Connection, adOpenDynamic, adLockOptimistic