Avatar billede ingolf Nybegynder
24. juni 2009 - 16:44 Der er 13 kommentarer

Opdatering af felter i formular efter ændring af forespørgsel?

Efter ændring i en forespørgsel til en formular (med godt 500 poster)har jeg nogle felter i formularen, der åbenbart ikke lader sig påvirke af ændringerne i forespørgslen. Så vidt jeg kan se, ændrer disse felter sig først, hvis jeg åbner den enkelte post i formularen og "løber" alle felter igennem. Det er nogle gamle felter der skal indeholde nye beregninger (efter princippet nyfelt1=gammelfelt1).
Hvordan får jeg opdateret de godt 500 poster i formularen, uden at jeg skal ind i hver enkelt post?
Avatar billede nissen2630 Novice
24. juni 2009 - 17:15 #1
Kan du ikke lave en formular.refersh eller formular.update
Avatar billede terry Ekspert
24. juni 2009 - 17:27 #2
Not quite sure I understand the problem.

"...der åbenbart ikke lader sig påvirke af ændringerne i forespørgslen"

Is the form using the query as its record source?

If you make changes to the query while the form isopen then you can close the form and open it again, or use Me.Requery in a buttons on click event to requery the form.
Avatar billede ingolf Nybegynder
24. juni 2009 - 17:57 #3
nissen2630
Hvad mener du med formular.refersh eller formular.update?

terry
De felter der lader sig påvirke, er de felter der direkte får resultatet fra beregningerne i forespørgslen (=is using the query as its record source).
De felter "der åbenbart ikke lader sig påvirke af ændringerne i forespørgslen" er de felter der får resultatet fra andre felter på formularsiden (=is not using the query as its record source).

Koden til af af felterne ser sådan ud:
Private Sub glFelt1_GotFocus()
    [glFelt1] = [nyFelt1EfterRedigering]
Avatar billede terry Ekspert
24. juni 2009 - 18:05 #4
I think you need to explain in more detail
Avatar billede nissen2630 Novice
24. juni 2009 - 21:12 #5
I din kode kan du kalde refresh ell. update efter du har ændret dine data... Har ikke en maskine lige pt med Access men en med en ammel VB og der skulle ikke være den store forskel.

form.update ell form.refresh
Avatar billede ingolf Nybegynder
25. juni 2009 - 08:19 #6
nissen2630
Du foreslår at indsætte form.upddate eller form.refresh. Betyder det, at jeg undgår at skulle åbne alle godt 500 poster i formularen, og lade curseren løbe alle felter igennem fra start til slut på formularen?
Avatar billede terry Ekspert
25. juni 2009 - 08:25 #7
Ingolf try explaining your problem in more detail. Even better can you send an example of your dB?

ekspertenATsanthell.dk

AT=@
Avatar billede ingolf Nybegynder
25. juni 2009 - 09:20 #8
terry
Jeg kan dessværre ikke sende DB´en ud af huset. Det må jeg ikke.

Jeg skal forsøge at komme med et detaljeret forklaring.

DB´en er en forholdsvis gammel database, der er revideret flere gange.

Felter der tidligere blev anvendt til inddatering af data "modtager" idag data fra andre beregnede felter. Og det er ved denne overførsel fra nye beregnede felter til de gamle inddateringsfelter problemet opstår.

Værdien fra de nye beregnede felter overføres først til de gamle inddateringsfelter når curseren har gennemløbet de gamle felter.

Så mit spørgsmål er, hvordan undgår jeg at skulle ind på hver post, for at opdatere de gamle inddateringsfelter med de nye beregninger?

Jeg anvender 2 decimaler i alle beregnede felter (Rund[mængde]*[pris];2) og det fungerer fint i alle beregninger.
Avatar billede terry Ekspert
25. juni 2009 - 10:10 #9
Well your explanation helps a bit but still not enough. It would have been nice to see the dB.

Are the calculated fields made in the query or in the form after entering values?


Lets say you have fields A, B and C on a form.

A gets its value from B+C. So you have to first enter data into B and C before A gets its value. THis will very likley be done in code. And the code will very likley only get executed when you enter values into either fields B or C.

If on the other hand the calculated fields are made in the query then you need some code inthe forms On Current event which copies the calculated fields to the OLD fields.


But without more infromation/understanding on how things are done then its ahrd to make any suggestions.-
Avatar billede ingolf Nybegynder
25. juni 2009 - 12:16 #10
terry

Jeg prøver igen. Der udtages en stikprøve af en råvare, der størrelsessorteres i 4 størrelser som nedenfor:

Størrelse1
Størrelse2
Størrelse3
Størrelse4

Disse 4 størrelser regnes der procentfordeling på i en forespørgsel, hvilket giver:

%Fordeling1
%Fordeling2
%Fordeling3
%Fordeling4

Derudover indtastes der en totalmængde på råvaren vi kan kalde:

Råvaremgd

Derefter ganges %fordelingen pr størrelse med råvaremængden i forespørgslen og udregningen vises på formularen:

%Fordeling1 * Råvaremgd = Råvaremgd1
%Fordeling2 * Råvaremgd = Råvaremgd2
%Fordeling3 * Råvaremgd = Råvaremgd3
%Fordeling4 * Råvaremgd = Råvaremgd4

Det er værdierne i
Råvaremgd1
Råvaremgd2
Råvaremgd3
Råvaremgd4

jeg ønsker skal ende i de gamle inddateringsfelter som vi kan kalde:

glFelt1
glFelt2
glFelt3
glFelt4

Men værdierne overføres først i de enkelte felter på formularen når curseren har løbet alle felter igennem. Og værdien skal kun vises med 2 decimaler.

Håber dette hjælper lidt på forståelsen.
Avatar billede terry Ekspert
25. juni 2009 - 14:32 #11
where do you enter values for Størrelse1 - 4, in the form?


You say
"Disse 4 størrelser regnes der procentfordeling på i en forespørgsel ..."

"I en forespørgsel"? If you enter Størrelse1 - 4 in the form but the calculations are made in the query then you have to requery the form to show the new calculations.

"Derudover indtastes der en totalmængde på råvaren vi kan kalde:"

Where do you enter this value, through the form? Again, if you enter new values through the form then you MUST either requery the form so that ALL calculations get recalæculated, or you have to refresh the fields which are dependant on what you enter.

Lets just say that after you enter Råvaremgd. In the fields AFTER UPDATE event you need to requery the form

Me.Requery

Now you need to copy the new calculated values for Råvaremgd1 - 4 to glFelt1 - 4

glFelt1 = Råvaremgd1 and you do that for each of the fields.
Avatar billede ingolf Nybegynder
25. juni 2009 - 15:01 #12
terry
Alle data indtastes på formularsiden.

Jeg vurderer på i øjeblikket, om jeg kan undlade at bruge

glFelt1
glFelt2
glFelt3
glFelt4

og i stedet bruge

Råvaremgd1
Råvaremgd2
Råvaremgd3
Råvaremgd4

Jeg er faktiskt ved at få det til at fungere.

I sidste ende skal mængden på de 4 størrelser ganges med en pris,
der kan være den samme for alle størrelser eller forskellig for den enkelte størrelse og derefter udskrives på en rapport

Og jeg kan udskrive alle godt 500 rapporter uden at skal ind på alle poster på formularsiden for at opdatere de gamle felter.

Undskyld hvis det har virket lidt rodet, men det var ved at stige mig til hovedet på et tidspunkt.
Avatar billede terry Ekspert
25. juni 2009 - 16:13 #13
If the entered data (Fordeling1 - 4 og Råvaremgd) are stored in the tablethen you dont need fields in the table (glFelt1 - 4 og Råvaremgd1 - 4) because these can always be calculated.

And if the price also gets stored in the table then this will also be available to make any calculations needed.



"Undskyld hvis det har virket lidt rodet, men det var ved at stige mig til hovedet på et tidspunkt."

No problem Ingolf. Quiet often its not easy to explain/understand the problem without actually seeing it for your self.
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