Avatar billede cyaegha Nybegynder
19. december 2001 - 10:58 Der er 18 kommentarer og
1 løsning

slette poster i tabel

Hej
Lige en lille let en:
Jeg har lavet en forespørgsel, der fint fungerer og udvælger de poster jeg gerne vil have. Disse poster vil jeg gerne slette men jeg får fejl \"could\'nt delete from specified tables.\" Jeg er godt nok ikke nogen haj til sql, så det kunne jo være at en af jer kunne se hvad der var galt.

DELETE tabel.*, tabel.name
FROM tabel INNER JOIN [tabel 2] ON (tabel.Date = [tabel 2].Date) AND (tabel.name = [tabel 2].name)
WHERE (((tabel.name)=\"AKF\"));


Har desværre travlt lige nu men er tilbage imorgen og uddeler en ekstra stor for at i har ventet lidt på pointene:)
Avatar billede bennytordrup Nybegynder
19. december 2001 - 10:59 #1
DELETE Tabel.*
FROM ... (resten af din SQL)
Avatar billede cyaegha Nybegynder
19. december 2001 - 11:03 #2
nej, det er prøvet, og det giver det samme resultat.
Avatar billede senj Nybegynder
19. december 2001 - 11:05 #3
Er det ikke bare:

DELETE FROM tabel - og så din join og din where clause?
Avatar billede bennytordrup Nybegynder
19. december 2001 - 11:07 #4
Hvordan ser dine index ud på de to tabeller (hint: specielt omkring joinfelterne)
Avatar billede bennytordrup Nybegynder
19. december 2001 - 11:07 #5
Hvis du ikke har de korrekte indeks, så får du et read only recordset ud af det.
Avatar billede mugs Novice
19. december 2001 - 11:08 #6
DELETE Tabel2.felt1
FROM Tabel2
WHERE (((Tabel2.felt1)=\"b\"));
Avatar billede terry Ekspert
19. december 2001 - 11:22 #7
DELETE * FROM YourTable
Avatar billede cyaegha Nybegynder
20. december 2001 - 10:53 #8
Jeg var ikke lige opmærksom på det med nøglerne. De var forskellige. Nu har jeg fjernet nøglerne så der ikke er nogen nøgler i nogen tabel. Og så får jeg fejlmeddelelsen
\"Operation must use an updateable query.\"

mugs;terry: Jeg har brug for min join, da der er mange flere poster med name=AKF
Avatar billede mugs Novice
20. december 2001 - 11:08 #9
cyaeqga > Jeg er på vej til arbej, og har ikke megen tid. Men et skud i tågen vil være at se på JOIN-egenskaben Kaskadevis sletning. Men jeg kan ikke lige i farten huske konsekvenserne af at bruge det, bortset fra, at du skal være 110% sikker på hvad du laver.
Avatar billede bennytordrup Nybegynder
20. december 2001 - 11:17 #10
Du skal have unikke nøgler på således, at de enkelte poster kan identificeres korrekt.
Avatar billede cyaegha Nybegynder
20. december 2001 - 11:20 #11
Jeg har helt glemt at nævne det, men forespørgslen virker fint som almindelig udvælgelsesforespørgsel. Det er først nå jeg vil slette at problemet kommer.
Hvad menes med kaskadevis sletning?
Avatar billede bennytordrup Nybegynder
20. december 2001 - 11:23 #12
Den kan fint virke som udvælgelse, men hvis du kører den i Access, så får du ikke lov at redigere i resultatsættet, og du kan ikke tilføje nye poster (der er ikke en række med * i venstre side).
Avatar billede cyaegha Nybegynder
20. december 2001 - 11:43 #13
benny: Jeg får vist alle kolonner (*), samt felt0 helt ude til højre \" tabel.*, tabel.name\", når jeg kører som alm. foresp.
Avatar billede bennytordrup Nybegynder
20. december 2001 - 11:45 #14
Har du en række i resultatsættet, hvor du kan tilføje en ny?
Avatar billede bennytordrup Nybegynder
20. december 2001 - 11:45 #15
i.o.w: Når du kører forespørgslen, har du så en indtastningsrække nederst?
Avatar billede cyaegha Nybegynder
20. december 2001 - 12:02 #16
Du har ret der ikke nogen indtastnigsmulighed.
Det hænger vel sammen med \"updatable query\", jeg ved bare ikke hvor jeg skal ændre egenskaben?
Det tog lidt lang tid for jeg kom til at starte en forkert foresp. som tog ti min.
Avatar billede bennytordrup Nybegynder
20. december 2001 - 12:10 #17
Om det er et updatable query afhænger af indeks på de tabeller, du joiner. Der skal være unikke indeks på - prøv dig lidt frem til du får et updatable query
Avatar billede cyaegha Nybegynder
20. december 2001 - 12:28 #18
Jeg fandt ikke ud af hvad problemet helt korrekt var men jeg har løst det. Jeg hentede alle \"AKF\" ud af tabellen og ind i en ny tabel: \"akf\" Hvor jeg lavede en ny forespørgsel, hvor det ikke var nødvendigt at have en WHERE... Dette lykkedes.
Jeg havde inden prøvet at sætte alle nøgler til at være ens i tabellerne. Men det var åbenbart ikke nok for jeg fik samme fejl. Jeg har også prøvet med WHERE name=\"x\" på den nye foresp. og det virker stadig fint.

Så nu tager jeg og sletter alle AKF og indsætter mine redigerede akf.

DELETE akf.*
FROM [tabel 2] INNER JOIN akf ON ([tabel 2].Date = akf.Date) AND ([tabel 2].name = akf.name);

Så benny du får point, selvom det ikke var en løsning så gjorde du mig opmærksom på det med nøglerne. Hvorfor skal der egentlig være disse indeks?
Avatar billede bennytordrup Nybegynder
20. december 2001 - 12:48 #19
De indeks, der skal være der, skal være unikke på i hvert fald den ene side. Det er for, at Access kan oprette poster i begge tabeller uden, at den ene tabel får herreløse poster i den anden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester