15. februar 2003 - 09:06Der 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?
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 :-)
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.
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
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).
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.
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?
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.
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.
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;
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;
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
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
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.
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
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
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.
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.
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 ?
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.
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 :-)
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. :-)
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.