Thread View: pl.comp.bazy-danych.msaccess
3 messages
3 total messages
Started by Tom Jastrzebski
Mon, 23 Nov 1998 10:30
Jak usunąć rekord tylko z jednej z dwóch połączonych tabel???
Author: Tom Jastrzebski
Date: Mon, 23 Nov 1998 10:30
Date: Mon, 23 Nov 1998 10:30
18 lines
1629 bytes
1629 bytes
Mam dwie tabele: Produkty i Grupy. Tworzę jeden recordset za pomocą SQL by móc wyświetlić produkty w tabelce: SELECT * FROM Products LEFT JOIN Groups ON Products.GroupID=Groups.GroupId Niestety konieczna jest również opcja usuwania produktu z listy. I tu jest problem: Usunięcie rekordu z takiej tabeli (raczej recordsetu) powoduje również skasowanie odpowiadającej mu grupy. Ciekawe, że ta sama operacja przeprowadzona na kwerendzie w Accessie nie kasuje grupy a tylko produkt. Nie znalazłem do tej pory nic w dokumenacji VB 6.0 na ten temat. Będę wdzięczny jeśli ktoś mógłby mi coś podpowiedzieć. Tomasz Jastrzębski mailto: tomaszek@cyf-kr.edu.pl
Re: Jak usunąć rekord tylko z jednej z dwóch połączonych tabel???
Author: Dymitr
Date: Mon, 23 Nov 1998 12:05
Date: Mon, 23 Nov 1998 12:05
19 lines
1739 bytes
1739 bytes
Możliwe są dwia rozwiązania:
1. W bazie danych masz ustawienie dla kasowania powiązanych rekordów (kiedy masz wymuszane sprawdzenie integralności) - oczywiście ta uwaga dotyczy bazy danych Access'a, czyli *.mdb. Wtedy wystarczy zmienić więzy integralności tak aby nie było zaznaczone "Usuwanie kaskadowe"
2. Kasować dane nie z recordset'u a biezpośrednio z tablicy [Products] za pomocą SQL, np.
S = "DELETE * FROM Products WHERE GroupID = " & Str(Me.JakasTamLista.Value)
DoCmd.SetWarnings False
DoCmd.RunSQL S
DoCmd.SetWarnings True
Sorry, rozwiązanie nieco Access'owe, tzn. w VB nie ma DoCmd, natomiast napewno jest jakiś tam odpowiednik tego (nie mam obecnie zainstalowanego VB ;-) więc nie mogę sprawdzić)
Pozdrawiam,
Dymitr
>
Re: Jak usunąć rekord tylko z jednej z dwóch połączonych tabel???
Author: Michał Ciborowski
Date: Mon, 23 Nov 1998 15:42
Date: Mon, 23 Nov 1998 15:42
27 lines
1635 bytes
1635 bytes
Dymitr napisał(a) w wiadomości: <73bj1n$8ur$1@sunsite.icm.edu.pl>... S = "DELETE * FROM Products WHERE GroupID = " & Str(Me.JakasTamLista.Value) DoCmd.SetWarnings False DoCmd.RunSQL S DoCmd.SetWarnings True Sorry, rozwiązanie nieco Access'owe, tzn. w VB nie ma DoCmd, natomiast napewno jest jakiś tam odpowiednik tego (nie mam obecnie zainstalowanego VB ;-) więc nie mogę sprawdzić) ___________ Tutaj prezentuję rozwiązanie VB: dim dbtemp as database set dbtemp = openatabase(nazwa.mdb) s="komenda SQL" dbtemp.execute (s) Michał Ciborowski e_mail: michalc@tim.com.pl
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads