Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Office Access 2007] Import van excel naar meerdere tabellen

Pagina: 1
Acties:

  • Bliep
  • Registratie: September 2003
  • Laatst online: 22-11 06:57
Voor mijn vakantiewerk kreeg ik een klus mee dat ik een simpele database moest maken, hier hoef ik verder eigenlijk niet veel mee te doen en het is dan ook alleen data entry.

Ik dacht dus vet slim te zijn door met OCR snel alles netjes in een excel document te krijgen, wat overigens vlekkeloos is gelukt. Maar toen moest het nog access in, dat het mogelijk was wist ik.

Echter loop ik nu tegen het struikelblok aan dat hij gewoon bijna letterlijk de hele sheet in 1 tabel van access stopt. Mijn opmaak van het excel formulier is als volgt:

code:
1
2
3
4
            leeftijd   geslacht   beroep   hobby  auto
Naam1          x          x          x        x     x
Naam2          x          x          x        x     x
Naam3          x          x          x        x     x


Het optimele output resultaat voor access zou er dan zo uitzien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Naam tabel: Naam1

veld1       veld2  
leeftijd      x
geslacht      x
beroep        x
hobby         x
auto          x

Naam tabel: Naam2

veld1       veld2
leeftijd      x
etc.


Uit elke regel van het excel document moet dus 1 tabel in access worden aangemaakt. Vervolgens moet die in veld1 de opmaak leeftijd, geslacht etc hebben. En dan in veld2 de absolute waardes zegmaar.

Nu ben ik er helemaal van overtuigd dat dit mogelijk is. Waarschijnlijk heb ik er een script voor nodig?
De concrete vraag luidt dus: Hoe krijg ik de opmaak zo, zodat alles naar apparte tabellen gaat in access? Mits ik hier een script voor nodig heb, wie kan me een zetje in de goede richting geven waar ik meer informatie kan vinden?
Ik ben echt niet te beroerd om mezelf te leren een scriptje te maken, maar een duwtje in de goede richting doet wonderen natuurlijk :9

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Eh, dit is wel een zeer apart verzoek. :) Je hebt een genormaliseerde tabel in Access. Waarom zou je dan in vredesnaam allemaal aparte tabellen daarvan gaan maken? Doet Create->Forms->Form niet gewoon wat je wilt? Die laat het namelijk wel op die manier zien, ja.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Bliep
  • Registratie: September 2003
  • Laatst online: 22-11 06:57
Maar dan ben ik eigenlijk al klaar? Dan pas ik de excel opmaak wat aan en import ik hem. Dan krijg ik dus volgende opmaak:
code:
1
2
3
4
          leeftijd  geslacht  beroep  hobby  auto
Naam1        x        x          x      x     x
Naam2        x        x          x      x     x
Naam3        x        x          x      x     x


Het probleem begon dan dus eigenlijk dat ik hun wat gestuurd hadden in allemaal apparte tabellen en ze dat prima vonden. Maar het is feitelijk dus echt onhandig?
Wat ik ervan begrepen heb is dat ze deze data willen gebruiken voor een website. Het voorbeeld is dan natuurlijk versimpelde vorm van de daadwerkelijke informatie :P

De vraag dan nu of dit zo werkt als een basis voor een website?

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Bliep schreef op woensdag 22 juli 2009 @ 14:30:
Het probleem begon dan dus eigenlijk dat ik hun wat gestuurd hadden in allemaal apparte tabellen en ze dat prima vonden. Maar het is feitelijk dus echt onhandig?
Wat ik ervan begrepen heb is dat ze deze data willen gebruiken voor een website. Het voorbeeld is dan natuurlijk versimpelde vorm van de daadwerkelijke informatie :P

De vraag dan nu of dit zo werkt als een basis voor een website?
Onhandig is zacht uitgedrukt. Trouwens, een access database gebruiken voor een website is sowieso nogal ouderwets, aangezien je bijna altijd ook wel met SQL server of iets anders kan werken. Ongetwijfeld zal die website ook vatbaar zijn voor beginnersfouten als SQL-injectie, aangezien ze blijkbaar een simpele WHERE-clause te moeilijk vinden.
Voor een website zijn aparte tabellen per persoon echt superonhandig en een echte WTF. :)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Bliep
  • Registratie: September 2003
  • Laatst online: 22-11 06:57
Ik heb contact opgenomen met het bedrijf waarvoor ik werk, die op hun beurt informatie hebben opgrevraagd bij het bedrijfje voor de website. Die wisten te melden dat ze het wel degelijk in aparte tabellen willen zien.

