Avatar billede lars_hoeberg Praktikant
30. marts 2008 - 19:12 Der er 7 kommentarer og
1 løsning

Opdatering ved gennemløb af poster

Jeg skal have lavet en funtion til at opdatere felter udfra følgende kriterier. Funktionen skal gerne løses i en sql sætning.

Der skal laves en løbende opdatering på nogle poster. Altså med 1, 2, 3 osv. Den skal ind og først kigge på "DisciplineID", og starte med alle dem der hedder 1. Dette er hovedkategorien og første kriterie. Herefter skal der kigges på "SquadID". Dette er 2. kriterie. Herefter er der så et felt, som hedder "PreliminaryID" - Det er dette felt det skal opdateres med 1, 2, 3 osv.

Altså - Først finder den dem der har 1 i "DisciplineID" og 1 i "SquadID" og løber disse igennem og skriver 1, 2, 3 osv i "PreliminaryID"
Herefter løber den de poster igennem med 1 i "DisciplineID" og 2 i "SquadID" og opdaterer "PreliminaryID" med 1, 2, 3 osv.

Sådan skal den fortsætte indtil der ikke er flere med 1 i "DisciplineID", og derefter gå videre til 2, og køre samme procedurer dér.

Noget der kan løses?
Avatar billede terry Ekspert
30. marts 2008 - 21:22 #1
Hi Lars
I dont have time right now but if you dont get any response before tomorrow evening then I'll take a look if you can send me an exmaple of the table/data which you want to update.
I dont think it is possible in pure SQL, some code will be necessary I think.
Avatar billede Slettet bruger
31. marts 2008 - 00:49 #2
Hvis du har en opdaterbar forespørgsel, som sorterer først på DisciplineID og derefter på SquadID og som også indeholder feltet PreliminaryID, så lav et modul kald det hvad du vil og indsæt flg. kode:

Public Function Opdater()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim a, b, c
a = 1
b = 1
c = 1
Set db = CurrentDb()
Set rst = db.OpenRecordset("DinForespørgsel")
With rst
.MoveFirst
Do
If !DisciplineID = a Then
    If !SquadID = b Then
    .Edit
    !PreliminaryID = c
    .Update
    c = c + 1
    Else
    b = !SquadID
    c = 1
    .Edit
    !PreliminaryID = c
    .Update
    c = c + 1
    End If
Else
a = !DisciplineID
b = !SquadID
c = 1
.Edit
!PreliminaryID = c
.Update
c = c + 1
End If
.MoveNext
Loop Until .EOF
.Close
End With
End Function

Du kan så bruge kommandoen Call Opdater hvor som helst i din database, du kan eksempelvis åbne immidiate vinduet og kalde koden derfra!~)
Avatar billede lars_hoeberg Praktikant
31. marts 2008 - 16:20 #3
Hejsa. Jeg kigger lige på den funktion hurtigst muligt.
Og til Terry - Det er samme db som jeg sendte til dig ved forrige spørgsmål i tabellen tblPlayerAssignments
Avatar billede terry Ekspert
31. marts 2008 - 18:16 #4
Which table/query? I cant find any table with a field PreliminaryID
Avatar billede lars_hoeberg Praktikant
01. april 2008 - 12:08 #5
Nårh, det var nok før jeg fik den tilføjet så. Den skal bare ind i tblPlayerAssignments
Avatar billede lars_hoeberg Praktikant
01. april 2008 - 12:14 #6
Nej undskyld. Det skal være i tblSquadAssignments
Avatar billede terry Ekspert
01. april 2008 - 18:41 #7
in tblSquadAssignments you only have SquadID and TeamID

Have you tried spg's solution?
Avatar billede lars_hoeberg Praktikant
02. april 2008 - 17:25 #8
Ja, det ser ud til at virke med spg's måde. Men jeg takker begge for hjælpen og giver hermed points
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