Tijdelijke variabele

Status
Niet open voor verdere reacties.

Hunicrem

Gebruiker
Lid geworden
11 nov 2014
Berichten
7
Hallo,

Op welke manier kan ik een tijdelijke variabele instellen die verwijst naar een Query-resultaat of een veld in een formulier?

Hetgene dat ik wil, is een variabele instellen die gebaseerd is op een vaste query waarde, die enkel verandert naar een waarde op een formulier, indien dat formulier open staat.
Een klein beetje uitleg: Ik probeer de waarde op deze manier vast te leggen, maar vermoed dat ik niet helemaal goed zit met de syntaxis:

Code:
Option Compare Database

Public varAddGame As Boolean
Public varEditGame As Boolean
Public varSeasonSelected As Boolean
Public varSeasonID As Integer

Public Sub DeclareVars()
  varAddGame = False
  varEditGame = False
  varSeasonSelected = False
  

End Sub

Public Sub SeasonCheck()
  If SeasonSelected = True Then
    varSeasonID = [Formulieren]![F_SeizoenenSelect]![CboSelectSeizoen].Value
  Else
    varSeasonID = [Q_SeizoenSelector].[SeizoenID]
  End If
End Sub

Bij openen van formulieren met betrekking tot seizoenen, wil ik dan de sub aanroepen om zo de waarde van het veld SeizoenID dmv de variabele varSeasonID te bepalen.
Zit ik dan hiermee op het goede spoor, of moet ik het anders aanpakken?

Alvast dank!

Mvg
Hub
 
Maak een voorbeeldje, want hier snap ik eerlijk gezegd niet zo heel veel van.
 
Een voorbeeldje maken ligt een beetje moeilijk, hehe. Maar ik zal het wat beter uitleggen:

In mijn DB, zijn seizoenen vastgelegd in een tabel met een begin- en einddatum.

[table="width: 500, class: grid, align: left"]
[tr]
[td]SeizoenID[/td]
[td]SeizoenNaam[/td]
[td]BeginDatum[/td]
[td]EindDatum[/td]
[/tr]
[tr]
[td]1[/td]
[td]2014-2015[/td]
[td]1/7/2014[/td]
[td]30/6/2015[/td]
[/tr]
[/table]

De Query berekent adh van de huidige datum het veld SeizoenID volgens deze tabel.
([Q_SeizoenSelector].[SeizoenID])

Code:
SELECT T_Seizoenen.SeizoenID, T_Seizoenen.SeizoenNaam, T_Seizoenen.StartDatum, T_Seizoenen.EindDatum, Date() AS Selector
FROM T_Seizoenen
WHERE (((Date()) Between [StartDatum] And [EindDatum]));

Standaard zullen formulieren waarbij SeizoenID is betrokken dus de waarde van deze query krijgen, tenzij de gebruiker op een knop drukt om het seizoen te switchen.

Bij het indrukken van de knop, wordt een formulier F_SeizoenenSelect geopend, met een combobox die de waarde van SeizoenID zal bepalen, en wordt de variabele varSeasonSelected true.
([Formulieren]![F_SeizoenenSelect]![CboSelectSeizoen].Value).
Wanneer de gebruiker een ander seizoen selecteert en OK drukt, wordt het formulier hidden, en wordt het veld SeizoenID bepaald door de waarde van deze combobox, totdat het formulier wordt gesloten. Wanneer het formulier wordt gesloten, wordt de variabele varSeasonSelected terug false.

Wanneer de gebruiker eender welk formulier opent, waarbij het veld SeizoenID een vereiste is, wil ik de sub SeasonCheck aanroepen, om te bepalen welke waarde SeizoenID moet krijgen.
Elk formulier waarbij SeizoenID een vereist in te vullen veld is, zal SeizoenID = varSeasonID als waarde hebben, zodat deze waarde altijd automatisch zal worden ingevuld.

Wat ik nu eigenlijk wil weten, is de correcte syntax om de waarde van varSeasonID hier aan te geven:

Code:
Public Sub SeasonCheck()
  If SeasonSelected = True Then
    varSeasonID = [Formulieren]![F_SeizoenenSelect]![CboSelectSeizoen].Value
  Else
    varSeasonID = [Q_SeizoenSelector].[SeizoenID]
  End If
End Sub

varSeasonID en SeizoenID zijn beide integer waarden btw.

Indien het nog te 'hectisch' is, zal ik mijn best doen om de gebruikte elementen in een voorbeeld te gooien :)
 
Met deze opzet ga je aan mij weinig hebben, want ik snap er nog steeds de ballen van... Wél heb ik de indruk dat je iets ongelooflijk ingewikkelds hebt bedacht dat je met één simpele keuzelijst op een formulier kan oplossen. Maar zonder de db te zien is dat echt in een emmer zwarte modder grutten op zoek naar een zwarte olijf. Als er al gevoelige informatie in je db staat die je niet wilt delen, dan zou ik een voorbeeldje maken met wat dummy records. Zolang de functionaliteit er maar in zit, maakt het ons niet uit waar we naar kijken.
 
Ik snap wel wat je bedoelt: Indien mijn database geopend wordt met het formulier om het seizoen te selecteren, en ik dat formulier hidden zet, kan ik de waarde van die keuzelijst inderdaad gebruiken om overal het veld SeizoenID in te vullen.
Echter ben ik erachter gekomen dat ik dat formulier niet altijd kan open laten (al weet ik nu op dit moment niet meteen meer waarom).

Anderzijds, vind ik het een beetje dom, als je telkens je seizoen moet selecteren wanneer je je database opent. Ik zou dat graag willen vermijden. Indien het niet nodig is om gegevens van een ander seizoen op te vragen/in te vullen, dan hoeft die keuze mijns inziens ook niet gemaakt te worden.

Zal de zaak nog even bekijken en laat je nog iets weten. Alleszins al bedankt om mijn 'zooi' te lezen :)
 
Anderzijds, vind ik het een beetje dom, als je telkens je seizoen moet selecteren wanneer je je database opent. Ik zou dat graag willen vermijden.
En dat hoeft natuurlijk ook niet; je kunt best beginnen met het huidige seizoen. Lijkt mij ook het meest logische.
Overigens helpen dit soort opmerkingen
Indien mijn database geopend wordt met het formulier om het seizoen te selecteren, en ik dat formulier hidden zet, kan ik de waarde van die keuzelijst inderdaad gebruiken om overal het veld SeizoenID in te vullen.
en
Echter ben ik erachter gekomen dat ik dat formulier niet altijd kan open laten (al weet ik nu op dit moment niet meteen meer waarom).
niet om mijn begrip van jouw db te vergroten. Integendeel :). Want ik zie niet steeds minder waarom je op deze manier zou moeten werken. Awel, wellicht komt er ooit een voorbeeldje dat alles in één keer duidelijk maakt :D.
 
Als ik vermoed wat je bedoelt ;-) wellicht met global variabelen, zie het voorbeeld bij blueclaw
Sowieso handig om dit te weten

Jan
 
Global variabelen zijn hier inderdaad wel voor te gebruiken, maar nogal 'van de vorige eeuw'. Je zou veel beter naar de TempVars collectie kunnen kijken. Die kun je overal declareren en opvragen waar je wilt; zelfs in queries.
Maar ik zie toch lever een voorbeeld bestandje van TS :D
 
Eigenlijk was de oplossing veel eenvoudiger.
Het formulier om het seizoen te selecteren, wordt nu automatisch geopend bij het openen van het hoofdmenu, maar blijft hidden. De standaardwaarde van de combobox is gebaseerd op de query.

Even uitleggen: De query kan maar 1 resultaat hebben: het seizoen is vastgelegd met start- en einddatum in een tabel. De query berekent op basis van de huidige datum het seizoen. Aangezien de standaardwaarde van de combobox nu gelijk is aan het query-resultaat, zal het seizoen altijd het huidige zijn, tenzij de gebruiker het verandert, en dat is net wat ik wou :)
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan