Avatar billede bvk Juniormester
26. januar 2000 - 21:49 Der er 30 kommentarer og
1 løsning

Flette Word & Access

Jeg har en indkaldelse i Word der skal flettes med en Access database.
I databasen står navne, adresser osv. + hvilken dag  og tidspunkt folk skal møde. Feltet med møde dato samt feltet med mødetid må kun udfyldes med en dato/tid pr. felt.
Men når en mand skal møde, f.eks. 5 gange, skal dagene + tiderne komme under hinanden i Word dokumentet.

Eks.:    Mandag den 27/08-99      kl. 17.45
    Onsdag den 29/08-99    kl. 14.30
    Fredag den 31/08-99    kl. 10.15

Som jeg har fået det lavet nu udskrives der en indkaldelse pr. mødedag, de skulle gerne samles på en.
Men dem som kun skal indkaldes en gang skal der jo ikke være "spild plads" ved i indkaldelsen.
Kan i sende en lille prøve er der 100 point.
Avatar billede moses Praktikant
27. januar 2000 - 08:28 #1
Skriv brevet i en Access report istedet for, der kan du nemlig vælge, at udelade linier, hvis der ikke er nogen tilhørende information i tabellen.
Avatar billede hjensen Nybegynder
27. januar 2000 - 08:52 #2
Det er ret besværligt at få lavet i word-flet, specielt når man, som du, har data (linier), som i nogle tilfælde skal sættes på samme side, og i andre tilfælde skilles på forskellige sider.

Jeg vil også klart anbefale dig at lave en report i Access, hvor du uden for store problemer kan lave lidt kode på din report, så du kan lave de mails du skriver om.
Avatar billede privaten Nybegynder
27. januar 2000 - 09:16 #3

Vi er nok nødt til at se hvordan din db er skruet sammen, du kan evt. maile, så vil jeg gerne "baske" et dokument sammen til dig.

Avatar billede privaten Nybegynder
27. januar 2000 - 09:20 #4
>> Moses + HJensen

Kan man ikke "bare" skrue det rigtige SQL sammen + lægge et "if - then - else" statement omkring felterne i word dokumentet.
Avatar billede hjensen Nybegynder
27. januar 2000 - 10:16 #5
Jo, det kan man da "bare", men Access er nok væsentlig nemmere at gøre det i.
Avatar billede privaten Nybegynder
27. januar 2000 - 10:22 #6

>> HJensen,

Der var vist noget om at bvk også havde nogle krav til udskriften, printer + bakke etc. (tidligere sp.), det var derfor jeg mente word ville være et ok valg...
Avatar billede hjensen Nybegynder
27. januar 2000 - 14:25 #7
--> Privaten,

Det kan der jo være noget om, men så er vi nødt til at se db'en.
I reports kan du jo også tilknytte en speciel printer/printer-opsætning.

Avatar billede moses Praktikant
27. januar 2000 - 14:30 #8
Der er ikke nogen grund til at bruge word frem for Access-reports.
Avatar billede privaten Nybegynder
27. januar 2000 - 15:05 #9
>> Moses

Er det ikke sådan, at Word er meget nemmere at oprette flette dokumentet i?, jeg er da helt klart af den opfattelse at reporterne til tider er svære at give et professionelt udseende, især når det mere har karakter at et dokument end en egenglig rapport. Der er vel også derfor MS har gjort det så relativt "nemt" at få Word og Access til at samarbejde...

Det er i allefald min opfattelse, er det ikke rigtigt?
Avatar billede bvk Juniormester
27. januar 2000 - 15:07 #10
Øhh, jeg ser lige om ikke jeg kan lave et lille eksempel til jer.......
Avatar billede moses Praktikant
27. januar 2000 - 15:09 #11
Word har en masse tekstbehandlingsfeatures. De er selvfølgelig ikke implementeret i Access. Access derimod har en masse databasefeatures.
Når man vil kombinere de to fordele, så er der altid to muligheder:

Lave teksbehandlingsdelen i Access eller lave flette- og/eller databasedelen i word.
Avatar billede bvk Juniormester
27. januar 2000 - 19:59 #12
Kan det passe, at jeg i Access er nød til at lave en tabel med indkaldelse1, indkaldelse2, indkaldelse3, indkaldelse4 OSV. og så indsætte dem som fletfelter i vord?

Er der tvivl om hvad jeg mener, min E-Mail adresse er:  bvk@post5.tele.dk
Avatar billede bvk Juniormester
27. januar 2000 - 20:06 #13
Hvis i mailer til mig, kan i evt. få mit tlf. nr. så kan jeg måske bedre forklare mig.......
Avatar billede bvk Juniormester
27. januar 2000 - 21:28 #14
[Navn]
[Adresse]
[Post Nr & by]


Herved indkaldes De til at møde som nedenfor anført

[Indkaldelse 1]
[Indkaldelse 2]
[Indkaldelse 3]
[Indkaldelse 4]        Er det kun en dag folk skal møde, skal området her trækkes sammen til en linje.
[Indkaldelse 5]
[Indkaldelse 6]
[Indkaldelse 7]
[Indkaldelse 8]

for deltagelse i o.s.v. …….

Håber i forstår hvad jeg mener……..
Avatar billede bvk Juniormester
27. januar 2000 - 21:34 #15
[Navn]
[Adresse]
[Post Nr & by]


Herved indkaldes De til at møde som nedenfor anført

[Indkaldelse 1]
[Indkaldelse 2]
[Indkaldelse 3]
[Indkaldelse 4]    Er det kun en dag folk skal møde,
[Indkaldelse 5] skal området her trækkes sammen til en linje.
[Indkaldelse 6]
[Indkaldelse 7]
[Indkaldelse 8]

for deltagelse i o.s.v. …….

Håber i forstår hvad jeg mener……..
Avatar billede ikuyucu Nybegynder
28. januar 2000 - 08:20 #16
Jeg ved ikke hvordan din database er på nuværende tidspunkt men det er rigtigt at du er nød til at gøre det på den måde hvis du vil bruge Word til det. Der efter skal du indstille Word så den ikke skriver tomme felter.

Noget andet du kan gøre er at programmere dig til det i Word, men hvis du ikke har prøvet at programmere i VBA for Word ved jeg ikke om det er måden. Så bliver du nød til at sende dine dage fra Access til Word og sortere i dem og påføre dem. Lidt besværligt men det dur.

Det letteste vil nok at lave det i Access som du selv foreslår. Jeg ville nok selv ikke lave det enten i Word eller i Access men mixe dem som du selv foreslår. Så har du også givet  mulighed for at andre (der ikke kan Access) kan skrive brevet, og derefter sætte de brugbare felter ind og udskrive brevene.

Held og lykke med det
Avatar billede moses Praktikant
28. januar 2000 - 08:34 #17
Objektorienteret database:

Du skal selvfølgelig ikke have alle de kolonner !

Du skal lave en tabel for hvert objekt: en med personer og en med indkaldelser.

Husk at bruge Primærnøgle felter (evt. dem med autonummerering) for bagefter at kunne rette i queries, hvor begge tabeller indgår.

Nu kan du så indsætte en person pr. record i person tabellen og en indkaldelse pr. record i indkaldelses tabellen.

I hver record i indkaldelses tabellen, angiver du så bare primærnøglen for personen, der er indkaldt.
Avatar billede moses Praktikant
28. januar 2000 - 08:37 #18
Tænk nu, hvis én person blev indkaldt 30 gange og alle andre kun blev indkaldt 2-3 gange. Så ville du skulle slæbe rundt med 27-28 kolonner, som aldrig blev brugt ?!?!
Eller hvad nu, hvis du havde afsat 8 kolonner til indkaldelser, og efter 2 måneder, så kom du til en person, som skulle indkaldes 9 gange. Så skal du til at lave om på din database struktur - nul putte !!
Avatar billede ikuyucu Nybegynder
28. januar 2000 - 08:45 #19
Det er rigtigt at det ikke er så hensigtsmæssig at lave en kolonne for hver indkaldelse. Men det kan man vist meget let komme om med, ved at lave en sortering og en forespørgsel i ens poster. Så kan man lade Access generere de enkelte kolonner !
Avatar billede moses Praktikant
28. januar 2000 - 08:54 #20
NEJ - det er forkert.

Databaser lever og ånder for en fast tabelstruktur.

MEN - Det kan altsammen lade sig gøre i en query - men det er også kun en midlertidig generering af data i RAM.

Mange databaser har tilmed den dårlige egenskab, at deres filer vokser, når man hele tiden laver om på tabellernes struktur. Derfor er der en compact kommando, som smider overflødigt væk efter afslutning af udviklingsfasen.

Avatar billede moses Praktikant
28. januar 2000 - 08:56 #21
Du laver en

Person Tabel
------------
PersonID: Autonumber
Navn: Text
Adresse: Text

Indkladelses Tabel
------------------
IndkaldelsesID: Autonumber
Dato: Date/Time
Sted: Text
PersonID: Number-Long Integer

Så laver du en Query:

TRANSFORM First([Indkaldelses Tabel].Sted) AS FirstOfSted
SELECT [Person Tabel].Navn, [Person Tabel].Adresse
FROM [Indkaldelses Tabel] INNER JOIN [Person Tabel] ON [Indkaldelses Tabel].PersonID = [Person Tabel].PersonID
GROUP BY [Person Tabel].Navn, [Person Tabel].Adresse
PIVOT [Indkaldelses Tabel].Dato;

Så har du hele databasens indhold beskrevet i en slags kalenderoversigt !!!
Avatar billede ikuyucu Nybegynder
28. januar 2000 - 09:04 #22
Moses: Jeg har ikke i sinde at fortsætte diskussionen. At man råber højst betyder ikke at man har ret... Det kan laves på mange (andre) måder, det er en ting der er vist. Sig mig laver du ikke en forespørgsel??? Om den forspørgsel skal genereres så man har en kolonne pr. indkaldelse eller på en anden måde kan for databasen være lige gyldig da det er udtræk fra databasen som man laver. Prøv at læse min kommentar nærmere og forstå hvad der bliver skrevet?!
Avatar billede hjensen Nybegynder
28. januar 2000 - 09:15 #23
-->ikuyucu & moses

HE HE, det er jo den evige design-diskussion.
Jeg vil give ikuyucu ret i, at det for opgaven som sådan kan være komplet ligegyldigt, men så heller ikke længere.
Set ud fra synspunktet om frentidig brug/performance og overblik, så er det nu engang altså moses der har ret.

Tabel med informationer af denne art skal designes med relationer.....
Avatar billede ikuyucu Nybegynder
28. januar 2000 - 09:21 #24
Jeg prøver lige en gang til:
- Ja man skal lave en relationsdatabase
- Ja man skal have en kolonne pr indkaldelse (så Word kan finde ud af det)
- Ja disse kollonner skal genereres med en forspørgsel
- Nej der skal ikke være et felt pr indkaldelse i tabellen
Det var det jeg mente...
Avatar billede bvk Juniormester
28. januar 2000 - 09:22 #25
UNDSKYLD.........
Men jeg bruger Access97 DK, det havde jeg hvist ikke fået sagt.
Til moses:
Jeg kan genkende "noget" af det Du skriver, men men langt fra alt.
Har Du en E-mail adresse jeg kan jo så prøve at sende Dig mit matriale og telefon nr.
Avatar billede hjensen Nybegynder
28. januar 2000 - 09:24 #26
--> bvk

Du kan sagtens gøre det i Access97 også.
Avatar billede bvk Juniormester
28. januar 2000 - 09:30 #27
Min adresse er:

bvk@post5.tele.dk
Avatar billede moses Praktikant
28. januar 2000 - 10:05 #28
Så kan man vel bare bruge en funktion i Access til at generere et pænt format til Word:

Public Function HentIndkaldelser(PersonID As Long) As String
    'Returnerer alle Indkaldelser for den angivne person
    'Stillet op under hinanden med linieskift
    Dim MyDB As DATABASE, MyRecordset As Recordset
    Dim Indkaldelser As String
   
    Set MyDB = CurrentDb
    Set MyRecordset = MyDB.OpenRecordset("Indkaldelses Tabel", dbOpenDynaset)
    Indkaldelser = ""
   
    With MyRecordset
        .FindFirst "[PersonID] = " & PersonID
        While Not .NoMatch
            Indkaldelser = Indkaldelser & ![Dato] & ": " & ![Sted] & vbCrLf
           
            .FindNext "[PersonID] = " & PersonID
        Wend
        .Close
    End With
    HentIndkaldelser = Indkaldelser
End Function


Avatar billede privaten Nybegynder
01. februar 2000 - 12:20 #29
>> bvk

Kunne du bruge løsningen?

Avatar billede bvk Juniormester
03. februar 2000 - 19:37 #30
Ja >> privaten det funker bare.....
og til alle andre jeg takker for den interesse i har vist, den debat som har kørt siger mig, at det var godt jeg spurgte.........

Alle tak for hjælpen
Men det slutter måske ikke her nye problemer opstår jo som tiden går....
Avatar billede ikuyucu Nybegynder
31. marts 2000 - 09:34 #31
Af ren nysgerrighed gad jeg nok vide hvordan ?!??
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