Gå til innhold

LØST : Eksportering fra Access til lønn


Anbefalte innlegg

Hei.

Har blitt kastet ut på dypt vann her på jobb for tiden, så det blir en del DB spørsmål fra meg i tiden framover.

 

Vi eksporterer lønnsdata fra Access til Anabas lønnssystem via en liten prosedyre som ser slik ut :

Private Sub Overfør_timer_til_lø_Click()
On Error GoTo Err_Overfør_timer_til_lø_Click

   Dim DocName As String

   DocName = "abtidint_dat"
   DoCmd.OutputTo A_REPORT, DocName

Exit_Overfør_timer_til_lø_Click:
   Exit Sub

Err_Overfør_timer_til_lø_Click:
   MsgBox Error$
   Resume Exit_Overfør_timer_til_lø_Click
   
End Sub

Det som er problemet her er at vi må gjøre dette på en maskin som har office 97 installert for å få filen til å bli rett ( slik at den kan importeres )

 

Når vi eksporterer fra 97 maskinen blir det seende slik ut :

  100000000071032006   158,00
  100000000072032006    14,50

  100000000122032006     7,00

Og når vi eksporterer fra office 2003 blir det slik :

  1000000    07  02/2006     158,00
  1000000    07  02/2006      14,50
     00      2
  1000000    12  02/2006       7,00
     00      2

Så hvis noen har ett godt forslag til hvordan man kan spesifisere filtypen som blir eksporter litt nærmere mottas dette med stor takk.

 

MVH

Ronny

Endret av ronnyaa
Lenke til kommentar
Videoannonse
Annonse

Vet ikke hvordan Anabas vil ha dataene, men for å eksportere en tabell eller spørring til .xls format, kan du bruke denne koden:

 

Private Sub Overfør_timer_til_lø_Click()
DoCmd.OutputTo acOutputQuery, "SPØRRINGNAVN", acFormatXLS, CurrentProject.Path & "\" & "FILNAVN.xls", False
End Sub

 

Her bytter du selvfølgelig ut SPØRRINGNAVN med navnet på spørringen din, og FILNAVN med hva du vil kalle den eksporterte filen.

 

Den eksporterte filen legges på samme plass som databasen, men dette kan endres ved å bytte ut Path med url'en til mappen du vil legge filen i.

Lenke til kommentar

Det er greit da.

Som jeg sa lengre opp, i boks 1 er det formatet anabas vil ha dataene, i boks to er det slik det blir seende ut når man bruker access 2003.

 

Å finne ut hvordan man automaisk konverterer til excel er ikke så vanskelig, men å få det rette tekstformatet er litt værre.

 

Ronny

Lenke til kommentar
Å finne ut hvordan man automaisk konverterer til excel er ikke så vanskelig, men å få det rette tekstformatet er litt værre.

 

Hvilket format er det programmet bruker da?

 

Slik det ser ut i din første post, kan du jo bare slå sammen de tre første kollonene til en for å få 100000000071032006 fra 1000000 07 02/2006

Eller?

Lenke til kommentar

Tja, er ikke sikker på hva man kan kalle formatet for er vel en slags type dos fil format.

 

Som sagt, i access97 blir det slik som i det første eksempelet, og i access 2003 blir det som i eksempel 2.

 

Å gjøre mye etterarbeide er ikke særlig aktuelt da disse som arbeider med dette til vanlig ikke er noen dataguruer.

Vi snakker her om en mnds arbeide for ca 80 stykker, så den som vi redigere tekstfiler er det bare å fyre løs.. hehe

Lenke til kommentar
Å gjøre mye etterarbeide er ikke særlig aktuelt da disse som arbeider med dette til vanlig ikke er noen dataguruer.

Vi snakker her om en mnds arbeide for ca 80 stykker, så den som vi redigere tekstfiler er det bare å fyre løs.. hehe

Mente selfølgelig at du slår sammen kolonenne i spørringen i Access.

F.eks med

[Kol1] & [Kol2] & (Left([Kol3];2) & Right([Kol3];4))

Hvor Kol1, Kol2 og Kol3 er navnet på feltene som inneholder de tre datatypene du vil slå sammen?

 

Er ikke sikker på hvordan spørringen som inneholder dataene ser ut, men regner med den er delt i 4 kolonner, og det er derfor du får følgende når du eksporterer:

  
Kol1      Kol2     Kol3         Kol4
1000000    07     02/2006     158,00
1000000    07     02/2006      14,50

 

Stemmer dette?

Lenke til kommentar
Skal teste dette når jeg kommer på jobben i morgen, beklager at jeg ikke helt forstod hva du mente med det samme ;)

Har ikke holdt på med VB koding på minst 6 år.. hehe

6029870[/snapback]

 

Var da ikke en VB-kode jeg postet heller...

Men koden for å sette inn i raden "Felt:" i utformingsvisning for spørringen i access.

SQL-koden for det samme blir da:

SELECT (Left([Kol3],2) & Right([Kol3],4)) AS Kolonne3

Lenke til kommentar
  • 1 måned senere...

Sånn, nå har jeg omsider fått tid til å gjøre noe videre med dette.

 

Jeg har valgt å gå en litt annen vei enn hva jeg opprinnelig hadde for å løse dette.

Nå har jeg bare ett par småproblem igjen før det blir som det skal være.

 

Har valgt å eksportere via følgende VB kode :

DoCmd.TransferText acExportDelim, , "qryTil_lønn", "c:\tekst.txt", False, ""

Dette blir behandlet i schema.ini, som ser slik ut :

[timeliste.txt]
ColNameHeader=False
MaxScanRows=1
Format=FixedLength
CharacterSet=OEM

Det som kommer ut ser ut som følgende :

"100000000071012006    22,5"
"100000000122012006    5"
"100000000286012006    0,5"
"101000000041012006    2"
"101000000071012006    20,5"

Problemet nå blir å dataene som kommer ut (ønsker at det blir satt to siffer på alle), samt unngå at det blir satt i anførsel.

Så dersom noen har tips til hvordan det kan løses blir det satt stor pris på :-)

Lenke til kommentar
Sånn, nå har jeg omsider fått tid til å gjøre noe videre med dette.

 

Jeg har valgt å gå en litt annen vei enn hva jeg opprinnelig hadde for å løse dette.

Nå har jeg bare ett par småproblem igjen før det blir som det skal være.

 

Har valgt å eksportere via følgende VB kode :

DoCmd.TransferText acExportDelim, , "qryTil_lønn", "c:\tekst.txt", False, ""

Dette blir behandlet i schema.ini, som ser slik ut :

[timeliste.txt]
ColNameHeader=False
MaxScanRows=1
Format=FixedLength
CharacterSet=OEM

Det som kommer ut ser ut som følgende :

"100000000071012006    22,5"
"100000000122012006    5"
"100000000286012006    0,5"
"101000000041012006    2"
"101000000071012006    20,5"

Problemet nå blir å dataene som kommer ut (ønsker at det blir satt to siffer på alle), samt unngå at det blir satt i anførsel.

Så dersom noen har tips til hvordan det kan løses blir det satt stor pris på :-)

6291072[/snapback]

For å bli kvitt anførselstegnene er du nødt til å sette opp en spesifikasjon for eksport fra Access. Dette gjøres i noen enkle steg:

Velg spørringen du skal eksportere qryTil_lønn, og på Fil menyen velger du Eksporter... Da vil du få åpnet en dialog som ber deg velge hvor du vil lagre filen. I denne er det viktig at du under filtype velger Tekstfiler. Trykk så på Eksporter for å åpne veiviser for teksteksport.

Denne veivisereen er ikke noe du i dette tilfellet ønsker å fullføre, det du istedet skal gjøre er å trykke på knappen for Avansert... Da vil du bli presentert for enrekke valg om hvordan utseende på dataene som skal eksporteres skal være. For å fjerne anførselstegnene velger du at Tekstkvalifikator er {ingen}. Fullfør så med å velge Lagre som. Når du har lagret valgene trenger du ikke gå gjennom resten av veiviseren og trykker bare to ganger på Avbryt.

 

Når du så har gått gjennom hele prosessen og lagret en spesifikasjon for teksteksport må du endre litt på koden for eksport av spørringen.

Da vil koden bli slik: (Bytt ut ExportLønn med det du lagret spesifikasjonen som)

DoCmd.TransferText acExportDelim, "ExportLønn", "qryTil_lønn", "c:\tekst.txt", False

Lenke til kommentar

Kjempegreier dette, tydelig at du har holdt på en del med dette.

Da trenger jeg bare ett lite tips til for at det skal fungere perfekt.

 

Har pratet med utviklerne av lønnsystemet, og de sier at det kreves ett visst antall mellomrom mellom det første og det andre feltet, har du noen tips til hvordan jeg kan løse det ? Har bare fått satt ett mellomrom, og jeg trenger 4.

Lar seg vel muligens løse om jeg setter inn ett "tomt" felt muligens.

 

Det andre problemet er at antall timer (felt to) må være høyrejustert, tips til det ?

 

Her er hvordan det ser ut nå :

10000000007112006	22,50
10000000012212006	5,00
10000000028612006	0,50
10100000004112006	2,00
10100000007112006	20,50

 

EDIT : Fant en løsning som ordnet opp i dette problemet :thumbup:

Tusen takk til t0my for mange meget bra innspill :w00t:

Endret av ronnyaa
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...