Rangorde aanpassen

Status
Niet open voor verdere reacties.

mvdkooij

Gebruiker
Lid geworden
30 mrt 2007
Berichten
52
Ik ben op zoek naar een mogelijkheid om in een lijst de rangorde aan te passen.

In een lijst heb ik 3 items staan die volgens veld prioriteit een rangorde hebben. In de lijst wil ik 1 van die items selecteren en d.m.v. een pijltje boven/onder in rangorde verplaatsen.

Tabelnaam: tblVop_actie
VOP (tekst)
Priorieit (nummeriek)

Dus:
VOP Prioriteit
A31 1
A34 2
B34 3

Ik wil dus als ik A34 kies en ik druk op het pijltje omlaag dat de prioriteit aangepastwordt naar 3 (2+1) en dat B34 2 (3-1) wordt.

Onderstaand heb ik bij het pijltje omlaag staan, maar er wordt hier nog niet gekeken naar het andere record (en dit wordt dus ook nog niet aangepast):

Code:
sSQL = "UPDATE [tblVOP_actie]" & _
        "Set [Prioriteit]=[Prioriteit] + 1" & _
         " WHERE [ID] = forms!frmVGRS.lijst_lijst"
 
Laatst bewerkt:
Grappige vraag :thumb:
Bedoel je zo iets?
 

Bijlagen

Hi Michel!


Bedankt weer, het werkt super, maar heb toch nog 2 aanvullende vraagjes:

1.
Het aantal records kan variëren van 0 tot 250. Wat zet je dan bij
Code:
If iNieuw = 4 Then
    MsgBox "Deze keuze kan niet lager in de lijst..."
    Exit Sub
End If

2.
Ik kan via een ander formulier records toevoegen aan deze tabel, maar dan moet automatisch de prioriteit aangepast worden, zodat dit record onderaan in de lijst komt.
Nu heb ik dit staan, maar dat werkt niet goed:

Code:
 With CurrentDb.OpenRecordset("SELECT Status, Max(Prioriteit) AS MaxVanPrioriteit FROM tblVop_actie")
            If .RecordCount = 0 Then
                Me.txtprioriteit = 1
            Else
           '      Me.txtprioriteit = MaxVanPrioriteit + 1
            End If
                .Close
                  End With
 
Laatst bewerkt:
Duurt even maar ik heb het gevonden:

1.
Code:
With CurrentDb.OpenRecordset("SELECT Max([prioriteit]) AS MaxPrio FROM tblVop_actie WHERE status='op lijst'")
If iNieuw = .Fields("MaxPrio") + 1 Then
    MsgBox "Deze keuze kan niet lager in de lijst..."
    Exit Sub
 End If
     .Close
End With

2.
Code:
With CurrentDb.OpenRecordset("SELECT Max([prioriteit]) AS MaxPrio FROM tblVop_actie WHERE status='op lijst'")
            If .RecordCount = 0 Then
                '.Edit
                Me.txtprioriteit = 1
                '.Update
 
            Else
                '.Edit
                  Me.txtprioriteit = .Fields("MaxPrio") + 1
                '.Update
            
            End If
                .Close
                  End With

Bedankt .... en topic opgelost!
 
Toch niet helemaal opgelost. Onderstaande werkt niet.... wat klopt er niet aan:

Code:
With CurrentDb.OpenRecordset("SELECT Status, Max([prioriteit]) AS MaxPrio FROM tblVop_actie WHERE status='op lijst'")
 
Op zich klopt de regel wel. Wat is precies het probleem?
 
Als ik op knop x druk moet hij onderstaande bewerking uitvoeren:

Code:
If Me.Kader32 = 5 Then
    Me.actie_veld = "Lijst"
    Me.txt_status = "Op lijst"
            With CurrentDb.OpenRecordset("SELECT Status, Max([prioriteit]) AS MaxPrio FROM tblVop_actie WHERE status='op lijst'")           
 If .RecordCount = 0 Then
               Me.txtprioriteit = 1
             Else
                  Me.txtprioriteit = .Fields("MaxVanPrioriteit") + 1
            End If
                .Close
                  End With
End If

Me.Tekst73 = Me.Kader32

Als ik op knop x druk dan zie ik niet dat tekst73 aangepast wordt (en dus niet wordt opgeslagen - tekst73 is even ter controle :confused:). Het werkt wel op het moment dat ik uit de SELECT regel "status, " weghaal.
 
Dan zou ik de regel
Code:
SELECT Status, Max([prioriteit]) AS MaxPrio FROM tblVop_actie WHERE status='op lijst'
eerst eens in een aparte query zetten, want daar zit dan een fout in. Kijk of je de query kunt bewerken zodat-ie wel werkt, en verwerk de gewijzigde code in je VBA.
 
Query werkt prima .. maar als ik die SELECT statement gebruik doet ie dus niets. Vreemd.

Ik verwijs nu naar de query met het statement en dan is het opgelost!
Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan