mehoaga yazdı: 17 Kas 2024, 21:39
Eyvallah kardeşim teşekkürler.
İlk bakışta elimizde tek tablo var bunun üzerine her hafta yapılan çekiliş sonuçları yani çıkan sayıları kaydediyoruz. Buna ilaveten çıkan sayıları kolay olması açısından yani tablo1 e kayıtların hepsi tablo2 yede bu sayıları nasıl yazmalıyızki kafam karıştı sana sorarken sen anladıysan düzeltiver rica etsem. Yani kayıt yaparken her2 tablo aktif olacak. Ama sorgulama kısmı burda biraz karıştı galiba sütunları ayrı ayrı tablolara alırsak R1 sütunu için ayrı tablo r2 sütunu için ayrı tablo. Aklıma böyle birşey geldi. Bu şekilde olabilirmi yani.Access tarafında bu fazla tablolardan dolayı şişme yaparmı yani açılırken yavaş açılma gibi. Veya veritabanını fazla şişirmemek adına nasıl bir yol izlememiz lazım. Yani kayıt yeri tablo1 sorgulama yeri tablo2 olacak biraz toparladım galiba
İki Tablo Kullanma
Tablo1 (Kayıt Tablosu): Bu tabloya her hafta çekiliş sonuçlarını kaydedeceksin. Örneğin:
Tarih: Çekilişin yapıldığı tarih
R1: İlk çıkan sayı
R2: İkinci çıkan sayı
R3: Üçüncü çıkan sayı
Bu tabloya her hafta yeni sonuçlar ekleyeceksin.
Tablo2 (Sorgulama Tablosu): Bu tablo, Tablo1'deki verileri daha kolay incelemek için kullanılabilir. Ancak, bu tabloyu oluşturmak yerine, Tablo1'den istediğin bilgileri çekmek için sorgular (queries) oluşturabilirsin. Yani, Tablo1'deki verileri filtreleyerek veya sıralayarak istediğin sonuçları görebilirsin.
Performans ve Hız
Görünümler (Views): Eğer Tablo1'deki verileri sık sık sorguluyorsan, bu verileri daha hızlı görmek için bir "görünüm" oluşturabilirsin. Görünüm, verileri kopyalamaz, sadece Tablo1'deki verileri daha kolay görmeni sağlar.
Tablo Sayısı: Çok fazla tablo oluşturursan, Access programı yavaşlayabilir. Bu yüzden, mümkün olduğunca az sayıda tablo kullanmaya çalış. Tek bir tablo ile hem kayıt yapıp hem de sorgulama yapabilirsin.
Öneriler
Tek Tablo Kullan: Eğer verilerin çok karmaşık değilse, sadece Tablo1 kullanarak hem kayıt yapabilir hem de sorgulama yapabilirsin. Yani, verileri filtreleyerek istediğin sonuçları bulabilirsin.
Düzenli Temizlik: Veritabanını düzenli olarak kontrol et ve gereksiz verileri sil. Bu, veritabanının daha hızlı çalışmasını sağlar.
Kardeşim sen varya valla Hızır gibisin helali hoş olsun. Verdiğin bilgiler benim için hazine değerinde bunu bilesin bunda senin katkın daha çok. Kafamdan habire tasavvur ediyorum bu kadarına kafam bastı ama sen beni faka bastın şimdi her sütun için ayrıca tablo oluşturup diyelimki 6 sütunu ayrı ayrı tablolara paylaştırıp ondan sonra form aktif olduğunda 6 sütunlu tablolarımızda sorgu ekranınıza yansıssın. Daha rahat sorgulama yapabilelim. Daha kolayı ve rahatı varsa sen bana söyle. Queries sorgu keimesini biraz açarmısın. Ama aynı anda sütunlardan veriyi çekip nasıl sorgulayacağız kafam karıştı yine
Queries" (sorgular), veritabanlarında belirli bilgileri almak, güncellemek, silmek veya eklemek için kullanılan komutlardır. Veritabanı yönetim sistemlerinde (DBMS) sorgular, kullanıcıların verilerle etkileşimde bulunmasını sağlar.
Sorgu Nedir?
Sorgu, bir veritabanında belirli bir bilgi parçasını almak veya veritabanındaki verileri değiştirmek için yazılan bir komuttur. Sorgular, genellikle SQL (Structured Query Language) adı verilen bir dil kullanılarak yazılır.
Sorgu Türleri
Seçim Sorguları (SELECT): Veritabanından belirli verileri almak için kullanılır. Örneğin, bir tablodaki tüm kayıtları veya belirli bir koşula uyan kayıtları seçmek için kullanılır.
Örnek: SELECT * FROM Müşteriler WHERE Şehir = 'İstanbul';
Bu sorgu, "Müşteriler" tablosundaki İstanbul'da yaşayan tüm müşterileri getirir.
Ekleme Sorguları (INSERT): Veritabanına yeni kayıt eklemek için kullanılır.
Örnek: INSERT INTO Müşteriler (Ad, Şehir) VALUES ('Ahmet', 'Ankara');
Bu sorgu, "Müşteriler" tablosuna yeni bir müşteri ekler.
Güncelleme Sorguları (UPDATE): Var olan kayıtları güncellemek için kullanılır.
Örnek: UPDATE Müşteriler SET Şehir = 'İzmir' WHERE Ad = 'Ahmet';
Bu sorgu, adı "Ahmet" olan müşterinin şehrini İzmir olarak günceller.
Silme Sorguları (DELETE): Veritabanından kayıt silmek için kullanılır.
Örnek: DELETE FROM Müşteriler WHERE Ad = 'Ahmet';
Bu sorgu, adı "Ahmet" olan müşteriyi siler.
Sorguların Kullanım Alanları
Veri Analizi: Sorgular, verileri analiz etmek ve raporlar oluşturmak için kullanılır.
Veri Yönetimi: Veritabanındaki verileri düzenlemek ve güncellemek için sorgular kullanılır.
Gizlilik ve Güvenlik: Kullanıcıların belirli verilere erişimini kontrol etmek için sorgular kullanılabilir.
Sorgular, veritabanlarıyla etkileşimde bulunmanın temel yoludur. Veritabanındaki verileri almak, güncellemek veya silmek için kullanılırlar. SQL gibi dillerle yazılan sorgular, veritabanı yönetim sistemlerinde yaygın olarak kullanılır.
Veritabanı tasarımında her sütun için ayrı tablo oluşturmak genellikle önerilmez, çünkü bu durum veritabanının karmaşıklaşmasına ve yönetiminin zorlaşmasına neden olabilir. Bunun yerine, verilerinizi daha düzenli ve erişilebilir hale getirmek için aşağıdaki yöntemleri düşünebilirsin:
Tek Tablo Kullan:
Tek Tablo Oluştur: Tüm bilgileri tek bir tabloda tutmak en kolay yoldur. Örneğin, bir tablo oluşturursun ve bu tabloda şunlar olsun:
ID: Her kaydın benzersiz numarası (otomatik artar).
Çekiliş Tarihi: Çekilişin yapıldığı tarih.
R1, R2, R3, R4, R5, R6: Çekilişte çıkan sayılar.
Bu şekilde, her çekilişin sonuçlarını tek bir yerde görebilirsin.
Form Kullan:
Form Oluştur: Access programında, verileri girmek ve görüntülemek için bir form yapabilirsin. Form, kullanıcıların bilgileri daha kolay girmesine ve görmesine yardımcı olur. Örneğin, formda çekiliş tarihi ve çıkan sayıları girebilirsin.
Sorgu Oluştur:
Sorgu Kullan: Tek tablodan belirli bilgileri almak için sorgular oluşturabilirsin. Örneğin, belirli bir tarihteki çekiliş sonuçlarını görmek için bir sorgu yazabilirsin. Bu, istediğin bilgiyi hızlıca bulmanı sağlar.
4. Görünüm (View) Oluştur
Görünüm Kullan: Eğer verileri daha düzenli görmek istersen, bir "görünüm" oluşturabilirsin. Görünüm, belirli bilgileri gösterir ama verileri kopyalamaz. Yani, sadece istediğin bilgileri daha kolay görmeni sağlar.
Öneri
Hepsini Tek Tabloya Koy: Tüm bilgileri tek bir tabloda tutmak en basit ve en etkili yoldur.
Form Yap: Kullanıcıların verileri girmesi için bir form oluştur.
Sorgu ve Görünüm Kullan: İstediğin bilgileri hızlıca bulmak için sorgular ve görünümler oluştur.
Aşağıda, Access veritabanında kullanabileceğin bazı örnek sorgular (queries) veriyorum. Bu sorgular, tek bir tabloda bulunan verileri almak için kullanılabilir. Örnek olarak, "ÇekilişSonuçları" adında bir tablon olduğunu varsayıyorum.
1. Tüm Verileri Görüntüleme
Eğer tablodaki tüm verileri görmek istiyorsan, şu sorguyu kullanabilirsin:
SELECT * FROM ÇekilişSonuçları;
Bu sorgu, "ÇekilişSonuçları" tablosundaki tüm kayıtları getirir.
2. Belirli Bir Tarihteki Çekiliş Sonuçları
Eğer belirli bir tarihteki çekiliş sonuçlarını görmek istiyorsan, şu şekilde bir sorgu yazabilirsin:
SELECT * FROM ÇekilişSonuçları WHERE ÇekilişTarihi = #2024-11-17#;
Bu sorgu, 17 Kasım 2024 tarihindeki çekiliş sonuçlarını getirir.
Tarih formatı Access'te # işaretleri ile belirtilir.
3. Belirli Bir Sonuçla Eşleşen Kayıtlar
Eğer belirli bir sonuç (örneğin R1) ile eşleşen kayıtları görmek istiyorsan, şu sorguyu kullanabilirsin:
SELECT * FROM ÇekilişSonuçları WHERE R1 = 5;
Bu sorgu, R1 sütununda değeri 5 olan tüm kayıtları getirir.
4. Belirli Sütunları Görüntüleme
Eğer sadece belirli sütunları (örneğin, tarih ve R1) görmek istiyorsan, şu şekilde bir sorgu yazabilirsin:
SELECT ÇekilişTarihi, R1 FROM ÇekilişSonuçları;
Bu sorgu, sadece "ÇekilişTarihi" ve "R1" sütunlarını getirir.
5. Sonuçları Sıralama
Eğer sonuçları belirli bir sütuna göre sıralamak istiyorsan, şu şekilde bir sorgu yazabilirsin:
SELECT * FROM ÇekilişSonuçları ORDER BY ÇekilişTarihi DESC;
Bu sorgu, çekiliş tarihine göre en son tarihten en eski tarihe doğru sıralar.
Bu örnekler, Access veritabanında sorgu yazmanın temel yollarını gösterir. Sorgular, verilerini daha kolay analiz etmene ve istediğin bilgilere hızlıca ulaşmana yardımcı olur.
mehoaga yazdı: 17 Kas 2024, 22:32
Değerli kardeşim bunu access tarafında değilde SQL veritabanı olarak yapsak orda da şişme yaparmı.
Aşırı Tablo Kullanımı: Her sütun için ayrı tablo oluşturmak, veritabanının karmaşıklaşmasına ve yönetiminin zorlaşmasına neden olabilir. Bu, sorguların daha yavaş çalışmasına yol açabilir.
Gereksiz Veri: Kullanılmayan veya gereksiz verilerin veritabanında tutulması, disk alanını israf eder ve veritabanının büyümesine neden olur.
Yanlış İlişkilendirme: Veritabanı tasarımında ilişkilerin doğru bir şekilde kurulmamış olması, veri tekrarına ve dolayısıyla şişmeye yol açabilir.
Bu iki yerde de access ve sql tablolarında olur. Önerim elinden geldiğince gereksiz verileri silerek, tabloları az ve temiz tutmandır. O zaman şişme biraz daha kontrolünde olur.
Waaaw sen neymişsin ne abiuçuşa geçtik kemerleri bağlayalım. Usta valla diyecek söz kalmadı sana nasıl dua edeceğimi şaşıttın beni yaa. İyi güzel anlattında benim kafa hala almadı. Tek tablodan aynı anda 6 sütundan değişik sayıları aynı nasıl sorgulayacağız. Misal ID si 250 olan 5 14 21 33 44 49 sayılarını nasıl sorgulayacağız.
Eğer tek bir tabloda (örneğin, "ÇekilişSonuçları" adında) ID'si 250 olan bir kaydın 6 sütunundaki (örneğin, R1, R2, R3, R4, R5, R6) sayıları sorgulamak istiyorsan, SQL sorgusu şu şekilde olabilir:
Örnek Tablo Yapısı
Öncelikle, tablonun yapısını hatırlayalım:
Tablo Adı: ÇekilişSonuçları
Sütunlar:
ID
R1
R2
R3
R4
R5
R6
Sorgu Örneği:
ID'si 250 olan kaydın R1, R2, R3, R4, R5 ve R6 sütunlarındaki değerleri almak için şu sorguyu kullanabilirsin:
SELECT R1, R2, R3, R4, R5, R6
FROM ÇekilişSonuçları
WHERE ID = 250;
Açıklama
SELECT: Hangi sütunları almak istediğini belirtir. Bu örnekte R1, R2, R3, R4, R5 ve R6 sütunlarını seçiyoruz.
FROM: Hangi tablodan veri alacağını belirtir. Bu örnekte "ÇekilişSonuçları" tablosundan alıyoruz.
WHERE: Belirli bir koşulu belirtir. Bu örnekte, ID'si 250 olan kaydı seçiyoruz.
Bu sorgu çalıştırıldığında, ID'si 250 olan kaydın R1, R2, R3, R4, R5 ve R6 sütunlarındaki değerleri döndürecektir. Örneğin, eğer bu kaydın değerleri 5, 14, 21, 33, 44 ve 49 ise, sorgu sonucu bu değerleri göreceksin.
Eyvallah bu sefer oldu zannedersem. Peki aynı anda bunları sorguladığımızı farz edersek hatlar karışmasın. Yani veritabanında stack yapmasın yani kilitlenme veya ekranın donması gibi. Çünkü ben vakti zamanında vb,netle sorgulama yaparken izin vermiyordu. Tek tek ayrı yapabiliyordum oda bana can sıkıntısı veriyordu. 6 textbox kutusuna ayrı ayrı sayıları yaz sorgula sonra entera bas toplam sonucu bul. Yarın daha önce yaptığım o form görüntülerini paylaşırım ne demek istediğim daha iyi anlaşılır.
Kullanıcıların 6 farklı sayıyı girmesi için bir form oluşturabilirsin. Formda 6 adet TextBox (metin kutusu) ekle. Kullanıcı bu kutulara sayıları girdikten sonra bir "Sorgula" butonuna basarak sorgu işlemini başlatabilir.
Sorgu İşlemi
Kullanıcı butona bastığında, formdaki değerleri alarak bir SQL sorgusu oluşturabilirsin. Örneğin, kullanıcı 6 sayıyı girdikten sonra bu sayıları kullanarak sorgu yapabilirsin:
Dim sayi1 As Integer = CInt(TextBox1.Text)
Dim sayi2 As Integer = CInt(TextBox2.Text)
Dim sayi3 As Integer = CInt(TextBox3.Text)
Dim sayi4 As Integer = CInt(TextBox4.Text)
Dim sayi5 As Integer = CInt(TextBox5.Text)
Dim sayi6 As Integer = CInt(TextBox6.Text)
Dim sorgu As String = "SELECT * FROM ÇekilişSonuçları WHERE R1 IN (" & sayi1 & ", " & sayi2 & ", " & sayi3 & ", " & sayi4 & ", " & sayi5 & ", " & sayi6 & ")"
Performans ve Kullanıcı Deneyimi
Asenkron Sorgular: Eğer uygulaman destekliyorsa, sorguları asenkron olarak çalıştırarak kullanıcı arayüzünün donmasını önleyebilirsin. Bu, sorgu tamamlanana kadar kullanıcıya başka işlemler yapma imkanı tanır.
Tam olarak donma olayını bilmesem de bu önerilerde bulunabilirim. Umarım sorunu doğru anlamışımdır.
Vakti zamanında visual basic ile yaptığım ekran görüntülerini paylaşıyorum. Burda bile textbox ların içine hangi sütunda hangi sayıyı arıyorsam onu yazıyordum. Sonucu alıyordum iyi güzelde her sütun için aynı sayıyı yazmak veya değşik sayı insanı zorluyor. ama güzel tarafı sütun harici sonucu ekrana veriyor ilaveten entera bastımı sayının toplam sonucu vermesi de hoş oluyordu.
İlaveten o zaman kullandığım textbox kutularının sorgularınıda aktarıyorum.
Private Sub Command2_Click() ‘Enter a basınca işleyen kod
Dim ArananKod As Integer
On Error Resume Next
ArananKod = Text1.Text
If (Trim$(ArananKod)) <> "" Then
Data1.RecordSource = "Select ID,r7,TARIH,tpl From SAYISAL where r7 LIKE '*" + Text1.Text + "*' order by r7"
Data1.Refresh
Text1.SetFocus
End If
End Sub
Private Sub Text1_Change()
On Error Resume Next
Dim ArananKod As Integer
On Error Resume Next
ArananKod = Text1.Text
If (Trim$(ArananKod)) <> "" Then
Data1.RecordSource = "Select ID,r7,TARIH,tpl From SAYISAL where r7 LIKE'*" + Text1.Text + "*' order by r7 ;" ':and r2 LIKE'*" + Text2.Text + "*' and r3 LIKE'*" + Text3.Text + "*' and r4 LIKE'*" + Text4.Text + "*' and r5 LIKE'*" + Text5.Text + "*' and r6 LIKE'*" + Text6.Text + "*' order by r1,r2,r3,r4,r5,r6;"
Data1.Refresh
Command4_Click
Text1.SetFocus
End If
End Sub