[ACCESS XP]

Pagina: 1
Acties:

  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Ik heb een btw-tabelletje aangemaakt bestaande uit onder meer de volgende kolommen:

BTW-Bedrag; Aanschafprijs

Nu wil ik naast deze kolommen ook de nettoprijs (aanschaf-btw) en nog een paar virtuele kolommen hebben die opbasis van invoer in de andere kolommen worden uitgerekend.

Hiervoor heb ik een query gemaakt, deze query heb ik opgenomen in het overzicht query van de totale tabel. Ik heb dus 1 query per virtuele kolom die ik opneem in de hoofdoverzicht query.

Het probleem is echter nu dat acces voor de totale overzicht bij iedere record uitreken query uitvoerd het overzicht zier er dus als volgt uit:

product 1 30 100 70
product 2 40 80 70
product 3 50 110 70
product 1 30 100 40
product 2 40 80 40
prodcut 3 50 110 40
product 1 30 100 60
product 2 40 80 60
prodcut 3 50 110 60


terwijl het dit moet zijn:

product 1 30 100 70
product 2 40 80 40
product 3 50 110 60

De meest rechtse kolom is dus als een query in een query opgenomen

Mijn aantal records is dus exponentieel gestegen.

Ik hoop dat ik het probleem een beetje duidelijk heb uitgelegd.

Hoe moet ik dit oplossen,,, is er een beter manier op virutele kolommen aan te maken?

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:05
Een van de regels van een goed databank ontwerp is, dat je berekende waardes niet in uw tabellen opslaat.
Je kunt daar natuurlijk van afwijken als die 'berekende waarden' niet veel tot niet meer veranderen en er intensief op gezocht wordt of als ze veel moeten getoond worden en de berekening te lang duurt.

Hoe het komt dat je teveel records hebt:
Je hebt een cartesiaans product. Je zult in uw query een foutje gemaakt hebben, je zult nl. een join vergeten zijn.
Als je meer dan 1 tabel in uw from clause hebt staan, dan moet je die tabellen met elkaar joinen.
Doe je dit niet, dan gaat de databank uw query als volgt weergeven:

voor ieder record in tabel1, toon ieder record in tabel 2.

Als je dus in tabel1 3 records hebt, en in tabel2 4 records, dan krijg je 4 * 3 records = 12 records te zien.

https://fgheysels.github.io/


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Welke Query gebruik je nu?
Volgens mij moet je een INNER JOIN gebruiken!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Volgens mij moet dit juist helemaal niet met 2 queries. Het probleem nu is juist dat er 1 opsom query is en 1 bereken query. De DBM heeft geen ID wat bij wat hoort, en gat dus maar alles bij alles zetten.

Ik heb echter het id dat de 4e kolom het verschil van de 2e en 3e moet zijn. Dat kun je gewoon in 1 query doen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • marenk_vos
  • Registratie: Augustus 2001
  • Laatst online: 23-07 13:21
Omdat ik deze bedragen niet wil opslaan in de tabel moeten dit ook een virutele kolom worden, de oplossing van Janoz heb ik toegepast, het moest inderdaad 1 query worden waarin de 4e kolom uitegerekend werd.

Dell XPS 17 Intel i7 2630 Nvidia GT555 3Gb Hd1: OCZ Vertex 2 SSD 60 GB Hd2: 500Gb