🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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???
#258
Author: Tom Jastrzebski
Date: Mon, 23 Nov 1998 10:30
18 lines
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???
#259
Author: Dymitr
Date: Mon, 23 Nov 1998 12:05
19 lines
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???
#260
Author: Michał Ciborowski
Date: Mon, 23 Nov 1998 15:42
27 lines
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