Birbirine bağlı kayıtları ADO ya da SQL sorgusu ile sildirebilir misiniz?
#1
access-sql-16 
Selamlar sevgili Access-SQL.com sakinleri,böyle diyesim geldi

Bilmem olur mu bu saate yazdım, acilen/mutlaka böyle bir şeye ihtiyacım vardı. Confused Olmasını ümit ediyorum çünkü Access'te iş verilerle çalışmak olunca SQL ve ADO ile yapılamaz olup da VBA ile olacaksa tuhaf olurdu.

Wacko İlginç sorum şu:

Birbirine UstId alanıyla bağlı kayıtlarım var. Bu tablo yerine göre hiyerarşik yapıda her şey barındırabilir. Burada Id kayıtları tanımlar ve UstId ile de onun alt birimleri tanımlanır. Örnek:

Id__UstId__Kayıt
1___|___0__Dünya
2___|___1__Asya
3___|___2__Türkiye
4___|___2__Rusya
5___|___2__İran
6___|___1__Avrupa
7___|___6__Almanya
8___|___6__İtalya

Örnekte açıklarsam en üst seviyede Dünya var ve daha üstü olmadığı için UstId değeri 0'dır. Ona bağlı olan ve UstId değeri 1 olan Asya ve Avrupa var. Asya'nın Is'si 2 ve ona bağlı olan ülkelerin UstId'si de doğal olarak 2'dir. Aynı bağlılık Avrupa kıtası için de geçerlidir.

Olmasını istediğim şey ise herhangi bir kaydı silince ona ait tüm alt kayıtların da SQL veya ADO ile sırayla silinmesi. Örneğin Asya'yı silersem Id'si 2 olan ve UstId 2 olan kayıtları ve UstId'si 2 olan kayıtların da altında kayıt varsa onların da silinmesi. (Türkiye'nin de altında iller olabilirdi.)
Yani bir kayıt silinirken altında ne kadar bağlı kayıt varsa silinecek. Burda üsttekilere dokunmuyoruz tabi ki.

Birinci safha çok kolay oluyor. Seçili kayıt ve bir derece alt kayıtları sildirmek. Ama ya onun da altında bir kademe daha bağlı kayıt varsa.

Böyle acayip bir tablo yapısında SQL sorgusu ya da ADO ile mümkün müdür bu isteğim? Wubclub

Yardımlarınız için çok çok teşekkürler.



Eklenti Dosyaları
.zip   sql_ado_acayip_durum.zip (Boyut: 13,96 KB / İndirilme: 98)
Eek VT:Veri Tabanı, AVT: Access VT, MS:Microsoft, Kapaç: Kapa ve aç (rebot ve açkapa saçmalığına çözümüm)
Twitcy Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
? Cinnet geçirmemek için Access 2010'u SP2 ile kullanalım.
? Sürekli sebepsiz hatalar oluyor da AVT uçuyorsa siz de Ofis kurulmunu uçurun çözülüyor. Sorun kurulum dosyanızda! Farklısını bulun!
? VT dağıtıma çıkana kadar bölmek zaman kaybıdır!
{ Veri Tabanı Mantığı } {Access 2010 çökmelerine çözüm } { 60 Günlük Ofis 2010 Pro Türkçe } { Kayıtları Yan Yana Göstermek }
{ Forma Rapora Resim Fotoğraf Eklemek En kolay En Sağlam En Zengin Teknik }



  Alıntı
Bu mesajı beğenenler:
#2
Merhaba;

Alıntı: Birinci safha çok kolay oluyor. Seçili kayıt ve bir derece alt kayıtları sildirmek. Ama ya onun da altında bir kademe daha bağlı kayıt varsa.

Verdiğiniz örnek böyle değil sanırım?? Üstelik tekrar açıklamanızı rica edeceğim Wink
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:
#3
Sayın Mehmeteser
Eğer ilişkilendirmede tablo kayıtlarını ardarda sil güncelle seçeneklerini seçmiş iseniz ilave komuta gerek yok zaten istediğiniz işlemler gerçekleşecektir.
ilişkilendirme yapmamışsanız ve yapmayacaksınız o zaman üst ID içindeki AltID ler bulunur ve buna göre sql ile sorun çözümlenebilir. Örneğinizde tek tablo oldogu için örnek yapamıyorum diğer tabloyuda eklerseniz örnek yapabiliriz.
İyi çalışmalar



  Alıntı
Bu mesajı beğenenler:
#4
Merhaba,

Bu yapı ilginç gelebilir ama bazı durumlarda kaçınılmaz olarak kullanılan bir yapı. Tasarımın amacı ise sınırsız sayıdaki esnek alt kaydı olan kayıtlar yaratmak. Bu sayede bu tablo kullanılarak TreeView(Apartman Yönetimi örneği SwicthBoard formu) ve menüler oluşturulabilir.

Eğer ilişki kurarak yapmak istesem sorun olurdu çünkü. Diyelim ana kayıtların olduğu bir tablom var. Bir alt seviye tablo daha ekledim. Bu da kıtalar olsun. Bir alt seviye daha eklemek istersem bu da ülkeler tablosu ve bir altı da iller tablosu olur. Bu sistemde bir sürü tablo oluşturmam lazım. Ayrıca bir firmanın bölümlerinin hiyerarşik sıralanması gerektiğinde ve bunu kullanıcıya form aracılığıyla girmesini istediğimizde bazı bölümlerin 3 alt birimi varken bazılarının 5 olabilir. Böyle olunca sürekli tablo ekletmek ve ilişki kurdurmak lazım.

Hem SwicthBoard hem birimler hem de departmanlar gibi durumlarda kullandığım tablo yapısı şart oluyor. Bu verileri genelde TreeView ile gösteririz formda. Bazen de açılır web menüleri şeklinde.

Tek tablo olduğu için ilişkilendirme de söz konusu olmuyor bu durumda. Burda Id ve UstIdaltId de denebilir ilişki yaratan alanlar.

Bir id silindiğinde önce UstId'si bu id'den olan kayıtlara bakılacak ve onlar silinecek. Ama silinmeden önce dallanma budaklanma var mı diye yine silinecek kaydın id'sine ait UStId'si olan kayıt var mı bakıp önce onları silecek. Bu en derine kadar olmalı. Örnek: Avrupa'yı sildim. id:6. Avrupa silinmeden ya da silindikten sonra da olur maksat silinsin, üstid'si 6 olan tüm kayıtların da silinmesi lazım ki ona bağlı alt kayıt kalmasın. 7 id nolu Almanya var. Bunu silerken tekrar bakılması lazım. Alamnyanın id'si 7, peki üstid'si 7 olan kayıt var mı. Bu şekilde silinen kaydın id'sine ait üstid'si olan kayıt kalmayana kadar işlem yapılmalı.

Ekte Treeview'de bir kaydı silince ona ait tüm alt birimlerin silinmesini saylayacak bu durum. Bu aslında TreeView için gerekliymiş gibi görünse de bu türde tablolar için zorunlu bir durum. Access ile TreeView ya da DHTML tipi menü yatatırken tablodan yaptığımız şey tabloyu sadece sergilemek. Geri kalan işlemler ise yine veritabanı işlemleri. Amaç verileri işlemek menü ya da treeview üzerindeki dalları değiştirmek değil. Birçok durumda lazım olan bir silme tekniği bu.

Umarım anlatabildim.


Eklenti Dosyaları
.zip   sql_ado_sil.zip (Boyut: 45,79 KB / İndirilme: 127)
Eek VT:Veri Tabanı, AVT: Access VT, MS:Microsoft, Kapaç: Kapa ve aç (rebot ve açkapa saçmalığına çözümüm)
Twitcy Yazan okuyan sağolsun, çözene saygılar. Kolaylaştırınız, zorlaştırmayınız.
? Cinnet geçirmemek için Access 2010'u SP2 ile kullanalım.
? Sürekli sebepsiz hatalar oluyor da AVT uçuyorsa siz de Ofis kurulmunu uçurun çözülüyor. Sorun kurulum dosyanızda! Farklısını bulun!
? VT dağıtıma çıkana kadar bölmek zaman kaybıdır!
{ Veri Tabanı Mantığı } {Access 2010 çökmelerine çözüm } { 60 Günlük Ofis 2010 Pro Türkçe } { Kayıtları Yan Yana Göstermek }
{ Forma Rapora Resim Fotoğraf Eklemek En kolay En Sağlam En Zengin Teknik }



  Alıntı
Bu mesajı beğenenler:
#5
sayın mehmeteser
sanırım anlaşılamayan noktalar var örneğinmizde noktaları netleştirseniz ( en az 2 örnek) ve bunlar silinecek deseniz sanırım daha iyi anlaşabileceğiz iyi çalışmalar



  Alıntı
Bu mesajı beğenenler:
#6
Merhaba;

Sorunuzu sanırım doğru anladım. Formdaki Sil düğmesine alttaki kodları yazdım..

Visual Basic
  1. If Me.BirimUstId = 0 Then
  2. CurrentDb.Execute "delete from birimler where " & Me.BirimId & " = [BirimId]"
  3. Else
  4. CurrentDb.Execute "delete from birimler where [BirimId] =" & Me.BirimId & _
  5. " and [BirimUstId]=" & Me.BirimUstId & " or " & Me.BirimId & " =[BirimUstId]"
  6. End If
  7. TreeView1.Nodes.Clear
  8. Call treeyap(TreeView1)
  9. TreeView1.Nodes(1).Selected = True
  10. Call sec



Ayrıca "treeyap(TV)" fonksiyonuna "on error resume next" ekledim..

Örneği de ekliyorum.. İnceleyiniz..
Javascript
  1. this.setState({sign:"Here comes the sun...."})







  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  [FORM] Kritere Bağlı Olarak Değerlerin Toplanması M_Kemal_Askeri 2 71 10-04-2026, 01:05
Son Mesaj: M_Kemal_Askeri
  Güncelleme Sorgusu çalışmıyor ? karaayhan 3 400 05-04-2025, 22:08
Son Mesaj: karaayhan
  Bağlı Tabloda şarta Göre Renklendirme Satir 2 358 19-12-2024, 15:38
Son Mesaj: Satir
  Tablodaki Alanı Alt Tablodan Alınan Değerle Güncelleme Sorgusu Lidervet 7 637 02-12-2024, 11:20
Son Mesaj: halily
  Ana Forma Bağlı Alt Formdaki Verilerin Ana Formda Toplamını Almak ozan028 5 495 09-09-2024, 17:14
Son Mesaj: ozan028
  Formda Liste Sorgusu anno 1 345 15-07-2024, 00:29
Son Mesaj: dsezgin
  Gücelleme Sorgusu evren89 2 352 18-05-2024, 23:19
Son Mesaj: evren89
  [FORM] Onay Kutususun şarta Bağlı Olarak Otomatik Olarak Işaretlenmesi Samih KARSLI 2 437 06-04-2024, 18:49
Son Mesaj: Samih KARSLI

Foruma Git:


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