Toevoegen in String

Status
Niet open voor verdere reacties.

Klikmaar

Gebruiker
Lid geworden
22 okt 2008
Berichten
58
Ik wil in meerdere Strings tekst toevoegen op diverse plaatsen waar || staat zoals bijvoorbeeld:

Dit is een test||De uitslag is||Hier weer iets toevoegen||Dit is het einde

Op de plaatsen || moet vanuit een database uitslagen worden toegevoegd waarna de strings klaar gezet worden om opgehaald te worden.

Hoe dit ik dit om een snelle en efficiente methode in Visual Basic 6?
 
Laatst bewerkt:
Ik begrijp het nog niet helemaal.

Je wilt in de string:

"Dit is een test||De uitslag is||Hier weer iets toevoegen||Dit is het einde"

de tekens || vervangen door iets uit de database?

Als dit zo is, zou ik het iets anders doen:

"Dit is een test[data1]De uitslag is[data2]Hier weer iets toevoegen[data3]Dit is het einde"

vervolgens met de Replace functie [data1] vervangen door waarde uit de database, [data2] vervangen met replace en [data3] vervangen met replace.
 
Ik wil tussen de || de uitslag bijvoorbeeld "130 mmol/l" toevoegen en bij de volgende || bijvoorbeeld #01-07-2009# toevoegen, etc
 
OK.

Dan is mijn voorbeeld denk ik wel werkbaar:

Code:
dim strText

strText = "Dit is een test|[data1]|De uitslag is|[data2]|Hier weer iets toevoegen|[data3]|Dit is het einde"

strText = replace(strText, "[data1]", databasewaarde1)
strText = replace(strText, "[data2]", databasewaarde2)
strText = replace(strText, "[data3]", databasewaarde3)
 
Dit is nog niet precies wat er gevraagd wordt.
Met replace vervang ik iets en ik wil er iets tussen voegen.
Er moet gezocht worden naar || en dan moet ertussen de uitslag komen die opgehaald wordt uit de database, daarna op zoek gaan naar de volgende || en dan weer een uitslag ertussen plaatsen, etc.

Het gaat om meerdere regels.
 
ja, maar je voegt er dan toch iets tussen?

je vervangt in de string strText de substring [data1] door de waarde uit de database.

Dus [data1] vervalt en de database waarde komt in de string te staan.

Meerdere regels in dezelfde string bedoel je?

Dan loop je door je records en tel je de strText bij een strResult op. Je strResult is dan de complete string.

Laat anders eens wat code zien wat je al hebt.
 
Laatst bewerkt:
Onderstaande code heb ik gemaakt:

Public Function MaakString(deString As String)
Dim Zoek As Integer
Dim inCounter As Integer
Dim lengte As Integer
Dim Toevoegen As String
Dim ToevoegString As String
Dim Voorstuk As Integer

line = "|Uitslag|" 'deze nog veranderen Opzoeken in DB
inCounter = Len(deString)
Zoek = InStrRev(deString, "||", inCounter)
Voorstuk = InStr(1, deString, "||")
ToevoegString = Left(deString, Voorstuk - 1)

While inCounter > 0
Toevoegen = Replace(deString, "||", line, Zoek)
inCounter = Zoek - 1
Zoek = InStrRev(deString, "||", inCounter)
If Zoek = 0 Then inCounter = Zoek
Wend
deStringKlaar = ToevoegString & Toevoegen
End Function

Volgens mij kan het korter.
 
en je roept de functie aan met:

Code:
 MaakString("Dit is een test||De uitslag is||Hier weer iets toevoegen||Dit is het einde")

Dit is best wel vaag eigenlijk.

Wil je nu || binnen de string vervangen door de waarden van een tabel uit verschillende kolommen in dezelfde rij?

tabel uitslagen:
veld 1: Uitslag_ID
veld 2: Uitslag_Datum
veld 3: Uitslag_Waarde

Dit is een test|[veld 1]|De uitslag is|[veld 2]|Hier weer iets toevoegen|[veld 3]|Dit is het einde

Of heb je maar 1 kolom en moet || vervangen worden door de waarde in de rij en de || erop door de waarde in de volgende rij?

Dit is een test|[veld 3]|De uitslag is|[veld 3 (van de volgende rij)]|Hier weer iets toevoegen|[veld 3 (van de volgende rij)]|Dit is het einde
 
Optie 1 is de juiste.
Ik heb diverse kolommen waaruit geput moet worden.
De volgende stap wordt zelfs uit welke kolom ik informatie moet halen.
Dat wordt tellen de hoeveelste"|" en dan de kolom erbij zoeken en de inhoud plaatsen in de string.
 
En de string
"Dit is een test||De uitslag is||Hier weer iets toevoegen||Dit is het einde"

heeft altijd een vaste opmaak?
 
Dan zou je, als je je recordset gaat doorlopen met een lus:

Code:
dim strMain As String
dim strTemplate As String
dim strTotal As String
dim rs As ADODB.Recordset

'hier wel even je recordset definieren middels een connectie en wat sql
'bijvoorbeeld: set rs = DBCon.Execute("select [veld 1], [veld 2], [veld 3] from uitslagen")

if rs.eof = true and rs.bof = true then
   'geen records gevonden, er is niets te doen
   rs.close
   set rs = nothing
   exit sub
end if

strTemplate = "nu komt veld 1 |[veld 1]|, nu komt veld 2 |[veld 2]|, nu komt veld 3 |[veld 3]|"
do while rs.eof = false
  strMain = Replace(strTemplate, "[veld 1]", rs("veld 1"))
  strMain = Replace(strMain, "[veld 2]", rs("veld 2"))
  strMain = Replace(strMain, "[veld 3]", rs("veld 3"))
  'alle velden tussen haken [ ] zijn nu vervangen door de database waarden
  strTotal = strTotal & strMain & vbCrLf
  rs.movenext
loop

rs.close
set rs = nothing
msgbox strTotal

dit kunnen doen. Hoef je niet met ingewikkelde functies te gaan werken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan