Avatar billede hnto Nybegynder
09. juli 2003 - 14:34 Der er 11 kommentarer og
1 løsning

Lille SQL i access 97

hvad går galt her idet den skriver at den ikke kan sklette fra specified table ?

DoCmd.RunSQL "DELETE ikke_aktive.* FROM article_stock INNER JOIN ikke_aktive ON article_stock.EAN = ikke_aktive.Ean"
Avatar billede hnto Nybegynder
09. juli 2003 - 14:37 #1
Det er taget fra en forespørgsel og jeg synes det lyder mærkeligt den måde access har valgtat defienre det på.

Jeg havde forestillet mig noget ala:

DELETE * from ikke_aktiv
WHERE INNER JOIN ikke_aktive ON article_stock.EAN = ikke_aktive.Ean"

( men hvad.... jeg er ej heller SQL haj ;-)
09. juli 2003 - 14:38 #2
Prøv denne i stedet:

Delete From Ikke_Aktive Where ikke_aktive.Ean in (Select EAN From article_stock.EAN)
09. juli 2003 - 14:39 #3
Der var lige en lille fejl:
Delete From Ikke_Aktive Where Ean in (Select EAN From article_stock)
Avatar billede hnto Nybegynder
09. juli 2003 - 14:41 #4
njet.... den leder nu efter en db der skulle ligge lokalt og hedde ikke_aktive.mdb
Det kan ikke passe man ikke kan lave denne delete uden at skulle dim DB as database
set db = current osv... eller hvad ??
Avatar billede hnto Nybegynder
09. juli 2003 - 14:43 #5
sådan TJ.. kan du lige forklare sammensætningen af din SQL da den ikke ligner en vanlig.... (15 spir mere for dette )
09. juli 2003 - 14:48 #6
En alm. inner join er i virkeligheden et kriterie, som fortæller at den kun skal medtage de poster, hvor de joinforbundne felter er ens.

Det er lidt det samme, jeg gør.....jeg benytter bare en subquery til at udpege de EAN-koder som skal være gældende. SQL'en i parentes er et udtræk i sig selv og returnere én kolonne med en masse EAN-koder fra article_Stock.
Jeg siger så bare, at den skal slette de poster, hvor EAN-koden findes blandt disse EAN-koder.

Jeg ved ikkeom dette gav nogen mening. Det er lidt svært at forklare det med ord ;o)
Avatar billede hnto Nybegynder
09. juli 2003 - 14:51 #7
takker
09. juli 2003 - 14:54 #8
Ditto :o)
Avatar billede hnto Nybegynder
09. juli 2003 - 14:59 #9
er klar over det basale i SQL'en MEN... hvorfor er det ikke DELETE * FROM, men kun EAN ?
09. juli 2003 - 15:04 #10
Når der kun indgår én tabel i FROM-delen af forespørgslen, så er * overflødig.
Prøv at copy/paste SQL'en ind i en forespørgsen og se hvordan Access fortolker det (vær opmærksom på, at Access kan finde på at ændre koden når du har vist den i Designvisning)
Avatar billede hnto Nybegynder
09. juli 2003 - 15:20 #11
takker, så er forståelsen på plads...

NB.
Jeg vidste ikke at man i designvisning af en query kunne bruge In ( select... SQL script) i criteria.. ret smart da man herved kan undlade endnu en forespørgsel ;-)
09. juli 2003 - 15:21 #12
Præcis :o)
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