Avatar billede ds-zim Nybegynder
25. september 2000 - 13:13 Der er 11 kommentarer og
1 løsning

Rapport baseret på Accessforespørgsel

Jeg ved det er muligt at \"udgive\" en rapport baseret på data fra en DB i Word vha. evt. brevfletning.
Men er det muligt at fra Access at overføre data fra en vist formular/rapport til et forberedt
Word dokument ?
Dvs at der vil hovedsaligt være tale om en parameteroverførsel til diverse indsatte felter i Worddokumentet.
Point vil blive givet til den første med en præcis,funktionel løsning!

Sound off, Zim
Avatar billede ds-zim Nybegynder
25. september 2000 - 13:14 #1
Ææøh.. Det skulle have været \'den bedste, mest præcise, funktionelle løsning :)
Avatar billede jalle Nybegynder
25. september 2000 - 13:31 #2
lytter med
Avatar billede lkp Nybegynder
25. september 2000 - 13:59 #3
Hej ds-zim og Jalle

Jeg vil prøve at give en løsning til spørgsmålet ved et eksempel.

Min løsning bygger på, at du i forvejen opretter en template/skabelon, der indeholder de faste elementer.

Alle de steder du ønsker at Access skal indesætte oplysninger, indsætter du et bogmærke. Dette gøres ved, at du placerer markøren hvor du ønsker bogmærket, og vælger \"bogmærke\" fra menuen \"indsæt\". Giv disse bogmærker sigende navne.

Denne skabelon gemmer du (selvfølgelig) som en .dot fil, et sted du kan huske.

Herefter kan du nu fra Access refere til disse bogmærker.

Her følger en punktvis beskrivelse af hvordan du laver et lille test projekt:

1. Opret en ny skabelon i word, hvori du indsætter 2 bogmærker. Kald dem hhv. bmkNavn og bmkTekst.

2. Gem denne skabelon i samme bibliotek, som du opretter Access Databasen i.

3. Opret en Access Database, i biblioteket fra (2)

4. Opret en Formular (frmTest). På formularen opretter du 2 tekstbokse (txtNavn), (txtTekst). Samt en kommandoknap (btOK).

5. I knappens OnClick event, tilføjer du nedenstående kode:

--- Kode start ---

Private Sub btOK_Click()

    Dim objWord As Word.Application
   
    Set objWord = New Word.Application
   
    With objWord
        .Documents.Add _ 
    Application.CurrentProject.Path & \"\\Test.dot\"
        .Visible = True
    End With
   
    With objWord.ActiveDocument.Bookmarks
        .Item(\"bmkNavn\").Range.Text = txtNavn
        .Item(\"bmkTekst\").Range.Text = txtTekst
    End With
   
End Sub

--- Kode slut ---

Du skal desuden indsætte en reference til Microsoft Word 9.0 object library (Tools - References)

6. Test formularen.

Lidt forklaring til koden:

Linjen objWord.Documents.Add Appli...

Her fortæller Access Word hvor den skal finde skabelonen den skal starte op med. Application.CurrentProject.Path returnerer stien til Access, derfor skulle du gemme skabelonen i samme bibliotek som Access basen. Hvis du f.eks. havde gemt skabelonen som \"C:\\Test.dot\", kunne du i linjen skrive:

Linjen objWord.Documents.Add \"c:\\test.dot\".

Linjen:
.Item(\"bmkNavn\").Range.Text = txtNavn
er næsten selvforklarende, du referer til bogmærkenavnet, og sætter det lig med den værdi du ønsker overført.


Håber at ovenstående er svar på dit spørgsmål, ellers skriv igen hvis du ønsker noget uddybet.

Med venlig hilsen

LKP
Avatar billede ds-zim Nybegynder
25. september 2000 - 15:17 #4
Ser interesant ud ! Har lige kørt min test og er ganske imponeret af forslaget !
Jeg har dog behov for mindst et par dage til lige at undersøge for begrænsninger !
Ellers ser det ud til at du har ramt plet \'LKP\' ! :)
Avatar billede jalle Nybegynder
27. september 2000 - 20:41 #5
Fungere godt, men kan man også overfører tal med automatisk to decimaler på denne måde?
Avatar billede lkp Nybegynder
27. september 2000 - 21:00 #6
Hej Jalle

Jeg er ikke helt sikker på hvad du mener.

Hvis du er sikker på, at det du vil formattere altid er et tal, kan du blot bruge format kommandoen.

Hvis det f.eks. var i ovenstående eksempel, at du ønskede at det der blev skrevet i txtNavn skulle formatteres med 2 decimaler, skal du skrive flg.:

.Item(\"bmkNavn\").Range.Text = Format(txtNavn,\"0.00\")

Du kan selvfølgelig skifte txtNavn ud med en anden variabel.

Hvis du ikke er sikker på, om du får en numerisk værdi at formattere, kan du selv lave en funktion der sørger for, kun at formattere såfremt variablen er nummerisk, og ellers blot levere inputtet tilbage.

Et eksempel på en sådan funktion kunne være:

--- Kode start ---

Public Function FormatString(varText As Variant) As Variant
   
    If IsNumeric(varText) Then
        varText = Format(varText, \"0.00\")
    End If
   
    FormatString = varText
   
End Function

--- Kode slut ---

Jeg er som sagt ikke sikker på, om det er det du mener, hvis ikke, spørg igen (eller opret et nyt spørgsmål ;-) )

Med venlig hilsen

LKP

PS.: ds-zim, har du fået testet??

Avatar billede ds-zim Nybegynder
28. september 2000 - 10:19 #7
Beklager, ligger syg :( Hvis d r fordi du mangler point, så sig til!
Jeg kan godt love dig ihvertfald 50-75 point, jeg vil bare gerne have lidt at lokke med,
skulle d ske jeg får brug for uddybelse :)

Cheers, Zim
Avatar billede lkp Nybegynder
28. september 2000 - 11:19 #8
Hej Zim

Det er da ikke så rart at du ligger syg.

Nej jeg mangler ikke point, bliv du bare rask først.

Med venlig hilsen og god bedring

LKP
Avatar billede jalle Nybegynder
29. september 2000 - 00:28 #9
>> lkp

Det var lige præcis det jeg manglede... takker for det...
Avatar billede ds-zim Nybegynder
29. september 2000 - 09:38 #10
>LKP
Har du en mail jeg kan fange dig på ? Jeg har efter møde med bestyrelsen endelig fået stoppet
udviklingsarbejdet og sat gang i fejlsøgningen.
Af samme grund regner jeg ikke med at benytte ovenstående fuldt ud foreløbig.
Derfor håber jeg lidt at du kan nås via email, for så vil jeg lukke spørgsmålet nu.

Cheers, Zim
Avatar billede lkp Nybegynder
29. september 2000 - 12:02 #11
Hej ZIM

Du kan fange mig på:

l-k@get2net.dk

Med venlig hilsen

LKP
Avatar billede ds-zim Nybegynder
29. september 2000 - 12:12 #12
For Fedt ! :) Jeg arbejder som regel med en uge af gangen som tidsramme,
derfor er det tit, at der sker en (væsentlig) ompriotering af arbejdsopgaverne !
I det her tilfælde er det blevet min opgave at \"rense\" vores DB for fejl *FAINT*
Såøh .. Denne tidsramme håber jeg på kan blive i måneder :)
Men jeg vender tilbage når jeg går igang med at undersøge dataoverførsel, Officeapplikationer imellem.

Cheers, Zim
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