Avatar billede stry Nybegynder
15. december 2005 - 15:49 Der er 5 kommentarer og
2 løsninger

Sammenlign tabeller

Jeg har to tabeller;
Tabel 1: Status, Timer, ID
Tabel 2: Status, Dato, ID

Tabel 1 indlæses i en fortløbende formular via en forespørgsel, og det jeg ønsker er at de to tabeller sammenlignes ved indlæsning af formularen og hvis "Status" for en post i Tabel 2 er "<> A" skal "Status" for den tilsvarende post i Tabel 1 (De er sammenkædet via "ID") ændres så den bliver lig med "Status" i Tabel 2 og samtidig skal "Timer" i Tabel 1 tildeles værdien 0.

Nogen med en god idé?

På forhånd tak.
Avatar billede stry Nybegynder
15. december 2005 - 15:59 #1
Nedenstående kan måske fremme forståelsen for det ønskede resultat.

Før indlæsning:
===============

Tabel 1:
ID    Status    Timer
1    A        7
2    A        7
3    A        7
4    A        7
5    A        7


Tabel 2:
ID    Status   
1    A       
2    F       
3    A       
4    S       
5    A

Efter indlæsning:
=================

Tabel 1:
ID    Status    Timer
1    A        7
2    F        0
3    A        7
4    S        0
5    A        7


Tabel 2:
ID    Status   
1    A       
2    F       
3    A       
4    S       
5    A
Avatar billede stry Nybegynder
15. december 2005 - 18:34 #2
Ingen med et bud?
Avatar billede Slettet bruger
16. december 2005 - 15:35 #3
Altså der er jo den omstændige!~)

Lav en TEMP tabel, med id, status og timer, herefter:

Forespørgsel0
DELETE TEMP.*
FROM TEMP;

Forespørgsel1
INSERT INTO TEMP ( id, Status, Timer )
SELECT Tabel1.id, Tabel2.Status, Tabel1.Timer
FROM Tabel1 INNER JOIN Tabel2 ON Tabel1.id = Tabel2.id;

Forespørgsel2
UPDATE TEMP SET TEMP.Timer = 0
WHERE (((TEMP.Status)>"A"));

Herefter på din formular:

Private Sub Form_Open(Cancel As Integer)
DoCmd.OpenQuery "forespørgsel0"
DoCmd.OpenQuery "forespørgsel1"
DoCmd.OpenQuery "forespørgsel2"
End Sub

Du har nu en temp tabel, som indeholder de data du ønsker og du kan bruge temp som din postkilde eller du kan lave en forespørgsel3, som overskriver dataerne i tabel1, så du er klar påny!~)
Avatar billede stry Nybegynder
17. december 2005 - 20:16 #4
Jeg har ikke noget at teste men jeg har ikke glemt det, og jeg vender tilbage når jeg har testet.
I mellemtiden er alternative forslag velkomne.

Foreløbig tak.
Avatar billede fdata Forsker
19. december 2005 - 00:33 #5
Det kan vist gøres enklere:

UPDATE Tabel1 INNER JOIN Tabel2 ON Tabel1.ID = Tabel2.ID
SET Tabel1.Status = [Tabel2].[Status], Tabel1.Timer = 0
WHERE (((Tabel2.Status)<>"A"));

I stedet for at lade knappen åbne formularen direkte, kunne du lige køre ovenstående først og så åbne formularen, altså:

Docmd.SetWarnings False
Docmd.OpenQuery "Forespørgslen"
Docmd.SetWarnings True
Docmd.OpenForm "Formularen"
Avatar billede stry Nybegynder
24. december 2005 - 10:42 #6
Det virker fint, tak for hjælpen til begge.
Avatar billede fdata Forsker
25. december 2005 - 23:29 #7
Anytime. Tak for point.
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