Avatar billede hnto Nybegynder
13. juni 2003 - 09:55 Der er 16 kommentarer og
1 løsning

adskille en text.. hurtigt svar ønskes

Jeg har et text felt [felt1], der indeholder en text. Inde i teksten er der angivet nogle @@ som skal simulere et linieskift.:
eks:
bilen er rød@@og har 4 døre@@samt en stor bagklap

det jeg øsnker er at kunne finde alt text der står foran @@, mellem @@-@@, samt efter @@.

gerne VBA i enten access 2K eller 97
Avatar billede minijensen1 Nybegynder
13. juni 2003 - 09:58 #1
sText = "bilen er rød@@og har 4 døre@@samt en stor bagklap"
aText = Split(sText, "@@")
For I = 0 To UBound(aText)
  MsgBox "Del " & (I + 1) & ": " & aText(I)
Next

Skulle meget gerne dele det op i et array, gennemgå array'et og fortælle hvad der står i hver del

- Michael
13. juni 2003 - 10:33 #2
Rimelig smart, Michael :o)
Kendte ikke UBound-funktionen og havde kun kun læst om Split-funktionen og havde egentlig glemt den.
Avatar billede hnto Nybegynder
13. juni 2003 - 12:32 #3
der er flere point hvis jeg får en komplet løsning på opsplitning af feltet [felt1]til 3 nye felter i en tabel [tabel1].

tabel1 felt1 er den komplette tekst. felt2 er første segment osv.

hvor mange 'gryn' taler vi da om ?
13. juni 2003 - 12:50 #4
Hvis det kun er den aktuelle post på en formular, vi snakker om, så er det ret simpelt.
Placer de 4 felter på formularen og lav en knap med denne kode på:

Dim aText
aText = Split(Me![Felt1], "@@")
Me!Felt2 = aText(0)
Me!Felt3 = aText(1)
Me!Felt4 = aText(2)
Avatar billede hnto Nybegynder
13. juni 2003 - 14:21 #5
nej det er ikke en post, men en tabel der indeholder 1000 tekster i felt 1.
13. juni 2003 - 14:31 #6
Okay, så er det jo lidt mere besværligt. Men hvis du ville give lidt flere point, så har du den her:

Public Function SplitFelt()
    Dim aText
    Dim rs As ADODB.Recordset
    Dim cn As ADODB.Connection
    Set rs = New ADODB.Recordset
    Set cn = CurrentProject.Connection
    rs.Open "Tabel1", cn, adOpenKeyset, adLockOptimistic
    do
      aText = Split(rs!Felt1, "@@")
      rs!Felt2 = aText(0)
      rs!Felt3 = aText(1)
      rs!Felt4 = aText(2)
      rs.update
      rs.movenext
    loop until rs.eof
    rs.close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Function

Placer koden i et modul og tryk F5 mens du har markøren placeret i funktionen.
Avatar billede hnto Nybegynder
13. juni 2003 - 14:46 #7
den melder fejl på Dim rs As ADODB.Recordset
user-defined type not defined
Avatar billede hnto Nybegynder
13. juni 2003 - 14:55 #8
den melder mange fejl generelt hvis jeg remarker nogle statements, så er det udviklet til 2K eller 97 ? eller kører du office 11 på dette ?

manglende referencer :
ADODB.Recordset
ADODB.Connection
adOpenKeyset
13. juni 2003 - 14:55 #9
Du mangler en reference til Microsoft ActiveX Data 2.x Object Library fordi det er en Access 97-database (sommåske er konvereteret)

Prøv denne istedet eller tilføj referencen:
Public Function SplitFelt()
    Dim aText
    Dim rs As DAO.Recordset
    Dim db as database
    Set db = Currentdb
    set rs = db.Openrecordset("Tabel1", dbopendynaset)
    do
      aText = Split(rs!Felt1, "@@")
      rs.edit
      rs!Felt2 = aText(0)
      rs!Felt3 = aText(1)
      rs!Felt4 = aText(2)
      rs.update
      rs.movenext
    loop until rs.eof
    rs.close
    Set rs = Nothing
End Function
Avatar billede hnto Nybegynder
13. juni 2003 - 15:17 #10
så kommer der en runtime error 3048
cant open any more databases
13. juni 2003 - 15:21 #11
Genstart Access!?

Hvor stiller den sig med denne fejl?
Avatar billede hnto Nybegynder
13. juni 2003 - 15:24 #12
efter 3 sek på linien : Set db = CurrentDb

Hvis jeg bruger f8 til at afvikle med kører den fint linerne :
    Dim aText
    Dim rs As DAO.Recordset
    Dim db As Database
    Set db = CurrentDb
    Set rs = db.OpenRecordset("split_text", dbOpenDynaset)
    Do
      aText = Split(rs!varetext, "@@")

som den looper imellem. da der er mange trykker jeg f5 for at afvikle og så kommer den efter ca 3 sekunder.
Avatar billede hnto Nybegynder
13. juni 2003 - 15:37 #13
NB.
tjekker nye svar senere i aften....
Avatar billede hnto Nybegynder
16. juni 2003 - 12:26 #14
Thomas>>
er der nyt på denne front..??
16. juni 2003 - 13:07 #15
Næ, jeg er ved at være lidt blank. Det virker fint på min maskine.
Kører du '97 eller '2000?
Avatar billede hnto Nybegynder
17. juni 2003 - 08:58 #16
jeg har begge dele....men jeg kører den på 2K, idt jeg ikke kan se at access 97 understøtter SPLIT funktionen.

Kunne du sende den test db der virker fint hos dig, da jeg ved kørsel af denne på min egen maskine da normalt får at vide hvilke objekter jeg mangler at installere.

XMLerror@solar.dk

Point siger du selv lige hvor meget der skal oveni.
Avatar billede hnto Nybegynder
10. juli 2003 - 13:52 #17
Er ved at rydde op i mine "gamle" spørgsmål og TJ ekseplet virker nu af uforklarlige årsager.

Takker

Niels
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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