Van Database naar Grafiek

Status
Niet open voor verdere reacties.

RSchrijver

Gebruiker
Lid geworden
25 mrt 2011
Berichten
12
Hallo,

Ik probeer een overzicht te maken voor een bedrijf waar ik een bijbaantje heb. Zelf heb ik een beperkte hoeveelheid kennis met MS Access en wel enige ervaring met het maken van websites. Graag zou ik wat hulp willen bij de volgende casus:

Ik heb de volgende gegevens (van 2010) in een Excel bestand staan.

afleverdatum (Datum/tijd)
ordernummer (Tekst)
debiteurnr (Tekst)
debiteur_naam (Tekst)
artikelgroep (Tekst)
artikel (Tekst)
artikelomschrijving (Tekst)
lange_omschrijving (Tekst)
aantal_geleverde_eenheden (Numeriek)
aantal_kilo (Numeriek)
bedrag_excl_btw (Numeriek)
gem prijs per kg (Numeriek)
gem prijs per eenheid (Numeriek)
week (Numeriek)

Deze gegevens heb ik inmiddels gekoppeld in Access zodat ik een database heb.

Mijn doel is om een (web)pagina (offline) te maken waar ik [debiteurnr] en [artikel] (is ook een nummer) selecteer. Dit wil ik doormiddel van een drop down menu, waarin niet het debiteurnr, maar debiteur_naam wordt weergegeven (1x van dezelfde soort) en bij het artikel moet eigenlijk artikelomschrijving en lange_omschrijving aan elkaar gekoppeld en weergegeven worden.
Vervolgens wil ik één of twee tabellen (lijn) waarin voor dat product voor die debiteur de [gem prijs per eenheid] en [aantal_kilo] (Y-As) per [week] (X-As) wordt weergegeven.

Is dit mogelijk? En zou iemand mij hiermee op weg kunnen helpen?

Alvast bedankt,

Ronald
 
Sorry, maar ik heb een heel andere vraag, ik zou niet weten hoe ik erachter kan komen dan door te reageren op iemand:

WAAR KAN IK HET VENSTER OF PLEK VINDEN WAAR IK MIJN BERICHT KAN PLAATSEN? Ik ben ingelogd notabene.
 
En waarom maak je de grafiek niet in Excel? Lijkt mij een veel betere tool om grafieken mee te maken...
 
En waarom maak je de grafiek niet in Excel? Lijkt mij een veel betere tool om grafieken mee te maken...

Het gaat mij erom dat de grafieken automatisch gegenereerd worden in een makkelijke opmaak (bij voorkeur een webpagina, waar ik ook nog een beetje aan de lay-out kan sleutelen). Het technische verhaal erachter (van db naar grafiek) is niet mijn sterkste punt, daarom hoop ik op jullie hulp. In welk programma (Access/Excel) dat het makkelijkst is weet ik niet.
 
soms is de help van access nog wel goed voor bepaalde zaken:
druk F1 en typ "De typen webpagina's die u met Access kunt maken"
ik suggereer om data-access pagina's te gebruiken... sinds je offline (dus ik denk opdezelfde workstation als waar de mdb is opgeslagen) moet je geen msql server hebben of dergelijke... je kan die pag's direct linken naar je mdb

druk F1 en typ"Grafieken toevoegen aan formulieren of rapporten"
wordt fijntjes uitgelegd hoe je je grafiek moet opbouwen....

druk F1 en typ"keuzelijst met invoervak"
Eigenlijk bestaat hier een wwizard voor, waar je al de kolommen kunt selecteren die je nodig hebt, en dan alleen de kolom laat tonen die je wil tonen, in jouw geval debiteur_naam
Dan moet je bij "gebeurtenissen" => "na bijwerken" je code invullen dat de tekstvelden automatisch worden aangepast naar welke waarde je selecteerd. concreet voorbeeld:
Stel, je maakt een formulier waar je je artikelen op wil selecteren, op basis van je selectie moet ie gegevens aanpassen we hebben nodig ui 1 tabe (Tbl_artikels)l:
artikelgroep (Tekst)
artikel (Tekst)
artikelomschrijving (Tekst) +lange_omschrijving (Tekst)

op je form maak je een keuzelijst met invoervak aandie "Artikelgroep" noemt, en drie tekstvakken:"artikel", "artikelomschrijving", "lange_omschrijving"

de keuzelijst geef je als rijbron:
Code:
SELECT Tbl_artikels.artikelgroep, Tbl_artikels.artikel, Tbl_artikels.artikelomschrijving, Tbl_artikels.lange_omschrijving
FROM Tbl_artikels;
moest je nu de keuzelijst opendoen ga je scherm vol staan met deze 4 kolommen, wij willen dat alleen artikelgroep zichtbaar is.
zet bij afhankelijke kolom "1", in tab opmaak aantal kolommen 4 en bij kolombreedte 0cm; 3cm;0cm;0cm.
hierdoor zie je alleen artikelgroep.
in de "na bijwerken" gebeurtenis, klik op de 3 puntjes knop, selecteer opbouw voor progamma code (VBA)
daar zou het volgenede moeten komen:
Code:
Private Sub Artikelgroep_AfterUpdate()
On Error GoTo Err_Artikelgroep_AfterUpdate

    Dim strFilter As String
    
    ' Beoordeel de filter voordat deze wordt doorgegeven aan de functie DLookup.
   
 strFilter = "Artikelgroep = " & Me!Artikelgroep
    
    Me![Artikel] = DLookup("[Artikel]", "Tbl_artikels", strFilter)
    Me![artikelomschrijving] = DLookup("[artikelomschrijving]", "Tbl_artikels", strFilter)
    Me![lange_omschrijving] = DLookup("[lange_omschrijving]", "Tbl_artikels", strFilter)
Exit_Artikelgroep_AfterUpdate:
    Exit Sub

Err_Artikelgroep_AfterUpdate:
    MsgBox Err.Description
    Resume Exit_Artikelgroep_AfterUpdate

End Sub
Verklaring: nadat je een artikelgroep uit de lijst hebt geselecteerd, heb je de keuzelijst "bijgewerkt" (update), hetgeen de trigger is om de code te laten lopen, daar hebben we zijn "filter" vastgesteld, namelijk artikelgroep (van tabel) = me.artikelgroep (formulier)
vervolgens laten we zijn gegevens opzoeken in de tabel:

Me![Artikel] = DLookup("[Artikel]", "Tbl_artikels", strFilter)
is dus Me!Artikel verwijst naar tekstvak Artikel op formulier
Dlookup : functie om te gaan opzoeken
("[Artikel]", welke kolom in de tabel hij zijn waarde moet opzoeken
"Tbl_artikels", welke tabel hij de kolom kan vinden
strFilter) zijn critria, dus "alleen de records weergeven waar "Artikelgroep = " & Me!Artikelgroep"

ALs je logisch denkt en een beetje een slimme zijt kan met de standaarhelp zelf je functies uitschrijven :)
 
Als je ziet wat voor 'web' pagina's je maakt met Access, zit je snel aan de drank..... Excel of PowerPoint maakt heel wat fraaiere webpagina's. Misschien moet je zelfs wel een heel ander pakket overwegen, waarin je gegevens linkt naar je Excel pagina. Zelf zou ik er geen tijd in steken, zeker niet in de 2002 variant, want die leent zich niet voor serieus webgeweld...
 
Hoi,

Ik heb nu een rapport met daarin de tabel. Als ik het rapport open promt hij 2 keer met de vraag "debiteur: debiteurnr invoeren" en "artikel: artikel invoeren". Dit is perfect. Nu wil ik een pagina, waar ik 2 drop down menu's heb, dit is me ook gelukt. Maar hoe koppel ik (middels een submit knop) het rapport aan de webpagina?

Groet,

Ronald
 
Ik heb een rapport gemaakt, met daarin de grafiek. Ik wil eigenlijk een webpagina met twee drop-down menu's (debiteurnr en artikel) en een submit-knop. Wanneer men op de knop druk moet er een Grafiek worden getoond van de geselecteerde debiteur en het artikel.
 
je kan geen drop downs plaatsen op een rapport...
Tabel = houd je gegevens bij
query = selectie of berekeningen op de data in de tabellen
Formulier = manipulatie van de gegevns (dus hier plaats je dropdowns, menuknoppen,....
rapport = woord zegt het zelf, is een AFDRUK van de ingevoerde geselecteerde/ gemanipuleerde data.

Zoals Octa zei, acces is bad voor met webpagina's te werken, wat je wel kan doen is een formulier maken die eruit ziet of hetzelfde manipuleerd alsof op een webpagina....
 
Ok dat is duidelijk. Ik heb nu dus een rapport gemaakt met een grafiek. Als ik dit rapport open krijg ik 2 prompts. Ik heb ook een formulier gemaakt met 2 drop down menu's, alleen moet ik ze nu nog koppelen. Hoe doe ik dat?
 
Ok misschien moet ik mijn vraag wat duidelijke formuleren.

Ik heb een Formulier met twee drop down-menu's. De eerste selecteert de debiteur (kollom debiteurnr & debiteur_naam), vervolgens moet het tweede drop-down menu alleen de overgebleven artikelen (artikel & artikelomschrijving) weergeven (hoe koppel ik deze twee?).

Wanneer ik beide geselecteerd heb, wil ik op een knop drukken om mijn rapport in te vullen.

Het rapport bevat een grafiek die (wanneer ik het rapport open) vraagt (prompts) om debiteurnr en om artikel.

Hoe kan ik ervoor zorgen dat wanneer ik op de submitknop druk de prompts automatisch worden ingevuld en het rapport wordt weergegeven?
 
Wat betreft je eerste vraag: zoek even op dit forum naar Keuzelijsten; zo'n beetje elke week (deze week dus ook weer) komt jouw vraag voorbij, en post ik een antwoord met dezelfde voorbeelddatabase. Die heet dus Keuzelijsten.rar. Kun je zo vinden.
Je tweede probleem heeft te maken met de verkeerde bron voor je rapport. Haal de parameters daar weg, want er is lijkt mij geen enkele reden om de vragen ook nog eens in de query zelf te zetten; je haalt ze tenslotte uit je formulier. En dat is de laatste aanpassing: gebruik het filter van je formulier om het rapport te filteren.
 
Ok misschien moet ik mijn vraag wat duidelijke formuleren.

Ik heb een Formulier met twee drop down-menu's. De eerste selecteert de debiteur (kollom debiteurnr & debiteur_naam), vervolgens moet het tweede drop-down menu alleen de overgebleven artikelen (artikel & artikelomschrijving) weergeven (hoe koppel ik deze twee?).

Hetzelfde als wat ik eerder al aantoond hierboven, alleen moet je rowsource gebruiken, zou zoiet zijn zoals:
Code:
Private Sub DebiteurDrop_AfterUpdate()
 
  artikeldrop.RowSource = "SELECT Tabel.artikel, tabel.artikelnaam " & _
        "FROM Tabel " & _
        "WHERE Artikel = " & Me.DebiteurDrop & " " & _
        "ORDER BY artikelnaam;"

End Sub
debiterudrop is de naam van je eerste dropdown, bij gebeurtenissen => na bijwerken, VBA selecteren, dan dt invullen
Tabel.artikel: Tabel is de naam van de tabel waar je artikelen instaan
& _ : wil zeggen dat de volgende regel bij dezalfde uitvoer hoort.
"WHERE Artikel = " & Me.DebiteurDrop & " is de belangrijkste:
kolom Artikel met de juiste tekst bevatten als wat je kiest (bv. debiteurnr. in dit voorbeeld).
in uw geval zal dit wel niet kloppen, dus moet je een verwijzing vinden tussen de 2, octafish zijn keuzelijst geeft een perfect voorbeeld...
Wanneer ik beide geselecteerd heb, wil ik op een knop drukken om mijn rapport in te vullen.
wanneer ik het rapport open) vraagt (prompts) om debiteurnr en om artikel.
Hoe kan ik ervoor zorgen dat wanneer ik op de submitknop druk de prompts automatisch worden ingevuld en het rapport wordt weergegeven?

Hoe ik het gemakelijkste vind:
wanneer je je gegevens geselectered en gemanipuleerd hebt in je formulier, deze wegschrijven naar zijn tabellen, dan een selectiequery maken die je Qry_rapport noemt ofzo, dan een rapport maken op deze query.
Dan op je formulier maak je een commandknop waardat bij gegevens=> bij klikken, VBA slecteren, schrijf je dit:
Code:
Private Sub knoprapport_Click()
On Error GoTo knoprapport_Click

stDocName = "Rpt_mijnrapport"

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
    DoCmd.OpenReport stDocName, acPreview, "Qry_rapport", "Debiteurnummer = " & Me!Debiteurnummer

Exit_knoprapport_Click:
    Exit Sub

Err_knoprapport_Click:
    MsgBox Err.Description
    Resume Exit_knoprapport_Click
    
End Sub
knoprapport: is de naam die je an je knop geeft
Rpt_mijnrapport: is de naam van het rapport dat je wil opendoen
DoCmd.DoMenuItem... :gaat je formulier saven in zijn tabel.
query's vragen auto hun data op als ze worden aangesproken, dus moeten we niet opvragen, hence gaan we door met rapport te openen:
DoCmd.OpenReport
stDocName: we hebben eerder gezegd: stDocName = "Rpt_mijnrapport"
acPreview: is commando om rapport te OPENEN, gebruik hier bv. acPrint om direct te printen.
"Qry_rapport" : uit welke hij zijn gegevens moet halen
"Debiteurnummer = " & Me!Debiteurnummer: welke rij (record) hij van bovenstaande query hij moet gebruiken om de gevens in te vullen, dus de geselecteerde debnummer op je form (Me!Debiteurnummer)
 
Laatst bewerkt:
Hallo,

Ik ben vandaag weer bezig geweest, maar ik krijg het niet voor elkaar.
Het fromulier is nu in orde, ik eerst een debiteur selecteren en vervolgens de daarbij horende artikelen. Ik heb ook een knop gemaakt waar ik mijn rapport mee open. Mijn rapport vraag om de waarden "debiteurnr" en "artikel". Ik wil dat als ik op de knop druk de waarden die dan geselecteerd zijn in mijn formulier worden gehanteerd als "debiteurnr" en "artikel" en automatisch worden ingevuld in het rapport dat zich dan opent.

Deze code gebruik ik nu:
Private Sub keuzelijst_debiteur_AfterUpdate()

'Gewoon een andere recordsource instellen
keuzelijst_artikel.RowSource = " SELECT DISTINCT artikel, artikelomschrijving from tabel_debiteuren where debiteurnr =" & keuzelijst_debiteur.Value
keuzelijst_artikel.Requery

End Sub
Private Sub knop_debiteur_Click()

stDocName = "rapport_debiteuren"

DoCmd.OpenReport stDocName, acPreview, "", "debiteurnr = " & keuzelijst_debiteur.Value And artikel = " & keuzelijst_artikel.Value"
Exit_knop_debiteur_Click:
Exit Sub

Err_knop_debiteur_Click:
MsgBox Err.Description
Resume Exit_knop_debiteur_Click

End Sub

Dit werkt dus niet, maar hoe post ik de waarden debiteurnr en artikel wel meteen in het rapport dat zich opent bij het drukken van de knop?
 
Je bent niet waarden aan het overzetten naar je rapport, maar een filter aan je rapport aan het toevoegen. Dat heb je, zo te lezen, echter ook al gedaan door aan de bron van je rapport twee Criteria toe te voegen met een vraagveld. En dat is dus dubbelop. Ofwel haal je het criterium weg (zonde van de moeite van het maken van je keuzelijsten) ofwel je verwijdert de criteria uit de query van je rapport. En dat laatste is dus een stuk zinvoller...
 
De keuzelijsten dienen ervoor dat de producten en de debiteuren overzichtelijk gekozen kunnen worden. De waarden die het rapport vraagt, worden opgevraagd door een grafiek die alleen waarden wil laten zien als het artikel en het debiteurnr een bepaalde waarde hebben (dus alleen rijen waar debiteurnr = "waarden" en artikel = "waarden").

Hoe kan ik dit anders regelen? Ik wil namelijk eerst debiteurnr en artikel (rijen) selecteren alvorens ik het rapport met de waarden van de geselecteerde rijen laat weergeven.

Is dit niet mogelijk? En zo ja, hoe pak ik dit het best aan?
 
Eerlijk gezegd snap ik niet wat je aan het doen bent. Want zoals je het nu zegt, ben je eigenlijk twee onafhankelijke objecten aan het openen: een selectie op een formulier, en een selectie op een rapport die dus niks (of althans op debiteurnummer na) of weinig met het rapport te maken heeft. Ik zou denken dat je een selectie op een formulier maakt, en vervolgens die selectie in je rapport wilt terugzien. Blijkbaar is dat dus niet zo? Leg nog eens uit wat nu eigenlijk de bedoeling is...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan