data invoeren en tellen

Status
Niet open voor verdere reacties.

mark68

Gebruiker
Lid geworden
30 sep 2009
Berichten
50
Hallo allemaal.

ik heb in acces 2007 een ledenbestand voor een ehbo vereniging gemaakt.
Daarbij heb ik een excelbestand met daarin de data van de herhalingslessen waarin aangegeven word of een lid op bepaalde data op de les is geweest.

In het ledenbestand heb ik een tabel leden met daarin een veld "NOGLID" om aan te geven of een lid inderdaad nog lid is.

Als ik vanuit het excel bestand een koppeling maak met de tabel Leden weet ik niet waar ik aan moet geven dat ik alleen de leden wil hebben waar het veld NOGLID waar is.
Ik krijg dus in die lijst ook leden die geen lid meer zijn.
Weten jullie waar ik dat aan moet geven?

Vervolgens wil ik in acces de totalen weergeven van het aantal lessen dat per lid gevolg is per seizoen(b.v. 2009/2010) hoe kan ik aangeven welke velden er dan opgeteld moet worden.

Het liefste zou ik alles in acces willen hebben, maar ik weet niet of dat kan. Dat je dus een formulier hebt in de vorm van een excelsheet waar in de eerste kolom de namen van de echte leden komen en in de volgende kolommen de data staan waar je per lid een vinkje kan zetten als ze geweest zijn en vervolgens kunt laten tellen hoeveel vinkjes er staan in een bepaald aantal kolommen.

Ik hoop dat de vraag duidelijk is en dat jullie mij kunnen helpen.
 
data invoeren

Van uit Access kan je een exell bestand ophalen. (laden)
Geef die een eigennaam in de database
Meek er een query van met de voorwaarde die je noemt en kopieer dan per kolom naar het bestand dat je wenst.

Het tellen moet ook kunnen maar daarvoor geef je te weinig informatie hoe e.e.a. is geregistreerd.

succes.:thumb::thumb:
 
Je kunt in Excel een koppeling maken naar een Access tabel of query, iets dat je blijkbaar al voor elkaar hebt. Als je die koppeling hebt gemaakt, dan moet je onderweg ook de optie zijn tegengekomen om te filteren of sorteren op een bepaald veld. Als je die optie niet hebt gebruikt, krijg je alle records te zien.
Achteraf kun je, door de koppeling te wijzigen, alsnog filteren op een bepaald veld. Hiervoor gebruik je een knop bij <Externe koppeling> (?) Ik weet niet precies hoe het heet in 2007, omdat ik liever met de oudere versies werk, waar je een knoppenbalk extra hebt voor koppelingen. Maar met een beetje zoeken in de help moet je de juiste optie wel kunnen vinden.
Als ik je verhaal zo lees, moet je alles ook wel in Access kunnen maken. Hierbij zou je dan kunnen denken aan een aparte tabel voor de lessen, die je dan koppelt aan de tabel met Leden. Tellen doe je in een query, met de knop Totalen. Je groepeert dan op een Sorteerveld, bijvoorbeeld Lidnr, en telt dan het aantal lessen met de functie Count (of Aantal)
 
data invoeren

In excel een module schrijven op basis van DAO. Daarin kan je specifiek bepalen met de voorwaarde WHERE (sql) OF NOGLID true of false is ?!
Je kan ook bepalen welke range moet opgeslagen worden in welk veld.

Om je totalen te bepalen gebruik je in access een crosstabquery. je kan heel eenvoudig met de wizard dit voor elkaar krijgen.

Je kan natuurlijk ook een linktabel programmeren maar in office 2007 staat die actie reeds in je werkbalk van access.

Zoiets maak je inderdaad beter allemaal in access. Met Access kan alles, als je wat VBA kent. Een andere optie is natuurlijk zoals nu de twee ms-office programma's laten samen werken.
Aan je uitleg te horen gaat dit over een eenvoudig ledenbestand database dat makelijk te creeren is.

:thumb:
 
Misschien is een voorbeeldje wel handig, want dat brainstormt wat makkelijker... Het idee van blueliner om een DAO verbinding te maken om te filteren zou ik overigens niet eens overwegen als ik jou was, omdat het gewoon een standaardfunctionaliteit is in de Koppelingen. Je steekt dan veel tijd in iets dat je in 10 seconden kunt oplossen...
 
antwoordje

Misschien is een voorbeeldje wel handig, want dat brainstormt wat makkelijker... Het idee van blueliner om een DAO verbinding te maken om te filteren zou ik overigens niet eens overwegen als ik jou was, omdat het gewoon een standaardfunctionaliteit is in de Koppelingen. Je steekt dan veel tijd in iets dat je in 10 seconden kunt oplossen...

DAO gebruik je daarom niet om te filteren maar om vlot gegevens over te hevelen. Daarna kan je perfekt in access alle mogelijkheden gebruiken om te filteren met bv eenvoudige query's.
De koppeling is idd een standaard functionaliteit maar als je het vanuit access doet kan je voor die tabel waar jeje gegevens invoert geen sleutel definiëren wat probs in je relaties kan geven of dubbele waarden kan geven.
Als je vanuit excel werkt ga je je sheet als tabel moeten declaren wat dan ook weer beperkingen oplevert.

ik geef niet graag code vrij maar het zou iets in dit genre kunnen zijn.

Sub DAOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Dim r As Long
Dim strSql as string
Dim WS As Workspace
Set WS = DBEngine.Workspaces(0)
Set dbs = WS.OpenDatabase("E:\database1")
' open the database
strSql = "SELECT * From < naam tbl > Where <Hier je vwdn>
Set rs = dbs.OpenRecordset(strSql, dbOpenTable)

' get all records in a table
r = 2 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0

' repeat until first empty cell in column A
With rs

.AddNew
' add values to each field in the record
.Fields("id") = Range("A" & r).Value
.Fields("id1") = Range("B" & r).Value
.Fields("id2") = Range("C" & r).Value


.Update

' add more fields if necessary...
' stores the new record


End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
dbs.Close
Set dbs = Nothing
MsgBox ("transfer geslaagd!")

Exit Sub
End Sub
 
even een voorbeeldje

Ik heb even een bijna lege database meegestuurd en een voorbeeld van het excel bestand.

het mooiste zou zijn als ik in access een formulier zou kunnen krijgen die er uit ziet als het excelbestand. zodat ik als er herhalingen ingevoerd moeten worden, ik gelijk heel de lijst door kan lopen en niet per lid een vinkje hoef te zetten. Nu moet ik dus eerst naar het lid toe, aanvinken en dan naar het volgende lid.

Ik heb echt nog steeds geen idee hoe ik het voor elkaar moet krijgen. Ik ben wel bezig geweest met jullie tips, maar het lukt me niet.

Als ik in excel de gegevens van access importeer, dan kan ik het wel invoeren, maar op een of andere manier kan ik dan in access niets meer wijzigen in de gegevens van de leden.

Let op!! het is een uitgeklede versie van de database, dus niet alles werkt in dit voorbeeld.
Misschien zit het niet zo proffesioneel ni elkaar, maar tot nu toe werkt het goed.

Misschien komen jullie eruit om hier iets voor te bedenken(ik denk het wel met jullie ervaring).
 

Bijlagen

data

Hallo helpers,

ik ben nog even aan het puzzelen geweest en heb nu voor elkaar dat ik een gegevensblad alá excel heb als een formulier in access.

Dat gaat goed ik had het gewoon even gemist.

Nu zit ik nog wel met het probleem van het optellen van de aangevinkte data per lid.

Ik heb een afbeelding meegestuurd van het formulier per lid.

Daar staan drie vakken met data per jaar op. Als ik op dat formulier per jaar een tekstvak kan maken die per jaar het aantal vinkjes telt (per lid dus) ben ik klaar. Volgens access zou ik dat kunnen doen met DCOUNT, maar daar kom ik niet uit.

Ik hoop dat mijn vraag duidelijk is en dat jullie een functie weten die dit voor mij kan tellen.
Waarin ik dus aan kan geven welke vaelden hij moet tellen als er een vinkje staat.

Volgens mij is dat voor jullie geen probleem.

Groetjes en alvast bedankt
 

Bijlagen

  • leden.jpg
    leden.jpg
    90,8 KB · Weergaven: 107
data tellen

Daar ben ik nog even,

ik heb nu dus een formulier gemaakt op basis van de leden tabel met een kolom waarin de leden staan en dan per datum een kolom waarin aangevinkt wordt of het lid geweest is.

Dat ziet er op het scherm ongeveer zo uit:
01-01 02-02 03-03 04-04
Jan Jansen v v v
piet pieterse v v
klaas klaassen v v v

Met Count of Dcount ben ik bezig geweest, maar voor zover ik kan zien kun je daarmee alleen in een kolom tellen hoeveel vinkjes er staan en niet in een bepaalde reeks velden (b.v. een gedeelte van een rij).

Als ik dus op wil geven dat voor jan jansen de data 01-01, 02-02, 03-03 en 04-04 bekeken moet worden met als uitkomst in een tekstvak het aantal van die velden die een vinkje bevatten in dit voorbeeldje dus 3. En daar kan ik het antwoord niet op vinden.

Volgens mij moet je dat wel uit kunnen laten rekenen op het formulier, want dat is met jullie hulp ook gelukt met de berekening van de leeftijd in jaren en maanden.

De uitkomst van de berekening hoeft niet persé opgeslagen worden, zolang ik het maar kan zien op het formulier zodat ik snel kan zien hoeveel lessen iemand heeft gevolgd.

groetjes,
Mark
 
Kun je het voorbeeld in 2003 formaat posten? Ik kan nog steeds geen 2007 installeren...
 
data tellen

Hier is een voorbeeldje voor access 2003.

het is de tabel leden en de formulieren: leden en herhaling leden.

ik hoop dat je er uit komt.

Groetjes,
Mark
 

Bijlagen

Wat mij opvalt aan je tabel is dat je geen onderscheid maakt in de datums. Waar bijvoorbeeld laat je het Jaar van de herhalingslessen? En je hebt ook maar één selectievakje Presentielijst. Geldt die waarde dan voor alle herhalingslessen?
Ik zou de db dus opsplitsen in een tabel met de Persoonsgegevens, en een aparte tabel met de Lessen. In die tabel voeg je voor elke herhalingsles een record toe met daarin de datum etc. Dan ben je gelijk van je telprobleem af, want dan kun je met een Totalenquery precies zien hoeveel herhalingslessen iemand per jaar heeft gehad, en met een kruistabel zet je al die datums netjes in een overzicht, bijvoorbeeld ook weer op basis van een bepaald jaar.
De huidige tabelopzet is kortom eigenlijk niet zo geschikt om datgene er uit te halen wat je wilt zien. Daarvoor zou ik, als je de huidige opzet niet wilt veranderen, ook eerder naar Excel grijpen. Ik heb in een aantal afbeeldingen het proces (in 2003, maar het zal in 2007 niet veel anders zijn) vastgelegd, zodat je kunt zien hoe je een filtering kunt maken op actieve leden.
 

Bijlagen

  • Excel Koppeling 1.jpg
    Excel Koppeling 1.jpg
    26,1 KB · Weergaven: 80
  • Excel Koppeling 2.jpg
    Excel Koppeling 2.jpg
    24,5 KB · Weergaven: 70
  • Excel Koppeling 3.jpg
    Excel Koppeling 3.jpg
    29,6 KB · Weergaven: 68
  • Excel Koppeling 4.jpg
    Excel Koppeling 4.jpg
    34,5 KB · Weergaven: 81
  • Excel Koppeling 5.jpg
    Excel Koppeling 5.jpg
    28,5 KB · Weergaven: 72
data tellen

Bedankt voor je reactie.

ik heb natuurlijk zelf ook steeds zitten puzzelen en ben tot een hééééél eenvoudige oplossing gekomen.
Ik was natuurlijk veel te moeilijk aan het denken en heb jullie ook voor niks aan het werk gezet.

Juist omdat het aantal lessen alleen dient om te checken of men genoeg lessen heeft gehad is het niet nodig om dit aantal op te slaan.

Dat gegeven bracht mij tot de volgende simpele oplossing:
Op het formulier van de leden heb ik een tekstvak gemaakt met daarin het volgende:
=[11-2]+[25-2]+[10-3]+[17-3]+[7-4]+[8-9]+[22-9]+[6-10]+[20-10]+[3-11]+[17-11]+[1-12]+[5-1]+[19-1]+[2-2]+[16-2]+[9-3]+[23-3]+[21-9]+[5-10]+[19-10]+[2-11]+[16-11]+[30-11]+[14-12]

Dit telt de waarden op van deze velden, en omdat ja 1 is geeft het dus b.v. 5 als er 5 vakjes zijn aangevinkt. En dat wilde ik oook weten.

Dan komt het formulier er uit te zien als de afbeelding die ik meestuur.

Hoe simpel kan het leven zijn!!!!!!!

Toch bedankt voor jullie hulp ik heb er zeker wel wat aan gehad.

Groetjes,
Mark
 

Bijlagen

  • leden.jpg
    leden.jpg
    91,4 KB · Weergaven: 82
Deze optelsom had ik zelf uiteraard ook wel bedacht, maar omdat je dan nog steeds niet weet over welk jaar het gaat, zou ik zelf dus een iets andere oplossing gebruiken. Tenzij natuurlijk de datums (want dat zijn het toch) nooit veranderen. Of misschien zijn het wel codes voor de te volgen herhalingscursussen, en maakt het niet uit in welk jaar je ze volgt?

Overigens: Een Ja/Nee veld bevat de waarden -1 en 0, niet 1 en 0. Maakt uiteraard voor het optellen niet uit...
 
data tellen

Ik moet inderdaad de data nog veranderen naar een datum met het jaar erbij, maar verder maakt dat voor de berekening niet uit omdat die data altijd blijven staan.

Ik ben je vorige antwoord ook aan het bestuderen om er in de toekomst toch gebruik an te kunnen maken.

Dank je voor je hulp.
 
Graag gedaan! Bedenk dat je huidige oplossing een heel vervelende kan worden, omdat je door de tijd heen dus steeds meer kolommen moet gaan toevoegen aan je tabel. En een tabel kan maar 256 kolommen bevatten.... Is minder als je denkt! Nog afgezien van het gegeven dat je formule dermate lang gaat worden, dat je ook daar het maximale aantal tekens gaat voelen! Plus: overlappende data als je de huidige veld-naamgeving blijft gebruiken. Je kan er uiteraard een (deel van) een jaartal voorzetten, maar dan ben je des te sneller door je formulelengte heen!
Kortom: je kunt de db het beste normaliseren, en dus alle herhalende gegevens uit de tabel halen, en onderbrengen in een aparte tabel. Heb je daar hulp bij nodig: je weet de weg!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan