StudentDennis
Gebruiker
- Lid geworden
- 13 nov 2013
- Berichten
- 34
Beste mensen,
Ik ben bezig met een database te maken ten behoeve van het genereren van managementinformatie. De data bestaat uit rit-informatie uit TomTom Webfleet.
Ik heb inmiddel aardig onder de knie hoe je een formulier maakt een knopje er bij maakt en dan een query laat uitvoeren. Ook kan ik inmiddels uit List vakken en Text vakken de gebruiker keuzes laten maken. Ik verwijs ze dan steeds naar een eigen losse query met een eigen losse knop.
Inmiddels heb ik ook mijn eerste VBA codes gemaakt (heel simpel: if-else, open query)
Nu is de gedachte dat het slimmer is om het in plaats van 300 losse query's , 300 losse knoppen en 100 formulieren, 1 formulier te maken met 1 knop en de Text vakken en List vakken. Als er op de knop gedrukt wordt moet er gekeken worden welke velden ingevuld zijn, en of de ingevulde combinaties wel mogelijk zijn. Vervolgens wil ik het weergeven op een (simpele) manier.
Ik kwam op de gedachte om een code te maken in VBA die dus:
-kijkt welke vakken ingevuld zijn.
-kijkt of de ingevulde combinaties mogelijk zijn.
-de SQL query samenstelt
-de uitkomsten presenteert (mag op een simpele manier in dataview zijn, als de gegevens maar snel te vinden zijn voor een gebruiker)
Ik dacht dat dit me een hoop tijd kon besparen, maar inmiddels zit ik al weer een dag te proberen en te lezen en heb het nog niet werkend. Vooral het weergeven/presenteren aan de gebruiker van een SELECT query kom ik niet uit ondanks de duizende voorbeelden op het internet. en het samenstellen van de sql query moet ook eenvoudiger kunnen hoop ik.
Ik snap dat dit voor een ervaren persoon vast een belabberde code is, maar het is mijn eerste VBA code, dus ik vind het wel knap van mezelf. Het geeft misschien ook beter mijn denkwijze aan van wat ik wil bereiken. Deze code is nu dus niet uitvoerbaar, maar het is een samenvatting van wat ik heb geprobeerd en waar ik heen wil.
Weet iemand (waarschijnlijk OctaFish, als hij nog tijd aan mij wil besteden
), hoe ik een case als deze het best kan aanpakken? In grote lijnen uitleggen mag ook, maar het liefst krijg ik mijn database nu eens werkend en functioneel
Duidelijk leesvoer met stap voor stap uitleg over dit onderwerp is ook welkom. Overnieuw beginnen is ook geen probleem.
Gr Dennis
Ik ben bezig met een database te maken ten behoeve van het genereren van managementinformatie. De data bestaat uit rit-informatie uit TomTom Webfleet.
Ik heb inmiddel aardig onder de knie hoe je een formulier maakt een knopje er bij maakt en dan een query laat uitvoeren. Ook kan ik inmiddels uit List vakken en Text vakken de gebruiker keuzes laten maken. Ik verwijs ze dan steeds naar een eigen losse query met een eigen losse knop.
Inmiddels heb ik ook mijn eerste VBA codes gemaakt (heel simpel: if-else, open query)
Nu is de gedachte dat het slimmer is om het in plaats van 300 losse query's , 300 losse knoppen en 100 formulieren, 1 formulier te maken met 1 knop en de Text vakken en List vakken. Als er op de knop gedrukt wordt moet er gekeken worden welke velden ingevuld zijn, en of de ingevulde combinaties wel mogelijk zijn. Vervolgens wil ik het weergeven op een (simpele) manier.
Ik kwam op de gedachte om een code te maken in VBA die dus:
-kijkt welke vakken ingevuld zijn.
-kijkt of de ingevulde combinaties mogelijk zijn.
-de SQL query samenstelt
-de uitkomsten presenteert (mag op een simpele manier in dataview zijn, als de gegevens maar snel te vinden zijn voor een gebruiker)
Ik dacht dat dit me een hoop tijd kon besparen, maar inmiddels zit ik al weer een dag te proberen en te lezen en heb het nog niet werkend. Vooral het weergeven/presenteren aan de gebruiker van een SELECT query kom ik niet uit ondanks de duizende voorbeelden op het internet. en het samenstellen van de sql query moet ook eenvoudiger kunnen hoop ik.
Ik snap dat dit voor een ervaren persoon vast een belabberde code is, maar het is mijn eerste VBA code, dus ik vind het wel knap van mezelf. Het geeft misschien ook beter mijn denkwijze aan van wat ik wil bereiken. Deze code is nu dus niet uitvoerbaar, maar het is een samenvatting van wat ik heb geprobeerd en waar ik heen wil.
Code:
'============='
'COMBINED CODE'
'============='
'declare variables
'============='
Dim SiteText80 As Boolean
Dim EngineerList6 As Boolean
Dim ShurgardList10 As Boolean
Dim DateFromText21 As Boolean
Dim DateToText23 As Boolean
Dim CustomerList156 As Boolean
Dim EngineertypeList148 As Boolean
Dim Qquery As String
'Dit datatype zal waarschijnlijk moeten veranderen, ik heb verschillende types geprobeerd, maar blijf errors krijgen, of het geheel wordt uitgevoerd, maar er wordt niets weergegeven.
Dim Qselect As String
Dim Qfrom As String
Dim Qwhere As String
Dim Qoperator As String
Dim Qcondition As String
'determine if the fields are empty
'============='
If Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!Text80) Then
SiteText80 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!List6) Then
EngineerList6 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!List20) Then
ShurgardList10 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!Text21) Then
DateFromText21 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!Text23) Then
DateToText23 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!List156) Then
CustomerList156 = True
ElseIf Not IsNull(Forms!frmMenuDatesSitesDriversShurgards!List148) Then
EngineertypeList148 = True
End If
'check for impossibilities
'============='
If SiteText80 = True And ShurgardList10 = True Then
MsgBox ("You cannot combine Site with Shurgard in a search.")
Else If SiteText80 = True And CustomerList156 = True Then
MsgBox ("You cannot combine Site with Customer in a search.")
Else If EngineerList6 = True And EngineertypeList148 = True Then
MsgBox ("You cannot combine Engineer with Engineertype in a search.")
Else If ShurgardList10 = True And CustomerList156 = True Then
MsgBox ("You cannot combine Shurgard with Customer in a search.")
Else:
'check which query is needed
'============='
If SiteText80 = True And EngineerList6 = False And ShurgardList10 = False And DateFromText21 = False And DateToText23 = False And CustomerList156 = False And EngineertypeList148 = False Then
'stukje SQL als variabel wat later in de eind query gecombineerd kan worden.
Else If
SiteText80 = False And EngineerList6 = True And ShurgardList10 = False And DateFromText21 = False And DateToText23 = False And CustomerList156 = False And EngineertypeList148 = False Then
'stukje SQL als variabel wat later in de eind query gecombineerd kan worden.
SiteText80 = False And EngineerList6 = False And ShurgardList10 = True And DateFromText21 = False And DateToText23 = False And CustomerList156 = False And EngineertypeList148 = False Then
'stukje SQL als variabel wat later in de eind query gecombineerd kan worden.
'???
'Ik denk dat dit ook eenvoudiger kan ander krijg ik hier als nog heel veel werk aan
'execute and display query
'============='
'??? van alles geprobeerd OpenQuery/RunSQL/.execute, maar mijn kennis is nog niet hoog genoeg dit zelf uit te puzzelen.
Weet iemand (waarschijnlijk OctaFish, als hij nog tijd aan mij wil besteden


Gr Dennis
Laatst bewerkt: