Status bar loopt niet synchroon

Status
Niet open voor verdere reacties.

Rap261

Gebruiker
Lid geworden
2 sep 2008
Berichten
273
Goede middag,


Ik heb een formulier met een combo waarin een onderwerp wordt gekozen.
Ik heb daarnaast nog eens 5 combo's die aangeven of een actie mbt tot het onderwerp is gedaan of niet. Een status bar moet deze combo's vertegenwoordigen als zijnde een indicator van wat wel en niet voltooid is. Lijkt ingewikkeld maar het voorbeeld spreekt voor zich denk ik..
Als laatste heb ik een Save button die de waardes van de 5 combo's moet wegschrijven in een tabel. Wanneer een onderwerp later weer wordt gekozen, moeten de 5 combo's en de status bar zich weer vullen adhv de gegevens uit de tabel

Maar nu. Het lukt me niet om:
1) de status bar synchroon te laten lopen alle 5 de comboboxen. Per stuk lukt dit wel (1 combobox = value 20 van de status bar enz)
2) na keuze in de eerste combo (onderwerp) de status bar synchroon te late lopen met de waardes van de 5 combo's

Ik heb nu voor 2 combo's eea geprobeert (and optie, or optie) maar merk al dat dit niet de oplossing is. Wie kan helpen?
Bekijk bijlage Status bar.zip
 
Tip 1: doe niet zo moeilijk, en koppel je formulier gewoon aan je tabel. Dan werkt hij alles netjes voor je bij zonder dat je ingewikkelde knoppen nodig hebt. Je koppelt de keuzelijsten dan netjes aan de velden, en alles is tiptop in orde.
Tip 2: gebruik een extra tabel (actions in mijn voorbeeld) om de keuzelijsten te vullen.
Tip 3: gebruik een functie om de statusbalk in te stellen, dan heb je minder code nodig. Voorbeeldje:

Code:
Private Sub Text1_Click()
    Statusbalk
End Sub

Code:
Function Statusbalk()
Dim i As Integer, iStat As Integer
    For i = 1 To 5
        Select Case Me("Text" & i).Value
            Case 1
                iStat = iStat + 0
            Case 2
                iStat = iStat + 10
            Case 3
                iStat = iStat + 20
        End Select
    Next i
    Me.Status.Value = iStat
End Function
 
Hi Michael,

Thanks voor je hulp en heb het formulier gekoppeld aan de tabel (incl de 5 combo's)
Alleen waarom een extra tabel voor het vullen van de combo's? het voorbeeld betreft alleen om de status bar werkend te krijgen, m'n werkelijke database en bijbehorende tabel bevatten nog meer gegevens. Dit zou ik dan uitelkaar trekken door een extra tabel te maken toch?

Als laatste, ik heb een marco gemaakt voor de functie, in het engels is dit RunCode gevolgd door Funaction name: Statusbalk()
Daarnaast een module aangemaakt met daarin jou code hierboven.
Resultaat: foutmelding indien een combo wordt gewijzigd in een andere waarde. "Expressie kan niet gevonden worden"

Bekijk bijlage Status bar.zip
 
Ik heb zóóóóó'n hekel aan macro's.... Vroeg of laat (in mijn ervaring: altijd vroeger dan je denkt) kom je er achter dat je met macro's vele malen minder kan doen dan met VBA. En dan begint het hele leerproces weer van voren af aan. Waarom Oud-Duits leren als je naar Duitsland op vakantie gaat? Leer gelijk modern Duits :)
 

Bijlagen

Jouw functie (een kopie van de mijne uiteraard) zal nooit werken in een zelfstandige module; Me kun je alleen op een afhankelijke module gebruiken, zoals die bij een formulier of rapport.
 
Hi Michel,

Je voorbeeld (.rar bestandje) is precies wat ik nodig heb. Echter krijg ik het met geen mogelijkheid werkend in mij db. Althans, de status bar blijf blanco welke optie uit de combos ik ook kies.
Ik heb alles exact gekopieerd volgens jou voorbeeld, extra tabel met Actions, query gemaakt To Do;Completed, row sources aangepast kortom de hele mik mak. Op de achtergond lijkt eea in gang gezet te worden want bij het veranderen van een combo status zie "Calculating.." voorbij flitsen. Met spanning wacht ik dan af maar geen resultaat.
Daarnaast heb ik er wel een (groot) probleem bij nl, in sommige textboxen ben ik mijn tekst ineens kwijt. De textboxen staan niet gelinkt of hebben verder niets te maken met de status bar optie, ze staan gewoon op het formulier maar halen hun data uit dezelfde tabel waar ook de updates van de combo's naar toe wordt geschreven. Ook de 1e combo waar men een keus van onderwerp maakt, wordt de naam vervangen door een cijfer. De rest van de onderwerp namen zijn wel aanwezig en het lijkt erop dat ie dit alleen op de eertse row doet in de tabel. Krijg ook nagenoeg na elke wijziging de melding van een schrijf conflict. Als laatste, dit alles gaat met 20x vast lopen en opnieuw opstarten.

Ik kan mij db niet delen, te groot om te posten, dus kan het je moeilijk laten zien.
Ik begrijp dat je geen voorkeur hebt voor macro's maar is dit alles er niet mee te op te lossen? If Then etc en dan puur baseren op de waardes in de combo? ik zeg ook maar wat hoor Michel
 
De textboxen staan niet gelinkt of hebben verder niets te maken met de status bar optie, ze staan gewoon op het formulier maar halen hun data uit dezelfde tabel waar ook de updates van de combo's naar toe wordt geschreven.
Dit snap ik niet helemaal; in jouw voorbeeldje had je een niet-gebonden formulier. Bij mij is hij wèl gebonden. En zijn ook alle velden op het formulier gekoppeld aan het bijbehorende tekstveld.
Als de db te groot is, dan kun je nog proberen om in een kopie wat records te verwijderen. Verder kun je alle tabellen en formulieren die voor de vraag niet nodig zijn er uit gooien. Dan zou je een db moeten overhouden die na comprimeren en zippen klein genoeg is. Mocht hij nog net te groot zijn, dan kun je hem met winrar opbreken in blokken van 100kb. Mochten dat ook teveel deelbestanden zijn, dan kun je hem nog uploaden naar mijnbestand.nl of een vergelijkbare site; dan kunnen we hem daar vandaaan halen.
 
Hi Michel,


ben vanmorgen pas toegekomen om het forum weer te lezen..
Ik heb nagenoeg alles uit de DB verwijderd en alleen het formulier en tabellen etc. Ik hou alleen nog wel een bestand over van ruim 2mb, gezipt in stukken zijn dit 12 bestandjes..
Is dit teveel om te posten, anders maak ik vanavond thuis een account aan op Mijnbestanden.nl
 
En je hebt de db eerst nog gecomprimeerd? Er hoeven niet veel records in te zitten; genoeg om te kunnen constateren of en hoe het werkt.
 
Klopt, ik heb gecomprimeerd
In eerste instantie had ik een nieuw DB gestart en eea geimporteerd vanuit de bestaande maar dan moest ik teveel opnieuw instellen om het weer werkend te krijgen. Toen de rollen omgedraaid en uit een kopie juist alles verwijderd. Het is nu in principe een blanco maar werkend formulier... wel nog steeds 2mb
 
Dan zou ik zeggen: zet 'm op MijnBestand.nl, dan halen we hem daar wel weg.
 
Ik snap niks van je formulier; je hebt hem gebaseerd op de tabel [Projects], maar een aantal formuliervelden is niet gekoppeld aan een tabelveld. Dan gaat er bitter weinig gebeuren. Bovendien zie ik dat je het formulier niet kunt updaten. Dus daar gaat ook nog iets verkeerd.
 
In principe zijn alleen het formulier en de combo voor de status balk gekoppeld. De rest wordt met Dlookup naar voren gehaald. (tanden knarsend zeker :)
Wat bedoel je met niet kunnen updaten?
 
Waarschijnlijk moet je eerst op "Change project" klikken, dan updaten en "save"..
 
Michel, ik ben eruit
In de Function code staat i voor 1 To 5 daar dit in de DB natuurlijk niet overeen komt. Aangepast naar 13 To 15 en nu werkt het wel.

Thanks voor je voorbeeld en hulp, ik heb het nu prima kunnen gebruiken!
 
Ik zit eigenlijk ng wel met een ding... in de DB wordt de keuze van het project gemaakt met een combo terwijl we in het voorbeeld een textbox met ID hiervoor hadden. Als ik nu in de DB met de Combo een ander project kies, gaat de status balk op grijs en gaat ie niet mee met de waardes uit de tabel. Zodra ik een waarde wijzig, pakt ie ze allemaal weer op en loopt ie weer gelijk.

Kan dit verholpen worden met Requery, refresh van de status balk, iets in die zin. Dit zou dan denk ik onder de combo moeten hangen zodat na een keuze de status bar wordt gerefreshed..?
 
De objecten op je formulier die afhankelijk zijn van berekeningen of andere waarden, zoals je statusbalk, moet je een Requery geven. Handigste plek vind ik dan bij het bladeren door de records, dus op de gebeurtenis <Bij Aanwijzen> van het formulier. Bijvoobeeld zo:

Code:
Private Sub Form_Current()
    Statusbalk
End Sub
 
Deze had ik er al in staan maar zorgde niet voor het gewenste resultaat. Zal misschien liggen aan het feit dat de gegevens via aan combo worden opgehaald en niet met bladeren door records?

Ik heb wel iets anders gevonden waardoor het ook lukt. Ik heb bij de combo (keuze voor project) de optie macrobuilder gebruikt en hierin verwezen naar de Function Statusbalk(). Nu voert ie die bij elke keuze ui de combo uit en nu loopt de status balk wel netjes mee. Probleem opgelost.

Thanks Michel voor je hulp!!
 
Vreemd verhaal; als de keuzelijst is gekoppeld aan een veld, zou de Form_Current moeten werken. Vermoedelijk heb je de keuzelijst niet gebonden aan een tabelveld.
Overigens had ik ook in dat geval nooit gekozen voor de macrobuilder, maar de gebeurtenis <Bij klikken> gebruikt. Ofwel programmeren (het echte werk) ofwel alles met macro. Niet gaan combineren, lijkt mij.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan