20. februar 2006 - 10:55Der er
10 kommentarer og 1 løsning
Tælle karakterer i et felt
Jeg har et felt i access hvor der er lavet bevidste linebraks. eks:
[felt1] Bilen er rød og kan kære meget stærkt men dette er også farligt bla bla...etc....
Kan man på nogen måde via en query få vist hvor mange karakterer der er i linie 1, 2, 3 osv i [felt1] ?
Feks: [Felt1] Bilen er rød
[Felt2] sum karakterer i linie 1
[felt3] sum karakterer i linie 2
[felt3] sum karakterer i linie 3
osv...
Det vides ikke hvor mange linieskift der er i de forskellige records i [felt1] Der kan altså med andre ord være records der indeholder 3 linier i feltet, og andre records der indeholder 15 linier.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Det kan godt lade sig gøre. Noget af vejen i hvert fald. Men det er jo en utrolig bøvlet opbygning. Var det ikke noget at ændre databasens struktur hvis den form for optælling er noget du skal lave meget?
Det er ikke "muligt" at omstrukturere databasen. Den danner grundlag for et printet katalog og er kun denne ene gang det skal anvendes. Problemet er tillige kun opstået fordi der er folk der har indtastet data uden at følge de forms der eksakt var beregnet herfor. Altså forms der indeholdt en eksakt afgrænsning af feltets bredde (visuelt).
Derfor e jeg nødsaget til at vide hvilke felter der ikke følger "spillereglerne" og få disse rettet manuelt med rigtig orddeling.. ;-)
Jeg skal lige teste det du har foreslået, og vil til orientering nok først kunne gøre dette om et par dage... håber det er ok
Jeg har ikke travlt, men du kan se om du kan bruge det til noget.
Hvis det var kunne man med noget kode gennemløbe dine tabel > indsamle information om opbygningen > skrive det til en ny tabel som havde felterne: felt1, felt2, felt3 osv. Det ville være nemmere tror jeg.
det er muligt, men den resulterende Query der laves i databasen er knyttet op mod Indesign CS, som ud fra dataene er kodet til automatisk at generere siderne i templaten. Derfor vil en ændring i databasen tillige betyde kodeændring i den Indesign template der anvendes, og det vil jeg helst ikke ud i.
Jeg har vurderet at det at rette data i databasen fysisk er den "hurtigste" udvej.
Du kan jo kode dig ud af det. Opsaml længderne dynamisk og dryp dem så ned i dine felter. I grove træk noget i stil med:
Dim Rst as Recordset
Sub Test ' Gennemløb dine poster en ad gangen ' For hver post ' .Edit ' FindLængder(.Fields("Felt1")) ' .Update ' Next End Sub
Sub FindLængder(t as string) Dim Felt(25) As String Dim p As Integer Dim s As String Dim Idx As Integer
s = t Idx = 0 p = InStr(1, s, vbCrLf) Do Until p = 0 Idx = Idx + 1 Felt(Idx) = Left(s, p - 1) s = Mid(s, p + 2) p = InStr(1, s, vbCrLf) Loop Idx = Idx + 1 Felt(Idx) = s
For p = 1 To Idx Debug.Print Felt(p) Rst.Fields("Felt" & p)= Felt(p) Next p End Sub
.. og det var så lige den forkerte, der røg afsted. Her er den korrekte:
Sub FindLængder(t as string) Dim Felt(25) As Integer Dim p As Integer Dim s As String Dim Idx As Integer
s = t Idx = 0 p = InStr(1, s, vbCrLf) Do Until p = 0 Idx = Idx + 1 Felt(Idx) = p - 1 s = Mid(s, p + 2) p = InStr(1, s, vbCrLf) Loop Idx = Idx + 1 Felt(Idx) = Len(s)
For p = 1 To Idx Debug.Print Felt(p) Rst.Fields("Felt" & p)= Felt(p) Next p End Sub
fdata: Jooohh det skal nok passe ;-) (jeg er i disse tilfælde desværre ikke programmør)*G*
Tager din kode højde for at orddeling ikke sker midt i et ord ? Kan din kode tage lige så mange linier som der er i feltet. hvilket er variabelt ?
Det fede kunne naturligvis være hvis man i Access kunne bede den om at lave automatisk ombrydning af tekster. Dette efter et regelsæt der sagde at feltbredden maks må antage feks 85 karakterer, herunder tillige sikrede at ordeling ikke måtte foretages midt i et ord.
Kan dette lade sig gøre vil jeg gerne give 200+ point for dette, jeg tror bare ikke der er nogen der måske vil lave en så kompleks løsning for sølle 200 bananer.. ;-|
You lost me. Hvad er det, du er ude efter. Oprindeligt bad du om en opskrift på at tælle antal tegn i hver linie. Det gør min rutine (op til 25 linieskift, individuelt pr. post). Dette har jo intet med orddeling at gøre. Vi tæller bare tegn.
Nu taler du om automatisk ombrydning af tekster og orddeling. - Hvad er det helt præcist, du vil? - Vil du have samlet linierne til een (altså have fjernet linieskiftene)? - Og hvad er det med de 85 tegn? - Hvor skal vi gøre af de resterende tegn, hvis der er mere end 85? Du må nok forklare lidt nærmere.
sorry jeg ved at man ikke skal udvide opgaver i samme spørgsmål, det æøb bare lige af med mig. Jeg kvitterer dette med point, og opretter nyt til det andet som er en fuldendt 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.