Avatar billede emanuel Novice
18. januar 2006 - 16:58 Der er 12 kommentarer og
1 løsning

Udtræk data af tekst

I Crystal report har jeg behov for at trække en del af teksten ud af et rapport felt.

f.eks; fra {ORDER_LINE.ITEM_DESC}får jeg: kyllingelår;123
jeg ønsker nu at udtrække henholds vis kyllingelår til brug for en operation og 123 til en anden operation - dette kommer til at ske i 2 forskellige jobs.

Semikollonet adskiller altid de 2 forskellige informationer, men alt efter artikelnavnet længde kommer det jo ikke på samme plads

Kan InStr bruges, og hvordan

Emanuel
Avatar billede nielle Nybegynder
18. januar 2006 - 17:21 #1
Hvad med vare at bruge Split?

Split(Tekst, ";")
Avatar billede sjh Nybegynder
18. januar 2006 - 17:22 #2
Private Sub Form_Load()
Dim i As Integer
Dim strSplit As String
Dim arrSplit() As String

  strSplit = "kyllingelår;123"
  arrSplit = Split(strSplit, ";") ' opdeler med ";"
 
  If UBound(arrSplit) > 0 Then
    MsgBox arrSplit(0) ' kyllingelår
    MsgBox arrSplit(1) ' 123
  End If

' Ellers kan du køre den i et loop..
'
'  For i = 0 To UBound(arrSplit)
'    MsgBox "Loop: " & arrSplit(i)
'  Next
End Sub
Avatar billede sjh Nybegynder
18. januar 2006 - 17:23 #3
ha ha nielle kom først :D
Avatar billede emanuel Novice
18. januar 2006 - 17:26 #4
Den gik ikke - jeg får svar: the result of a formula cannot be an array"
emanuel
Avatar billede sjh Nybegynder
18. januar 2006 - 17:28 #5
også når du køre mit eksempel??
Avatar billede sjh Nybegynder
18. januar 2006 - 17:30 #6
ellers prøv at udskifte :

Dim arrSplit() As String

med:

Dim arrSplit As Variant
Avatar billede emanuel Novice
19. januar 2006 - 08:43 #7
sjh, når jeg kører dit eksempel får jeg først problemer, for crystal report accepterer vist ikke den struktur (eller også er det min begrænsede viden)

Jeg fik fat på en der kendte crystal report, og fik disse løsninger, som fungere - som måske husket var teksten f.eks. "kyllingelår;12345"

Denne første linie udtrækker kyllingelår
Left ({ORDER_LINE.ITEM_DESC}, InStr ({ORDER_LINE.ITEM_DESC},";" ) - 1)

og disse 2 udtrækker 12345:
If (InStr({ORDER_LINE.ITEM_DESC},";") > 0) Then
    Mid ({ORDER_LINE.ITEM_DESC}, InStr({ORDER_LINE.ITEM_DESC},";") + 1)

Det ser jo enkelt og smukt ud - og det virker.
Men tak for indput
Avatar billede sjh Nybegynder
19. januar 2006 - 11:46 #8
Øh er du sikker på at det er Visual Basic du laver det her i?

Man kan da ikke bruge {} i vb med mindre at de står sådan "{...}"?
Avatar billede emanuel Novice
19. januar 2006 - 13:13 #9
Nej, jeg er absolut ikke sikker, jeg arbejder bare med dette Crystal Report med quiries ind i databasen, bruger de defineret formler der er, og nogle gange lykkes det at strikke lidt yderliger på - men efter hvilke reglersæt tja jeg ved det ikke, men det var min formodning, at det var VB ud fra hvad en kollega sagde på et tidspunkt, så jeg beklager hvis jeg har fået forvirret debatten
Avatar billede sjh Nybegynder
19. januar 2006 - 14:03 #10
Ja så var det der det gik galt.. Crystal Report ved nok ikke hvad Split() er..

Jeg har ikke hørt om "Crystal Report" og var sikker på at det var en ActiveX Control..

så tag du bare dine point igen.. da du har fået løst dit problem..
Avatar billede emanuel Novice
04. maj 2006 - 17:02 #11
Jamen lad os lukke, og se om det lykkes at få point hjem igen
Avatar billede nielle Nybegynder
05. maj 2006 - 19:05 #12
Du mangler at acceptere dit eget svar ... ellers får du ikke dine point igen. :^)
Avatar billede emanuel Novice
29. oktober 2008 - 00:20 #13
opryding
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
Kurser inden for grundlæggende programmering

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