Avatar billede maui Nybegynder
03. september 2003 - 12:41 Der er 10 kommentarer og
1 løsning

Data til access

Jeg får hver uge tilsendt et excelark med lagerdata, excelarket indeholder flg. date, som jeg skal have overført til access:

A1: Dato
A10-: Varenr.
E10-: Salg.
F10-: Lager.

Databasen er oprettet med to tabeller (Salg og lager), i hver tabel er første felt "Dato" og derefter følger "varenr".
Jeg vil meget gerne have en makro til at fordele data.

På forhånd tak.
Avatar billede stewen Praktikant
03. september 2003 - 13:24 #1
Er et Access spm.! For i Filer -> Hent eksterne data... kan man hente fra Excel - derfor skal du bruge VBA i Access - og ikke i Excel.
03. september 2003 - 14:06 #2
Jeg giver stewen ret. du skal åbne en access database og oprette passende felter i en tabel hvor du ønsker dine data i Access. herefter anvender du wizzarden "hent eksterne data" i access. den vil guide dig til at overføre de data til de rigtige felter i access.
du kan godt inspille en makro der henter data ved tryk på en knap men det kræver at excel filen hedder det samme og ligger det samme sted heletiden. herefter skal du
1. starte med at lave en import tabel i access hvor data først "lander"
2. herefter skal du køre en tilføjelses forespørgsel for at overføre data til dine egentlige tabeller
3. herefter slette importtabellerne igen.

det kan gøres med een makro ved tryk på en knap
Avatar billede bak Forsker
03. september 2003 - 16:27 #3
Det er ikke det store problem at gøre det i excel, men jeg skal lige være heltsikker på hvor data skal hen....
Hvilke celler skal i Lagertabellen og hvad hedder felterne i access?
Hvilke celler skal i Salgstabellen og hvad hedder felterne i access?
Avatar billede bak Forsker
03. september 2003 - 16:53 #4
Jeg antager nu at "Lager"-tabellen indeholder tre felter
Dato, varenr, og antal
A1 skal i dato, A10 i varenr og F10 skal i antal
Salg indeholder ligeledes 3 felter
Dato, varenr, og antal
A1 skal i dato, A10 i varenr og E10 skal i antal

Det første du skal gøre er under TOOLS i vbs-editoren klikke på References, finde "Microsoft DAO 3.6 Object library" og sætte flueben ved den.

I koden skal du lige ændre navnet på databasen.
Kør så makroen og dine data skulle gerne havne i din accesdatabase.
Har lige testet og det funker fint her.

Sub AddRecordsToAccess()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim ws As Worksheet
'Init
Set ws = ActiveSheet
Set db = OpenDatabase("C:\Testdatabase.mdb")

Set rs1 = db.OpenRecordset(Name:="Salg", Type:=dbOpenDynaset)
With rs1
.AddNew
.Fields("dato").Value = ws.Range("A1").Value
.Fields("varenr").Value = ws.Range("A10").Value
.Fields("antal").Value = ws.Range("E10").Value

.Update
End With
rs1.Close

Set rs2 = db.OpenRecordset(Name:="Lager", Type:=dbOpenDynaset)
With rs2
.AddNew
.Fields("dato").Value = ws.Range("A1").Value
.Fields("varenr").Value = ws.Range("A10").Value
.Fields("antal").Value = ws.Range("F10").Value

.Update
End With
rs2.Close

'close database
db.Close
Avatar billede bak Forsker
03. september 2003 - 16:55 #5
Jeg fik vist ikke lige slutningen med

Sub AddRecordsToAccess()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim ws As Worksheet
'Init
Set ws = ActiveSheet
Set db = OpenDatabase("C:\Testdatabase.mdb")

Set rs1 = db.OpenRecordset(Name:="Salg", Type:=dbOpenDynaset)
With rs1
.AddNew
.Fields("dato").Value = ws.Range("A1").Value
.Fields("varenr").Value = ws.Range("A10").Value
.Fields("antal").Value = ws.Range("E10").Value

.Update
End With
rs1.Close

Set rs2 = db.OpenRecordset(Name:="Lager", Type:=dbOpenDynaset)
With rs2
.AddNew
.Fields("dato").Value = ws.Range("A1").Value
.Fields("varenr").Value = ws.Range("A10").Value
.Fields("antal").Value = ws.Range("F10").Value

.Update
End With
rs2.Close

'close database
db.Close

'Clean up
Set rs1 = Nothing
Set rs2 = Nothing
Set db = Nothing
End Sub
Avatar billede maui Nybegynder
03. september 2003 - 20:16 #6
Bak, det er ikke helt det jeg søger.

Felterne hedder:
Dato
VareA
VareB
VareC
etc.

Antallet af varenr. i excelarket kan variere.
Avatar billede bak Forsker
03. september 2003 - 22:04 #7
Jeg må indrømme at jeg har lidt svært ved at gennemskue din databasestruktur, men test lige det her.

Sub AddRecordsToAccess()
Const StartRow As Long = 10
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim ws As Worksheet
Dim EndRow As Long
Dim FieldName As String
Dim y As Long
'Init
Set ws = ActiveSheet
Set db = OpenDatabase("C:\Testdatabase.mdb")
Set rs1 = db.OpenRecordset(Name:="Salg", Type:=dbOpenDynaset)
EndRow = Range("A" & StartRow).End(xlDown).Row

With rs1
.AddNew
.Fields("dato").Value = ws.Range("A1").Value
  For y = StartRow To EndRow
      FieldName = ws.Range("A" & y).Value
      .Fields(FieldName).Value = ws.Range("E" & y).Value
  Next
  .Update
  .Close
End With

Set rs2 = db.OpenRecordset(Name:="Lager", Type:=dbOpenDynaset)
With rs2
  .AddNew
  .Fields("dato").Value = ws.Range("A1").Value
  For y = StartRow To EndRow
        FieldName = ws.Range("A" & y).Value
        .Fields(FieldName).Value = ws.Range("F" & y).Value
  Next
  .Update
  .Close
End With


'close database
db.Close

'Clean up
Set rs1 = Nothing
Set rs2 = Nothing
Set db = Nothing
End Sub


Hvis der stadig er problemer blver jeg nok nødt til at se databasen og regnearket med et par eksempeldata i.
tommybak@netscape.net
Avatar billede maui Nybegynder
04. september 2003 - 10:15 #8
Det var lige det jeg søgte, mange tak.

Jeg har dog et lille ekstra spørgsmål:

Hvis Excelarket indeholder et varenr. som ikke eksisterer i databasen, kan makroen så oprette et nyt felt, eller skal det gøres manuelt?
Avatar billede maui Nybegynder
04. september 2003 - 11:33 #9
Det virkede som en god ide, men med ca. 500 varenr. og access kun kan håndtere 255 felter virkede det ikke. :-(
Avatar billede bak Forsker
04. september 2003 - 13:07 #10
Betyder det at du opgiver ?
Avatar billede maui Nybegynder
04. september 2003 - 14:25 #11
har lavet en kombination af dine to forslag, så felterne hedder:
Dato, Varenr., Salg, Lager.
Det betyder at jeg kun har en tabel, men det virker.

Pointene har du fortjent.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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