Waardes uit 2 kolommen bij elkaar optellen

Status
Niet open voor verdere reacties.

Erik678

Gebruiker
Lid geworden
12 mrt 2009
Berichten
17
Hi mensen,

Ik heb een tabel die er als volgt uitziet:
[table="width: 500"]
[tr]
[td]ID[/td]
[td]begin[/td]
[td]waarde[/td]
[td]eind[/td]
[/tr]
[tr]
[td]1[/td]
[td]160[/td]
[td]5[/td]
[td]x[/td]
[/tr]
[/table]

Ik wil graag dat de waarde in de eind kolom wordt berekend op basis van begin + waarde kolom. Dus uitkomst 165.
Ik heb de eind kolom calculated gemaakt met expression: [begin]+[waarde]. De uitkomst is dan alleen 1605.

Wie kan mij opweg helpen?
 
Als die begin- en eindwaarden tekst velden zijn dan is die 1605 correct.
 
Dat is natuurlijk niet correct, wandt die uitkomst is alleen een samenvoeging van de twee velden. Blijkbaar heb je de velden opgemaakt als tekst en niet als getal. Overigens is het volslagen overbodig om de uitkomst op te slaan in je tabel, want dat druist tegen alle normalisatieregels in. Gebruik een query voor de berekening, geen tabel.
 
Laatst bewerkt:
Yup. Dus is die 1605 correct. Het is alleen niet wat TS wil en verwacht.
 
@Edmoor: Nee, die 1605 is niet correct. In een database kun je gewoon 2 velden bij elkaar optellen. Zou je moeten weten :). Alleen vermoed ik (vandaar mijn opmerking) dat TS ze als tekst heeft ingesteld, niet als getal. En als je getallen wilt optellen, dan moeten ze als getal zijn gedefinieerd. Je moet het verkregen resultaat (1605) niet verwarren met de intentie (165). Als je iemand wilt helpen bij het krijgen van het juiste resultaat, dan heeft het weinig zin om overbodige antwoorden te geven. Je helpt TS meer als je aangeeft wat hij/zij moet doen om het correcte resultaat te bereiken. En dat is dus, in een database, in ieder geval zorgen dat velden de juiste eigenschap hebben, en daarnaast dat je die resultaten niet in een tabel opslaat.
 
Zoals hij het deed is zijn uitkomst correct. De string "5" geplakt aan de string "160" levert de string "1605". Dat het niet is wat hij wil of verwacht is verhaal 2. Dat hij met datatype tekst werkt had ik in mijn reactie #2 aangegeven. Dat hij een ander datatype moet zijn om wel 165 te krijgen is uiteraard evident.

Daarnaast heb je helemaal gelijk te stellen dat je dat in een database niet moet willen. Die berekening kun je heel goed in een formulier of rapport kwijt.
 
Zoals hij het deed is zijn uitkomst correct.
Nee dus. Je kúnt best getallen in een tekstveld zetten, en daar zelfs mee rekenen, maar dan moet je ze wel in de formule alsnog converteren naar een getal. De formule wordt dan dus: Val([begin])+Val([waarde]). Blijkbaar is dit kennis die niet bij TS aanwezig is, anders had hij de vraag zo niet gesteld. Het heeft dan geen zin (vind ik) om overbodige antwoorden te geven waar TS niet verder mee kan. Ik weet dat jij wel degelijk de kennis hebt om TS de juiste kant op te wijzen, en niet hoeft te volstaan met : "je doet het fout" (wat de essentie is van je eerste antwoord). Zover was TS namelijk al! Al snap ik dat dit soort antwoorden goed is voor je statistieken :)
 
Laatst bewerkt:
We denken er beide anders over. Dat mag.
 
Wat jij en ik er over denken is niet belangrijk, het gaat er om dat TS iets met een antwoord kan. Jij geeft dat niet, ik wel.
 
Thanks heren, met eigenschap "getal" is het inderdaad gelukt. Ook de query.

Kan iemand mij misschien vertellen waarom je deze data niet in een tabel moet opslaan maar gebruik moet maken van een query?
 
Zoek eens naar het onderwerp 'normaliseren' en dat zou je voldoende inzicht moeten geven. Maar om je gedachten op weg te helpen: in een tabel sla je nooit (er zijn uitzonderingen, maar die gelden hier niet) gegevens op die afhankelijk zijn van andere gegevens in dat record. Dat is één van de voorwaarden om er voor te zorgen dat je tabel in de 1e normaal komt. Zonder de 1e normaal kun je de tabel nooit in de 2e normaal krijgen, laat staan in de 3e, wat het uitgangspunt zou moeten zijn. E.e.a. Is ook uitgelegd in de Access cursus die je in de Handleidingen sectie kan vinden.
 
Zoals hij het deed is zijn uitkomst correct. De string "5" geplakt aan de string "160" levert de string "1605". Dat het niet is wat hij wil of verwacht is verhaal 2. Dat hij met datatype tekst werkt had ik in mijn reactie #2 aangegeven. Dat hij een ander datatype moet zijn om wel 165 te krijgen is uiteraard evident.

Helemaal juist en volkomen gelijk.
Je staat dus niet alleen ;)

Tardis
 
Spuit elf leeft nog :) Het ging hier niet om de constatering an sich, die wel correct is, maar over het feit dat het antwoord volkomen nutteloos was voor TS. En ik dacht dat we dit forum hadden om mensen verder te helpen. Constateren dat ze er naast zitten, valt daar niet onder wat mij betreft. Maar Ed zal heel blij zijn met jou steun...
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan