Brug værdi=InStr(1, "oste klokker 1234", "oste") til at returnere hvor i teksten oste findes. Brug derefter værdi2=mid("dinstreng",værdi,12)="oste klokker". Du skal nok lige prøve dig lidt frem. Du kan danne nye sætninger gennem en løkkestruktur. Jeg er forøvrigt ikke sikker på om der findes en function der kan tage "oste klokker" direkte ud af din sætning!
Her er en funktion som returnere et uddrag af en strieng. Brug den sammen med InStr(). Du kan også undersøge om din returværdi er numerisk for at tilsikre at du ikke blande typerne sammen, altså vis det er påkrævet...
Public Function UddragAfStrengFra(psStreng As String, psFra As String) As String Dim Længde As Long, i As Integer, Tegn As String, NytID As String, bOk As Boolean On Error GoTo ErrH
Længde = Len(psStreng)
For i = 1 To Længde Tegn = Mid(psStreng, i, 1) If bOk = True Then GoTo Skriv If Not Tegn = psFra Then GoTo næste bOk = True GoTo næste Skriv: If bOk = True Then NytID = NytID & Tegn næste: Next i
UddragAfStrengFra = Trim(NytID)
Exit Function ErrH: Fejl "Fejl# fsoClass.UddragAfStrengFra - streng; " & psStreng Resume Next End Function
ddns: Du må som det allerførste opstille regler for hvad du vil gøre, fx.
1. Put alle tegn til venstre for første tal ind i en variabel 2. Put alle sammenhængende tal der står efter den første tekst ind i en anden variabel 3. Put alt hvad der står efter disse til ind i en tredie variabel
Dernæst må du fortælle hvordan dine tekststrenge kan forventes at se ud - vil de ALTID starte med tekst osv?. Hvad skal der ske hvis der ikek er nogle tal i strengen? osv...
Dit spørgsmål kan egentligt ikke besvares som det står her, for vi mangler en masse oplysninger :o)
Men du ved jo selv hvad du vil opnå, og du kan opnå ALT hvad du måtte ønske dig mht. til at mainpulere strende med VB's indbyggede strengefunktioner. Se på Len, Left, Mid, InStr, Replace, Right og hvad du ellers kan få brug for - de er allesammen beskrevet meget grundigt på msdn.microsoft.com og i hjælpen til VB
Sub Main() Dim conn As New ADODB.Connection conn.Open "Driver={sql server};server=pc1287;database=test;uid=sa;pwd=" Open "c:\database.fbk" For Input As #1 conn.Execute ("delete from hotfix")
Do While Not EOF(1) Line Input #1, ln
lnu = lnu + 1 If Asc(Left(ln, 1)) > 255 Then Exit Do a = a + 1
If fejl = 0 Then
If Left(ln, 9) = "TableData" Then fejl = 1 If fejl = 0 Then
If a = 1 And Left(ln, 5) = "Table" Then str_type = "Table" If a = 1 And Left(ln, 4) = "Form" Then str_type = "Form" If a = 1 And Left(ln, 6) = "Report" Then str_type = "Report" If a = 1 And Left(ln, 8) = "Dataport" Then str_type = "Dataport" If a = 1 And Left(ln, 8) = "Codeunit" Then str_type = "Codeunit"
If a = 2 Then ln = Replace(ln, " ", "") For i = 1 To Len(ln)
If IsNumeric(Mid(ln, i, 1)) = False And ln <> " " Then Exit For
Next
'MsgBox Left(ln, i - 1) 'MsgBox Right(ln, Len(ln) - i + 1) 'MsgBox Len(ln)
conn.Execute ("insert into hotfix (str_type,str_id,str_version) values('" & str_type & "', " & Left(ln, i - 1) & " ,'" & Right(ln, Len(ln) - i + 1) & "')") 'if MsgBox(" insert into hotfix (str_type,str_id,str_version) values('" & str_type & "', " & Left(ln, i - 1) & " ,'" & Right(ln, Len(ln) - i + 1) & "')", 4, "exit") = 6 Then Exit Do ' (sql) End If
End If
End If If fejl <> 0 And fejl < 4 Then fejl = fejl + 1 Else fejl = 0
Find første tal (med InStr), og smid alt fra venstre til dette tal ind i en variabel1 (med Mid).
Startende fra det første tal findes det første bogstav derefter (med InStr), og alt fra første tal til første bogstav smides i variabel2 (med Mid)
Startende fra det første tal findes det første bogstav derefter (med InStr), og alt til højre for dette (med Len og Mid) smides i variabel3
Voila :o)
Dette vil ændre "Dette er en test, 1234, Hej med dig" til variabel1 = "Dette er en test, " variabel2 = "1234" variabel3 = ", Hej med dig"
/Martin
Synes godt om
Ny brugerNybegynder
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.