23. november 2004 - 13:21Der er
10 kommentarer og 2 løsninger
Læse data fra et notatfelt
Hvordan kan jeg gennemgå indholdet af et notatfelt for at søge efter et kundenummer f.eks. T9010342 og en dato f.eks. 23-11-2004 og et klokkeslet 10:43 - hvor kundenummer, dato og klokkeslet værdierne ikke kendes i forvejen....
Jeg har en lang række mails som mit system importere fra Exchange til en tabel tblEmail. Nu skal alle mails så gennemgås og for hver mail skal der oprettes en post i tabellen tblEmailretur hvor kundenummer, dato og klokkeslet skal indsættes (dette kan jeg godt selv lave). Spg. er bare hvordan jeg finder dataerne fra notatfeltet...
Det bliver stort set umulight idet jeg ogsaa antager at disse kan forekomme vilkaarlige steder i teksten. Du skulle soege igennem hvert nontat felt bogtstav for bogstav og med variable streng-laengder saavidt jeg kan se det og siden du ikke har noget eksisterende data kan du ikke slaa op om det er valideret data der findes. Med mindre emailen er struktureret paa et helt 100% fast maade saa du kan finde kundenummeret fordi det altid staar som tegnene nummer 115-123 er det ikke muligt.
Hvis du kender længden på det, du søger, kan du vel loope over mid(notattekst,i,len) fra 1 og frem? Vel at mærke i VB. Nu ved jeg så ikke hvad du mener med "f.eks. kundenummer OG en dato..." Skal der være både-og? Hvis du kan, vil jeg nok foreslå at redesigne basen, så du har de relevante oplysninger i egne felter.
Eller hvis du ved, at der altid står "Kundenummer" foran, så kan du bruge InStr til at finde positionen for "Kundenummer" og derefter lægge et passende antal pladser til.
Kan du fortælle lidt mere om dine mails! Er der en fast struktur i dem? Jeg går ud fra, at det f.eks. er mails fra kunder, som du vil have struktureret i en ny tabel?
Det er mails fra udførende personale, som indberetter via et system på wap. Der flyver så en mail af sted som serveren henter. Samtidig undersøger en access database på serveren hvert 30. sekund om der er kommet nye beskeder i indbakken, såfremt der er importeres de til access databasen. Problemet er jo, at teksten i mailen (body) importeres til eet felt i databasen (ingen ide om hvordan dette kan gøres anderledes) - dvs. det før omtalte notatfelt. Beskeden er opdelt som følger
Kundenummer (altid T######) - kundens navn (variabel længde) - arbejde udført den "dato" (altid ##-##-####) klokken "kl" (altid ##-##-####).
Problemet er således kundens navn som er variabel...... måske jeg kan søge efter nummer to "-" og så tælle antal tegn herefter - altså "- arbejde udført den" så har jeg jo placering for dato.
Jeg kan ikke ændre i designet for mailen, da den kommer fra en underleverandør :-(
Som charlotterj skriver, og hvis thomasj har ret, så skulle det være til at overkomme. Læs til første "-", her er kundenummer. Læs til anden "-" her er navn, og læs til næste dato/klokkeslet, og vupti, så har du dét også.
> thomasjepsen Ja præcis sådan - hver gang - dog med den undtagelse af kundenavn (i dit tilfælde Ole Olsen) kan være forskellig længde... Jeg skal vel så "læse" til det andet "-" og lægge 20 tegn til (med mellemrum) så står jeg foran dato... og ligesådan med klokkeslet??? Men hvordan gør jeg det???
Jeg ville nok lave det i en VB-funktion, hvor du løber hele tabellen gennem og udskiller de forskellige parametre og smider dem over i en ny tabel. Men det kræver vist en del arbejde (for mig i hvert fald). Måske Thomasjepsen eller Staticdata hurtigere kan ruske en løsning op af lommen?
> charlotterj Det er faktisk måden, som jeg havde tænkt mig at lave den på. Jeg kan sagtens lave gennemløbet og "kopieringen" til den ny tabel... mit problem er bare hvordan jeg finder dato, klokkeslet m.v. i notatfeltet...
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.