Print side | Luk vindue

Makro med Sletning i to tabler

Udskrevet fra: Dansk Access Forum
Kategori: Hjælp til Access
Forum navn: VBA / Makro
Forum beskrivelse: Spørgsmål vedr. den programmeringsmæssige del af Access
Web-adresse: https://www.accessforum.dk/forum_posts.asp?TID=77
Udskrevet den: 27-04-2024 kl. 17:34


Emne: Makro med Sletning i to tabler
Besked fra: Jones
Emne: Makro med Sletning i to tabler
Posteringsdato: 16-12-2015 kl. 12:18
Hej.

Jeg er ny inde for access, og stå nu og mangler lidt hjælp med makro.

Jeg har en formular, hvor jeg indtaster noget information, som så bliver Gemt i mine to tabler "OrdersheetSamples" og "TransportInfo" - Når der bliver trykket på knappen "Save Record"

Udover det har jeg en "Delete Record" knap, som sletter den record som lige er blevet oprettet, i tabellen "OrderSheetSamples".

Her kommer så mit spørgsmål:
Hvordan får jeg den til at slette den record som også bliver oprettet i "TransportInfo". De to tabler har en relation til hinanden, fra "OrdersheetSamples" - Felt "TransportInfo" til "ID" i tablen "transportInfo". Det vil sige at den skal slette den som matcher hinanden. (Hvis det giver nogen mening:)





Svar:
Besked fra: hkh
Posteringsdato: 16-12-2015 kl. 12:41
Nu skriver du ikke noget om dine tabellers struktur, men hvis opretter en relation mellem tabellerne med kaskadevis sletning, skulle det gå af sig selv.

Der er også en anden vej hvis du vil gøre det selv.
docmd.setwarning false
DoCmd.RunSQL "DELETE DIN_TABEL.FELT_I_TABEL FROM DIN_TABEL WHERE (((DIN_TABEL.FELT_I_TABEL )=" & Indhold_af_fællesnævner & "));"
docmd.setwarning true

Først slås advarsler fra.
posten slettes
advarsler aktiveres igen.

koden skal placeres i en hændelsesprocedure som følge af klik på en knap.

-------------
Hans


Besked fra: Jones
Posteringsdato: 16-12-2015 kl. 12:46
Tak for dit hurtige svar.

Tabellen OrderSheetSamples har en relation til TransportInfo, skrev jeg også før. Men ved ikke lige hvordan man laver med kaskadevis sletning? :)


- Lige meget, jeg fandt ud af det. Jeg vil lige ændre det, også se om det ikke fungere. Mange tak :)


Besked fra: hkh
Posteringsdato: 16-12-2015 kl. 12:53
Du har en knap i din Access der hedder 'Relationer' der kan du trække en forbindelse fra et felt i en tabel til et andet felt i en anden tabel. Så har du oprettet en relation, ved at højreklikke på stregen mellem de to felter kan du vælge egenskaber og ændre indstillinger for relationen.

Felterne skal være af samme type og mindst et felt skal være unikt, dvs. der må ikke forekomme dubbletter.

-------------
Hans


Besked fra: Jones
Posteringsdato: 16-12-2015 kl. 13:53
Fandt frem til hvordan det skulle ændres, og de to havde allerede en relation til hinanden.

Jeg har tilvalgt "Kaskadevis sletning af relaterede poster" - Men den vil stadig ikke slette posten i "transportInfo", den sletter kun den post i "OrdersheetSamples"

Kan det være selve relationstypen, som skal ændres eller kan det være selve den makro som deleten knappen har?

Min Makro til Delete knappen kan ses her.
uploads/151/makro.png" rel="nofollow - uploads/151/makro.png


Besked fra: hkh
Posteringsdato: 16-12-2015 kl. 15:58
Jeg er ikke helt sikker, men hvilken tabel indeholder det unikke felt i relationen?
Hvilke tabel har du på skærmen når du sletter?



-------------
Hans


Besked fra: Jones
Posteringsdato: 18-12-2015 kl. 10:39
Jeg fandt frem til fejlen og fik det løst. Jeg havde vendt relationen forkert, så da jeg fik vendt den om fungeret alt som det skulle :)

Learning by doing. Mange tak for hjælpen :)


Besked fra: hkh
Posteringsdato: 18-12-2015 kl. 10:43
Super!
Du spørger bare igen hvis der er noget andet vi kan hjælpe med.

-------------
Hans


Besked fra: Jones
Posteringsdato: 05-01-2016 kl. 10:15
Hej,

Er så endt i et ny problem, stadig relationer Ouch

Problemet er stadig det samme som før, den sletter kun fra den ene TABLE når jeg trykker slet og ikke den anden.

Den gør det fint, når jeg står inde i tablen, men ikke i min forms.

Her er SQL Query for min form, den kommer med fejlen at "JOIN-udtrykket understøttes ikke";

SELECT OrderSheetSamples.*, ReceiverAddress.Receiver, ReceiverAddress.[Contact person], ReceiverAddress.Email, ReceiverAddress.[Tlf/Fax], ReceiverAddress.Address1, ReceiverAddress.Address2, ReceiverAddress.Address3, ReceiverAddress.Country, OrderSheetSamples.[No Reference], TransportInfo.*, TransportInfo.[No Reference]
FROM (ReceiverAddress INNER JOIN OrderSheetSamples ON ReceiverAddress.[ID Receiver] = OrderSheetSamples.Reciever) RIGHT JOIN TransportInfo ON OrderSheetSamples.Id = TransportInfo.OrderSheetID;

Kan godt forstår, at man ikke kan have en INNER JOIN og en RIGHT JOIN sammen, men uanset hvad jeg sætter dem til (to LEFT eller RIGHT). Så sletter den kun fra den ene table når jeg trykker på min makro DELETE knap..





Print side | Luk vindue