10. april 2001 - 15:25
Der er
1 kommentar og
2 løsninger
Import af brev/mail i access
Jeg får nogel standard mail i brevform, som jeg gerne vil have importret i Acces97 - men da de jo er skrevet almindeligt bliver hver linie betragtet som en ny post, hvordan får jeg access97 til at betragte hver linie som et felt i én post (=brevet)
dvs.
-->hvert brev er en post
-->hver linie i brevet er et felt
10. april 2001 - 16:05
#1
Hej akr,
Er der det samme antal linier i hver mail? Ellers får du problemer med at lægge hver linie i hvert sit felt.
Men ellers vil jeg foreslå, at du importere brevene i én tabel, hvor du har en ekstra kolonne, som er unik for hver mail og én for hver linie.
F.eks. således:
Mail Linienr Tekst
----------------------------------
Brev1 1 Dette er linie 1
Brev1 2 Dette er linie 2
Brev1 3 Dette er linie 3
Brev2 1 Dette er linie 1
Brev2 2 Dette er linie 2
Brev2 3 Dette er linie 3
Derved kan du lave en krydstabulering, med følgende SQL:
TRANSFORM Min(Mails.Tekst) AS MinOfTekst
SELECT Mails.Mail
FROM Mails
GROUP BY Mails.Mail
PIVOT Mails.Linienr;
Denne forespørgsel gemmer du f.eks. under navnet \"Crosstab\"
Du laver nu en ny tilføjelses-forespørgsel, hvor du indsætter \"Crosstab\" i den endelige tabel. F.eks. sådan:
INSERT INTO EndeligTabel
SELECT Crosstab.*
FROM Crosstab;
Derved får du en tabel, med hver linie i hver sin kolonne.
Det er lidt besværligt, da man er nødt til at gøre det i flere tempi. Men jeg kan ikke se nogen anden mulighed.
/Thomas
11. april 2001 - 10:21
#2
Og, hvis der er varierende antal linier, så laver du bare to tabeller med følgende kolonner:
BrevTabel:
BrevID, Subject, AfsendeDato, ModtageDato, ...
BrevlinieTabel:
LinieID, BrevID, LinieNr, LinieTekst
Så har hver tekstlinie i \"BrevlinieTabel\" en henvisning til, hvilket Brev \"BrevID\" de kommer fra og hvilken placering \"LinieNr\" de har i dette brev.
Så kan du bagefter hente hvert brev, som en record med følgende SQL sætning til en query:
TRANSFORM First(BrevlinieTabel.LinieTekst) AS FirstOfLinieTekst
SELECT BrevTabel.BrevID, BrevTabel.Subject, BrevTabel.AfsendeDato, BrevTabel.ModtageDato
FROM BrevTabel LEFT JOIN BrevlinieTabel ON BrevTabel.BrevID = BrevlinieTabel.BrevID
GROUP BY BrevTabel.BrevID, BrevTabel.Subject, BrevTabel.AfsendeDato, BrevTabel.ModtageDato
PIVOT BrevlinieTabel.LinieNr;