webForumDet fria alternativet

Tilläggsfråga i Access??

2 svar · 770 visningar · startad av AndreasC

AndreasCMedlem sedan mars 20011 964 inlägg
#1

Försöker skapa en tilläggsfråga i Access utan framgång. Resultatet av frågan blir inte som jag vill.

Jag vill lägga till poster från en tabell till en annan tabell. Jag vill sätta villkor som talar om vilka poster som ska läggas till och vilka som inte ska läggas till. Jag vill ha 3 olika villkor som om något eller några av dem uppfylls gör att frågan lägger till just de posterna till måltabellen. De poster som inte uppfyller villkoren ska inte läggas till måltabellen.

Villkor 1: Artikelnamn i källtabell ska INTE vara lika som artikelnamn i måltabell OCH P i källtabell ska INTE vara lika som P i måltabell.

Villkor 2: Artikelnamn i källtabell ska INTE vara lika som artikelnamn i måltabell OCH P i källtabell ska vara lika som P i måltabell.

Villkor 3: Artikelnamn i källtabell ska vara lika som artikelnamn i måltabell OCH P i källtabell ska INTE vara lika som P i måltabell.

Ifall något eller några av ovanstående villkor uppfylls så flyttas just de posterna till måltabellen.

Vad jag vill uppnå med denna fråga är att alla poster utom de där både Artikelnamn och P är samma som redan befintlig post i måltabellen ska läggas till måltabellen. Detta eftersom en artikel kan ha samma artikelnamn men inte samma värde i fältet P som för en redan befintlig artikel i måltabellen, eller tvärtom, en artikel kan ha samma P men inte samma artikelnamn. I båda fallen ska de aktuella posterna läggas till måltabellen.

Poster som inte har varken artikelnamn eller P som stämmer överens med någon post i måltabellen ska också läggas till med frågan, men de som har samma artikelnamn och samma p som redan befintlig post ska inte läggas till.

Hur jag än utformar frågan så lägger den till alla poster från källtabellen till måltabellen och struntar helt i vad villkoren säger.

Hur skulle ni utforma detta för att det ska ge önskat resultat?

Koden jag har nu ser ut såhär:

INSERT INTO tblProdukter ( Artikelnr, Artikelnamn, P, Antal_i_lager, Ordernr, TaBort, Utfyllnad )
SELECT tblTemp_Produkter.Artikelnr, tblTemp_Produkter.Artikelnamn, tblTemp_Produkter.P, tblTemp_Produkter.Antal_i_lager, tblTemp_Produkter.Ordernr, tblTemp_Produkter.TaBort, tblTemp_Produkter.Utfyllnad
FROM tblProdukter, tblTemp_Produkter
WHERE (((tblTemp_Produkter.Artikelnamn)<>[tblProdukter].[Artikelnamn]) AND ((tblTemp_Produkter.P)<>[tblProdukter].[P])) OR (((tblTemp_Produkter.Artikelnamn)<>[tblProdukter].[Artikelnamn]) AND ((tblTemp_Produkter.P)=[tblProdukter].[P])) OR (((tblTemp_Produkter.Artikelnamn)=[tblProdukter].[Artikelnamn]) AND ((tblTemp_Produkter.P)<>[tblProdukter].[P]));

Vad är fel med den? Jag tycker att resultatet skulle bli som jag vill.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2
tblTemp_Produkter.Artikelnamn <> [tblProdukter].[Artikelnamn] AND tblTemp_Produkter.P <> [tblProdukter].[P]

Felet med koden är att den plockar ut alla par av tblProdukter och tblTemp_Produkter där (t ex) Artikelnamn är olika och P är olika, vilket gör att du får en himla massa rader i resultatet. (I princip alla kombinationer av hela båda tabellerna utom just det paret där både P och artikel namn råkar matcha)

Jag får en känsla av att det du egentligen vill göra är att...

  1. Uppdatera alla rader i target om antingen P eller Artiklnamn matchar och den andra skiljer sig åt
  2. Införa all nya rader i target om som bara finns i source.

Har jag rätt?

AndreasCMedlem sedan mars 20011 964 inlägg
#3

Vad jag vill göra är att lägga till endast de rader där p OCH artikelnamn inte matchar en redan befintlig post i target. De poster som har ett P och ett Artikelnamn som matchar en redan befintlig post ska inte läggas till. Observera att jag inte vill uppdatera något i target utan jag vill lägga till rader. De poster som redan ligger i target ska lämnas orörda. Frågan ska ändast jämföra posterna från tblTemp_Produkter med posterna i tblProdukter för att avgöra ifall de ska läggas till i tblTemp_Produkter eller inte.

Man kan säga att jag helt enkelt vill udvika dubletter.

Jag presenterar här tre exempel med exempeldata på hur posterna skulle kunna se ut i target efter det att frågan har körts.

---------------------------
Maräng 576
Marängbotten 576

Detta resultat är OK
---------------------------

---------------------------
Maräng 576
Maräng 276

Detta resultat är också OK
---------------------------

---------------------------
Maräng 576
Maräng 576

Detta resultat är INTE OK
---------------------------

135 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)