Ik ben het inmiddels (na zelf ook wat te researchen) met je eens dat het vrij onlogisch is en ook geenszins makkelijker is in het opbouwen van de website.

Nu ben ik weer bij af, hoe krijg ik alles in apparte tabellen? Waar begin ik, want dit is geen standaard convert optie die in de office suite zit. Alle hulp is welkom!

edit:
Een verhelderend moment, wat het probleem zou moeten vereenvoudigen!
Als ik uit het excel document van elke regel 1 apart bestand kan laten maken, zou ik die zo in access kunnen importen en is het probleem opgelost :) Nu nog uitzoeken hoe ik dat ga doen :/

[ Voor 19% gewijzigd door Bliep op 23-07-2009 14:08 ]


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Bliep schreef op donderdag 23 juli 2009 @ 13:48:
Nu ben ik weer bij af, hoe krijg ik alles in apparte tabellen? Waar begin ik, want dit is geen standaard convert optie die in de office suite zit.
Nee gelukkig niet, zeg :)
Ach, weet je, gebruik dit in Access/Visual Basic:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'Warning: only to be used by the insane
'Scatters a table into pieces, destroying the easy usability of its data
Public Sub ScatterATable()
    Const tableName = "tabelnaam"
    Const field1 = "veld1"
    Const field2 = "veld2"
    
    Dim src As Recordset
    Set src = CurrentDb.OpenRecordset(tableName, , dbForwardOnly)
    Do While (Not src.EOF)
        CurrentDb.Execute "create table [" & src.Fields(0) & "] (" & field1 & _
            " string(255)," & field2 & " string(255))"
        Dim i As Integer
        For i = 1 To src.Fields.Count - 1
            CurrentDb.Execute "insert into [" & src.Fields(0) & "] values ('" & _
                src.Fields(i).Name & "','" & Replace(src.Fields(i), "'", "''") & "')"
        Next i
        src.MoveNext
    Loop
End Sub

En vergeet niet op F5 te drukken na afloop. Voor de zekeheid verwijderd deze funtie de oude tabel niet. Werkt alleen bij geen dubbelen of hele vreemde teksten (met ]) in kolom 1 en geen gekke veldnamen (met ').

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Dat commentaar doet het 'm! 7(8)7

  • Bliep
  • Registratie: September 2003
  • Laatst online: 22-11 06:57
Het gemene is dat hij hem zelf heeft geschreven :P
Heb het script overigens nog niet aan de praat gekregen, maar ik ga er nu weer op duiken en uitpluizen hoe en waarom :D

in ieder geval al bedankt!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Bliep schreef op maandag 27 juli 2009 @ 14:07:
Het gemene is dat hij hem zelf heeft geschreven :P
Klopt, ik heb hem zelf even getest (incl. commentaar) en hij deed het prima... :p
Heb het script overigens nog niet aan de praat gekregen, maar ik ga er nu weer op duiken en uitpluizen hoe en waarom :D
Lijkt me redelijk gemakkelijk wat je moet doen om hem uit te voeren, namelijk:
  1. tabelnaam aanpassen in de echte naam
  2. de boel (al dan niet met commentaar) kopiëren naar de VB-editor (Database Tools->Visual Basic, en dan in bijvoorbeeld in een nieuwe Module1)
  3. Op de macro gaan staan, op F5 drukken om de macro uit te voeren, vervolgens naar het overzicht van 'All Tables' gaan, op F5 drukken en de akelige hoeveelheid tabellen aanschouwen.
En commentaar staat erbij in de hoop dat ik zelf nooit zo'n puinzooi zal terugzien (zie ook Pounding A Nail: Old Shoe or Glass Bottle?) ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Bliep
  • Registratie: September 2003
  • Laatst online: 22-11 06:57
het werkt! Je bent een ware held ;)

Hoe breid ik het script uit zodat ik nog meer velden kan vernietigen? :p In werkelijkheid heb ik namelijk zo'n 60 a 70 velden in plaats van 2 :)

En wat betreft die PM van je, als jij zo'n script in een kwartiertje kunt maken vind ik het prima hoor :) Want dat is ongeveer wat ik er wel voor over heb.

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Bliep schreef op dinsdag 28 juli 2009 @ 12:15:
Hoe breid ik het script uit zodat ik nog meer velden kan vernietigen? :p In werkelijkheid heb ik namelijk zo'n 60 a 70 velden in plaats van 2 :)
Huh, die 2 veldnamen zijn voor de output. De oorspronkelijke tabel kan zoveel velden hebben als je maar wilt... :?

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1