Avatar billede bruun Nybegynder
15. februar 2003 - 09:06 Der er 51 kommentarer og
1 løsning

Data fra en e-mail form til en tabel

KOMENTAR -
Mit felt se ud som dette. Hvordan får jeg delt data ud i flere felter.
LAND - Danmark
REALNAME - XXX@XXXXXX.dk
POST BY  - XXXX
BY - XXXXXXXX
FIRMA - XXXXXXXXX XXXXXXXXXX
ADRESSE - XXXXXXXXXX XXX
FAXNR - XXXXXXXX
SEND FORMULAR - Send formular
TLFNR - XXXXXXXX

Jeg skal kun bruger Navn / adresse/ post by  / by / land/
kan i hjælpe her?
Avatar billede donslund Nybegynder
15. februar 2003 - 10:38 #1
Delt ud i flere felter??? Kan du ikke forklare dig lidt bedre?
Avatar billede janbangm Nybegynder
15. februar 2003 - 15:40 #2
Hvis du har mulighed for at få folk til at taste det ind fra hjemmeside istedet for at en mail bliver det meget lettere for dig. Har du det?
Avatar billede bruun Nybegynder
15. februar 2003 - 16:15 #3
På hjemmesiden er der lavet en form med navn -adresse -postnr osv. Det er ikke en asp server hjem.s ligger på- når der klikkes på send vises det som( Send formular ) i mailen vi modtager. De felter som man indtaster oplysninger om navn adr... bliver sendt og vist på mailen som det jeg har beskrevet ( LAND - Danmark ) det er så kun oplysninger om f.eks Danmark jeg skal bruge.
Jeg har jeg har nu med møg og besvær fået e-mailene impoteret til en tabel i Access. men her skal jeg så  have delt oplysningerne ud i felter så vi kan udskrive etiketter som så skal sendes til kunder, der ønsker at få tilsendt brochure. Det vil sige det er de data som  ( Danmark - 4000- Roskilde - Prøvevej 18 ) jeg skal bruge. Det ville være så dejligt hvis i kunne hjælpe mig med dette. Det er lige før jeg opgiver. For har man et problem og får løst dette er der straks to andre. Hvorfor er der ingenting ved computer der er let :-)
Avatar billede hekla Nybegynder
16. februar 2003 - 01:14 #4
Jeg tror at du griber det forkert an.

Du skal have dine oplysninger opstillet sådan at du har dem stående kolonnevis med navn under navn adresse under adresse osv, og kolonnerne adskilt af tabs. Det kan du gøre ved at exportere dine mails til et tekstbehandlingsprogram og bruge søg og erstat.

Derefter er det ganske enkelt at importere dem til Access.
Avatar billede sjap Praktikant
16. februar 2003 - 12:01 #5
bruun

Jeg har prøvet at lave en funktion, der kan hjælpe dig med at løse problemet. Funktionen kræver dog at data foreligger som vist ovenfor. Det vil sige
- linier, der skal hentes data fra starter med et slags feltnavn (f.eks. LAND)
- dette navn efterfølges af " - "
- disse linier slutter med linieskift (dvs. der ikke er linieskift i data)

Function FindString(strData As String, strFind As String) As String
Dim StartPos, SlutPos As Integer

StartPos = InStr(1, strData, strFind)          'Finder positionen hvor strFind begynder i strData
StartPos = InStr(StartPos, strData, "-") + 2    'Flyttet startpositionen forbi bindestreg og mellemrum
SlutPos = InStr(StartPos, strData, Chr$(13) & Chr$(10)) 'Find det første linieskift efter startpositionen
FindString = Mid(strData, StartPos, SlutPos - StartPos) 'Hent streng mellem start og slutposition

End Function
Avatar billede sjap Praktikant
16. februar 2003 - 12:08 #6
Du kan bruge ovenstående funktion f.eks. i forbindelse med en opdateringsforespørgsel:

INSERT INTO tblTekstData ( Land, [By], Postnr )
SELECT FindString([Tekst],"LAND") AS Land, FindString([Tekst],"BY") AS [By], FindString([Tekst],"POST") AS Postnr
FROM tblTekst;

BEMÆRK: Min funktion kan ikke skelne mellem ordet BY i linien POST BY og i linien BY. Måske skulle du kalde førstnævnte for POSTNR (det er vel det, det er).
Avatar billede bruun Nybegynder
16. februar 2003 - 16:59 #7
hekla. Hvis jeg havde dataerne til at stå i kolonnevis, havde jeg ingen problemer. Men jeg bestemmer ikke hvordan daterne kommer/ligger fra en e-mail. Og der er tale om 100 e-mail om ugen, som jeg så importere til Access på en gang. I Access har jeg så et felt (beskrivelse) hvor data/poster ser ud som det jeg har beskrevet.
Avatar billede bruun Nybegynder
16. februar 2003 - 17:03 #8
Superjap:  Jeg arbejder lige lidt med dit forslag. Jeg går udfra at jeg skal lave det i moduler er det rigtig.
Avatar billede sjap Praktikant
16. februar 2003 - 17:07 #9
bruun

Jeps. Du kopierer bare funktionen FindString fra det ovenstående og ind i et modul. Så skulle den være klar til brug (og evt. modifikation).
Avatar billede bruun Nybegynder
16. februar 2003 - 17:20 #10
nej det skulle jeg så ikke. Opdateringsforespørgelse skriver du ....
Jeg har lavet det med Post by og by om.
Avatar billede bruun Nybegynder
16. februar 2003 - 17:20 #11
ok jeg prøver igen
Avatar billede bruun Nybegynder
16. februar 2003 - 17:29 #12
Nu har jeg kopieret og indsat i modul1. Hvad skal jeg så. (Nu må du ikke blive sur. :-)) jeg er helt blank når vi kommer til moduler.
Avatar billede sjap Praktikant
16. februar 2003 - 17:35 #13
Der er helt ok!

Når du har indsat det i modulet, gemmer du modulet. Du kan roligt lukke modulet for det er du færdig med (i hvert tilfælde indtil videre).

Jeg kan godt lave forespørgslen for dig, så den er lige til at gå til, men så skal jeg vide følgende:

1) Hvad hedder tabellen med teksten fra emailen?
2) Hvad hedder tabellen som du vil gemme dine data i?
3) Hvad hedder felterne i tabellen (fra 2) som data skal gemmes i?
Avatar billede bruun Nybegynder
16. februar 2003 - 17:45 #14
Når jeg har impoteret teksten fra e-mail hedder tabellen bestilling.
men fra e-mailen er der en masse andre feltnavne har det noget at sige?
eks.
ID
Vigtighed
ikon
priortet
Emne
Fra
osv. ned
men det er feltnav Indhold som har de data jeg skal bruge.
Det er faktisk det jeg har nu.
Avatar billede bruun Nybegynder
16. februar 2003 - 17:47 #15
en tabel og en masse forespørgsler
Avatar billede sjap Praktikant
16. februar 2003 - 17:57 #16
bruun

Det vigtige er at tabellen hedder "Bestilling" og feltet med data hedder "Indhold". Så har vi den første del klar.

Men jeg mangler stadig svar på spørgsmål 2 og 3. Jeg går ud fra, at når data uddrages af "Bestilling", så skal de gemmes i en anden tabel, så de kan bruge i databasen. Derfor skal jeg også bruge et tabelnavn og feltnavne i denne tabel.
Avatar billede bruun Nybegynder
16. februar 2003 - 18:08 #17
Min tabel nr 2 Alt
feltnavne:
ID- primanøgle
Navn
Adresse
postnr
By
Land
tlf.
Fax.
e-mail.
sådan havde jeg tænkt mig det skulle være
Avatar billede bruun Nybegynder
16. februar 2003 - 18:09 #18
tabel navn Alt
Avatar billede sjap Praktikant
16. februar 2003 - 18:45 #19
bruun

Først og fremmest skal du lige erstatte funktionen med nedenstående funktion (den gamle tog ikke højde for at strengen har en begrænset længde):

Function FindString(strData As String, strFind As String) As String
Dim StartPos, SlutPos As Integer

StartPos = InStr(1, strData, strFind)          'Finder positionen hvor strFind begynder i strData
StartPos = InStr(StartPos, strData, "-") + 2    'Flyttet startpositionen forbi bindestreg og mellemrum
SlutPos = InStr(StartPos, strData, Chr$(13) & Chr$(10)) 'Find det første linieskift efter startpositionen
If SlutPos = 0 Then SlutPos = Len(strData)
FindString = Mid(strData, StartPos, SlutPos - StartPos) 'Hent streng mellem start og slutposition

End Function
Avatar billede sjap Praktikant
16. februar 2003 - 18:47 #20
Når funktionen er indlæst skal du lave en forespørgsel ud fra nedenstående SQL-sætning. Du gør det ved at oprette en ny forespørgsel - uden at vælge tabeller. Så går du op i menuen Vis og vælger SQL-visning. Du kopierer nu nedenstående ind i dette vindue

INSERT INTO Alt ( Navn, Adresse, Postnummer, [By], Land, Telefon, Telefax, Email )
SELECT FindString([Tekst],"FIRMA") AS Navn, FindString([Tekst],"ADRESSE") AS Adresse, FindString([Tekst],"POSTNR.") AS Postnummer, FindString([Tekst],"BY") AS [By], FindString([Tekst],"LAND") AS Land, FindString([Tekst],"TLFNR") AS Telefon, FindString([Tekst],"FAXNR") AS Telefax, FindString([Tekst],"REALNAME") AS Email
FROM Bestilling;
Avatar billede sjap Praktikant
16. februar 2003 - 18:51 #21
Hov du må du undskylde - SQL-sætningen skal se således ud:

INSERT INTO Alt ( Navn, Adresse, Postnummer, [By], Land, Telefon, Telefax, Email )
SELECT FindString([Indhold],"FIRMA") AS Navn, FindString([Indhold],"ADRESSE") AS Adresse, FindString([Indhold],"POSTNR.") AS Postnummer, FindString([Indhold],"BY") AS [By], FindString([Indhold],"LAND") AS Land, FindString([Indhold],"TLFNR") AS Telefon, FindString([Indhold],"FAXNR") AS Telefax, FindString([Indhold],"REALNAME") AS Email
FROM Bestilling;
Avatar billede sjap Praktikant
16. februar 2003 - 18:54 #22
SQL-sætningen forudsætter

Felter i tabel "Bestilling":
  Indhold

Felter i tabel "Alt":
  Navn
  Adresse
  Postnummer
  By
  Land
  Telefon
  Telefax
  Email

Hvis felter (eller tabeller) hedder noget andet skal det rettes i SQL-sætningen.
Avatar billede bruun Nybegynder
16. februar 2003 - 18:56 #23
nu har jeg gjort som du skriver.
der kommer denne meddelse:
Invalid  procedure  coll or argument. Der bliver jeg "smit over i module1 og følgen linje vises med gul:
FindString = Mid(strData, StartPos, SlutPos - StartPos) 'Hent streng mellem start og slutposition
Avatar billede sjap Praktikant
16. februar 2003 - 18:57 #24
I SQL-sætningen foretages følgende oversættelse fra strengen Indhold:

Indhold      Feltnavn i "Alt"
"FIRMA"    = Navn
"ADRESSE"  = Adresse
"POSTNR."  = Postnummer
"BY"      = By
"LAND"    = Land
"TLFNR"    = Telefon
"FAXNR"    = Telefax,
"REALNAME" = Email
Avatar billede bruun Nybegynder
16. februar 2003 - 19:00 #25
i mellem navn og adresse skal der også være Efternavn
Avatar billede bruun Nybegynder
16. februar 2003 - 19:04 #26
Jeg retter lige min tabel Alt
Avatar billede bruun Nybegynder
16. februar 2003 - 19:29 #27
Når jeg køre forespørgsel kommer der denne meddelse: Du er ved at tilføje 3 rækker. Det passer godt nok ( for jeg har 3 poster ) Det svare jeg ja til.
Så kommer der denne meddelse : Microsoft Access angav 0 felt(er) til Null pga en typekonverterings fejl og 3 poster er ikke føjet til tabellen pga nøgler fejl og 0 poster pga af låsefejl og 0 poster pga fejl i valideringsregler vil du køre handlingsforspørgselen afligevel. Det svare jeg så ja til
Avatar billede sjap Praktikant
16. februar 2003 - 19:32 #28
Så vidt jeg kan se, så er det problemer, der opstår fordi id-feltet ikke opdateres i forbindelse med forespørgslen. Måske skal du lave ID datatypen om til Autonummerering.
Avatar billede bruun Nybegynder
16. februar 2003 - 19:59 #29
Nu sket der noget. Jeg har sendt fra hjemsiden 5 nye poster impoteret fra e-mail til Access. kørt fors. Den har skam hentet 2 af de fem poster. jeg lavede ID datatypen om til Autonummerering som du forslog. så der sket da lidt
Avatar billede bruun Nybegynder
16. februar 2003 - 20:06 #30
Hvis jeg får det her til at køre har eksperten en ny pro - abonnement kun for at støtte eksperten.
Avatar billede sjap Praktikant
16. februar 2003 - 20:35 #31
Hvad siger den om de andre poster - hvad er fejlen?
Avatar billede bruun Nybegynder
16. februar 2003 - 21:04 #32
den siger først. du er  ved at tilføje 5 rækker´. Jeg svare JA.
Herefter kommer den med den samme meddelese. : Microsoft Access angav 0 felt(er) til Null pga en typekonverterings fejl og 0 poster er ikke føjet til tabellen pga nøgler fejl og 0 poster pga af låsefejl

men her kommer den så med denne meddelse:
og 3 poster pga fejl i valideringsregler.
Det må jo så være de 3 poster jeg mangler
Avatar billede sjap Praktikant
16. februar 2003 - 21:12 #33
Det må skyldes at du under designet af tabellen "Alt" har angivet nogen valideringsregler, som det der kommer ud af funktionen ikke kan overholde. Så måske skal du lige løbe dine valideringsregler igennem.

Eventuelt kan du sammenligne tekstrengene fra de mails, der kom ind, med de mails, der ikke kom ind.
Avatar billede bruun Nybegynder
16. februar 2003 - 21:23 #34
Jeg har prøvet at sammenligne de mails som kommer ind. Jeg syntes ikke der er noget som er anderledes.
Jeg prøver lige at slette de to først mail fra indbakken for at se hvad der så sker.
Avatar billede bruun Nybegynder
16. februar 2003 - 21:35 #35
Jeg tror at fejlen ligger i et tomt felt. Hvis ikke der bliver indtastet i et felt. f.eks. e-mail feltet eller tlf. feltet. så kommer posterne ikke ind. Er det ikke rigtig ?
Avatar billede bruun Nybegynder
16. februar 2003 - 21:41 #36
Ja det er det som er galt. Nu har jeg tastet noget ind i alle felter og alle poster kommer frem.
Avatar billede sjap Praktikant
16. februar 2003 - 21:41 #37
Det er jeg ikke lige klar over. Prøv at skrive noget i et af felterne og se om det virker.
Avatar billede sjap Praktikant
16. februar 2003 - 21:44 #38
Det kan klares ved at ændre funktionen til følgende:

Function FindString(strData As String, strFind As String) As String
Dim StartPos, SlutPos As Integer

On Error GoTo ErrorHandler
StartPos = InStr(1, strData, strFind)          'Finder positionen hvor strFind begynder i strData
StartPos = InStr(StartPos, strData, "-") + 2    'Flyttet startpositionen forbi bindestreg og mellemrum
SlutPos = InStr(StartPos, strData, Chr$(13) & Chr$(10)) 'Find det første linieskift efter startpositionen
If SlutPos = 0 Then SlutPos = Len(strData)
FindString = Mid(strData, StartPos, SlutPos - StartPos) 'Hent streng mellem start og slutposition

Exit Function

ErrorHandler:
    FindString = ""
End Function
Avatar billede sjap Praktikant
16. februar 2003 - 21:47 #39
Det funktionen gør at den indsætter en tom streng, hvis der af en eller anden grund sker en fejl ved læsning af email-teksten.
Avatar billede bruun Nybegynder
16. februar 2003 - 22:09 #40
Nej det virkede ikke øv øv
Avatar billede sjap Praktikant
16. februar 2003 - 22:12 #41
Så er problemet sandsynligvis et eller andet med validering af e-mail adressen. Dvs. du skal åbne din "Alt" tabel i design mode og se om der står en valideringsregel i forbindelse med feltet email.
Avatar billede bruun Nybegynder
16. februar 2003 - 22:26 #42
Det gør der ikke. Men det er ikke bare tomme e-mail der er problemer med. Hvis jeg f.eks indtaster i e-mailen og lader telefax stå tom er det det samme.
Hvis du er ved at være trat af dette så sig bare til :-)
Avatar billede sjap Praktikant
16. februar 2003 - 22:40 #43
Kan du ikke lige prøve at kopiere en streng, der IKKE virker herind - for jeg kan umiddelbart godt få det til at virke.
Avatar billede bruun Nybegynder
16. februar 2003 - 22:57 #44
Virker ikke
KOMMENTAR -
REALNAME - ingen
POSTNR - 4000
LAND - Danmark
BY - Roskilde
NAVN - Helge Nielsen
ADRESSE - Nielsgade
FAXNR -
SEND FORMULAR - Send formular
TLFNR - 65449988

virker
KOMMENTAR -
REALNAME - ingen
POSTNR - 4000
LAND - Danmark
BY - Roskilde
NAVN - Hanne Nielsen
ADRESSE - Nielsgade
FAXNR - 11
SEND FORMULAR - Send formular
TLFNR - 65449988
Avatar billede sjap Praktikant
16. februar 2003 - 23:09 #45
Nu har jeg den: Det skyldes at der i tabellen for felterne er angivet

TilladNulLængde = Nej

I funktionen sættes ved fejl værdien "" som er en streng af nullængde - og det går jo ikke. Løsningen er derfor

Sæt TilladNulLængde = Ja
ELLER
Skriv f.eks. 
FindString = "-"
eller lignende i stedet for FindString = ""
Avatar billede bruun Nybegynder
16. februar 2003 - 23:15 #46
ok Jeg prøver.
Avatar billede bruun Nybegynder
16. februar 2003 - 23:24 #47
Yes det virker. godt nu skal du jo så have mange tak
Avatar billede bruun Nybegynder
16. februar 2003 - 23:27 #48
hvordan giver jeg så point klikker jeg på Afvis til hekla og Accepter til superjap ? eller er det først når du marker svar?
Avatar billede sjap Praktikant
16. februar 2003 - 23:32 #49
Det kan jeg ikke huske. Jeg mener det er noget med at du skal afvise hekla. Når du så har gjort det, er der vist ikke andre muligheder end at acceptere mig. :-)
Avatar billede sjap Praktikant
16. februar 2003 - 23:33 #50
Skulle det kikse - og du kommer til at afvise begge to - så kan jeg jo altid lægge et nyt svar.
Avatar billede bruun Nybegynder
16. februar 2003 - 23:34 #51
Det har jeg gjort nu så jeg håber at det var rigtig. Nu kan jeg sove godt i nat. Igen mange tak hilsen Bruun :-)
Avatar billede sjap Praktikant
16. februar 2003 - 23:34 #52
Selv tak og god nat  :0)
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