Avatar billede iggipop Nybegynder
27. september 2004 - 14:44 Der er 14 kommentarer

Excel til AcessDB

Hejsa!

Jeg har en lille ASP-shop som har varer i en Accessdatabase.
Nu får jeg nogle prislister sendt i et excelark. Det er ikke alle felter i excelarket der skal med i min base.
1.
Kan man lave en import af nogle bestemte felter fra excelarket til nogle besteme felter i basen og hvordan?
2.
Nu opdateres listen engang i mellem, så kan man automatisere sådan opgave og hvordan?
Avatar billede jensen363 Forsker
27. september 2004 - 14:55 #1
Det kan man godt ... Brug Guiden Importer regneark ... her kan du få hjælp til det meste, herunder ignorering af kolonner/rækker m.v.
Avatar billede jensen363 Forsker
27. september 2004 - 15:01 #2
Mht. automatisering af import, kan dette snilt gøres, eksempelvis hver gang databasen åbnes, der er et men, en automatisering forudsætter, at regnearket har en mere eller mindre fast formattering/tabelopbygning

Er importjob kunne se således ud :

Function Import()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
               
    ImportFolder = DLookup("[ImportFil]", "tblFilplacering", "[ID] = 1")
             
    'Slet indhold af Tabel
    strSQL = "DELETE * FROM Tabel;"
   
        db.Execute strSQL
       
    'Behandler Importfil

    DoCmd.TransferSpreadsheet acImport, 8, "Tabel", ImportFolder & "ExcelArk.xls", True, "A:C"

End Function
Avatar billede iggipop Nybegynder
27. september 2004 - 15:13 #3
Puha....det skal jeg nok lige have lidt hjælp med :D
Men altså...en ting ad gangen. Regnearket kan jeg godt tilpasse så det har en bestemt form hver gang. Så ville jeg smide det op på min webserver med ftp og så kunne trykke på en knap på min adminside og så kunne importen af de nye data foregå.
1.
Men det kan godt lade sig gøre kan jeg næsten forstå ?
2.
Er det ASP kode du har vist ?
3.
Lad os antage følgende:
Min excelark hedder : mitexcel.xls
og har følgende kolonner
Varenr
Pris
Beskrivelse
Link

Min database hedder webshop.mdb
og har en tabel der hedder produkter
Med følgende felter:
Varenr
Pris
Beskrivelse
Link

Hvordan skal koden så se ud ?
Avatar billede jensen363 Forsker
27. september 2004 - 15:21 #4
Koden er ren VBA i Access ... sorry ...

linien : "ImportFolder = DLookup("[ImportFil]", "tblFilplacering", "[ID] = 1")"
forudsætter, at du opretter en tabel ( tblFilplacering ) med information om, hvor dit regneark er placeret ( ImportFil ), med ID ( hvis du har flere importbiblioteker ).

Koden sletter indholdet af produkter forinden import ...


Function Import()
Dim strSQL As String
Dim db As DAO.Database

    Set db = CurrentDb()
               
    ImportFolder = DLookup("[ImportFil]", "tblFilplacering", "[ID] = 1")
             
    'Slet indhold af Tabel
    strSQL = "DELETE * FROM produkter;"
   
        db.Execute strSQL
       
    'Behandler Importfil

    DoCmd.TransferSpreadsheet acImport, 8, "produkter", ImportFolder & "mitexcel.xls", True, "A:D"

End Function
Avatar billede iggipop Nybegynder
27. september 2004 - 15:27 #5
Okay...jeg må prøve det engang når jeg kommer hjem, men jeg skal lige forstå det rigtigt...hvor skal jeg smide koden ind henne ? I Selve access eller hur ? Ellers er jeg ik helt med....
Avatar billede jensen363 Forsker
27. september 2004 - 15:30 #6
Du kan oprette det som en knapfunktion/eller modul med hændelsesprocedure i Access.

Obs. du skal have reference til DAO i din modulkodr for at få det til at fungere
Avatar billede iggipop Nybegynder
27. september 2004 - 15:33 #7
>>Obs. du skal have reference til DAO i din modulkodr for at få det til at fungere ??

Men det vil sige at jeg ikke kan få en automatisk opdatering..altså forstået sådan at jeg ikke kan uploade et excelark og så bare fyre et script af remote så det bare kører ?
Avatar billede jensen363 Forsker
27. september 2004 - 15:38 #8
Det har jeg desværre ikke den helt store rutine i
Avatar billede iggipop Nybegynder
27. september 2004 - 15:39 #9
Oki...jeg prøver lige om jeg kan få det til at virke i første omgang!
Avatar billede tdimhcs Nybegynder
29. september 2004 - 11:34 #10
Det kan lade sig gøre med et ASP-script(har lavet et for længe siden) der bliver aktiveret når en et excel-ark bliver uploadet til en mappe. Excel-arket bliver valideret, og hvis indholdet er ok bliver det skrevet ned i databasen, og excel-arket bliver efterfølgende slettet/flyttet.
Men alt det kræver jo at du har tilladelse til disse ting på serveren!

/Kurt
Avatar billede diggerx Nybegynder
29. september 2004 - 11:56 #11
Jeg følger lige med... skal bruge en connection til excel
Avatar billede tdimhcs Nybegynder
29. september 2004 - 12:11 #12
> diggerx
F. eks:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.xls)};DBQ=" & Server.MapPath("excel.xls")

/Kurt
Avatar billede tdimhcs Nybegynder
29. september 2004 - 12:15 #13
Undskyld!
Der skulle selvfølgelig have stået:

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & Server.MapPath("excel.xls")
Avatar billede diggerx Nybegynder
29. september 2004 - 12:20 #14
Ja den gik bedre.. hvordan referer du til cellerne?

Jeg burde vist selvoprette et spørgmål..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester