Varför inte bara text = ersatt ?
Och istället för
ersatt = ""
ersatt = ersatt & ""
skriv
ersatt = ""&_
"fortsatt text"&_
"fortsatt"
10 svar · 232 visningar · startad av aleborg
Jag har en kod som ser ut så här:
Function VisaPdf(text)
Dim vpSQL, objRegExp, ersatt, matches, Match
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[fil=(.*?)\]"
Set matches = objRegExp.Execute(text)
For Each Match IN Matches
vpSQL = getDbRows( strCon, "Select FilID, Fil_Topic_"& Session("lang") &", Fil_End, Fil_Namn From Filer Where FilID="& objRegExp.Replace(Match.Value,"$1") )
If Not IsNull(vpSQL) Then
ersatt = "<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
ersatt = ersatt &"<tr height=""15""><td height=""15""></td></tr>"
ersatt = ersatt &"<tr height=""1""><td bgcolor=""#A9A9A9"" height=""1""></td></tr>"
ersatt = ersatt &"<tr><td>"
ersatt = ersatt &"<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
ersatt = ersatt &"<tr height=""24""><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td>"
ersatt = ersatt &"<td width=""5"" height=""24""></td><td width=""20"" height=""24""><img src=""../../graphics/misc/iconPdf.gif"" alt="""" height=""13"" width=""14"" border=""0""></td>"
ersatt = ersatt &"<td height=""24""><div class=""download""><a href=""../../transauto/upload/"& vpSQL(0,0) &"_"& vpSQL(3,0) &"_"& Session("lang") &"."& vpSQL(2,0) &""" target=""_blank"">"& vpSQL(1,0) &"</a></div></td>"
ersatt = ersatt &"<td align=""right"" height=""24""><div class=""download"">32 kb</div></td>"
ersatt = ersatt &"<td width=""5"" height=""24""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td></tr>"
ersatt = ersatt &"<tr height=""1""><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>"
ersatt = ersatt &"<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""20"" height=""1""></td>"
ersatt = ersatt &"<td bgcolor=""#A9A9A9"" height=""1""></td><td align=""right"" bgcolor=""#A9A9A9"" height=""1""></td>"
ersatt = ersatt &"<td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>"
ersatt = ersatt &"</tr></table></td></tr><tr height=""15""><td height=""15""></td></tr></table>"
Else
ersatt = ""
End If
text = objRegExp.Replace(text,ersatt)
Next
VisaPdf = text
End Function
problemet är att det blir samma data på alla ställen som replacas
Vad gör jag fel?
Varför inte bara text = ersatt ?
Och istället för
ersatt = ""
ersatt = ersatt & ""
skriv
ersatt = ""&_
"fortsatt text"&_
"fortsatt"
Nickemannen skrev:
Varför inte bara text = ersatt ?
Då syns inte övrig text, regexp:en plockar ut [fil=34] och [fil=2] i en text, t ex:
"här har vi en fil [fil=34] och en till [fil=2]"
plockar fram med regexp 34 och 2 och hämtar info om filerna i en databas och ersätter varje [fil=X] med "ersatt"
Men du, du har ingen räknare i Din for each så att den kan gå till nästa post i vpSQL(0,0), skall det inte vara vpSQL(i,0) och att i ökas med ett i varje steg ?
Kanske har missuppfattat här också.
Den hämtar ju data i varje "for" så det behövs inte
Då blir det dubbelt av övrig text!
Någon som vet hur man löser detta?
Någon måste gjort en funktion med regexp som hämtar data ur en databas?!
Om tanken alltså är att du ska få ut ett helt "tableblock" för varje matchning så måste väl de sista raderna i loopen se ut så här:
VisaPdf = VisaPdf & objRegExp.Replace(text,ersatt)
Next
End Function
Annars får du väl 'text' överskrivet för varje loop så att det bara blir det sista kvar?
Då blir allt dubbelt!
Löste det!
Function VisaPdf(text)
Dim vpSQL, objRegExp, ersatt, matches, Match, texten
Set objRegExp = New regexp
objRegExp.Global = false
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[fil=(.*?)\]"
Set matches = objRegExp.Execute(text)
texten = text
For Each Match IN matches
vpSQL = getDbRows( strCon, "Select FilID, Fil_Topic_"& Session("lang") &", Fil_End, Fil_Namn, Fil_Size From Filer Where FilID="& objRegExp.Replace(Match.Value,"$1") )
If Not IsNull(vpSQL) Then
ersatt = "<table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & _
" <tr height=""15""><td height=""15""></td></tr>" & _
" <tr height=""1""><td bgcolor=""#A9A9A9"" height=""1""></td></tr>" & _
" <tr><td>" & _
" <table width=""450"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & _
" <tr height=""24""><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td>" & _
" <td width=""5"" height=""24""></td><td width=""20"" height=""24""><img src=""../../graphics/misc/iconPdf.gif"" alt="""" height=""13"" width=""14"" border=""0""></td>" & _
" <td height=""24""><div class=""download""><a href=""../../upload/"& vpSQL(0,0) &"_"& vpSQL(3,0) &"_"& Session("lang") &"."& vpSQL(2,0) &""" target=""_blank"">"& vpSQL(1,0) &"</a></div></td>" & _
" <td align=""right"" height=""24""><div class=""download"">"& ConvFileSize(vpSQL(4,0),1) &"</div></td>" & _
" <td width=""5"" height=""24""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""24""></td></tr>" & _
" <tr height=""1""><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>" & _
" <td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""20"" height=""1""></td>" & _
" <td bgcolor=""#A9A9A9"" height=""1""></td><td align=""right"" bgcolor=""#A9A9A9"" height=""1""></td>" & _
" <td bgcolor=""#A9A9A9"" width=""5"" height=""1""></td><td bgcolor=""#A9A9A9"" width=""1"" height=""1""></td>" & _
" </tr></table></td></tr><tr height=""15""><td height=""15""></td></tr></table>"
Else
ersatt = ""
End If
texten = objRegExp.Replace(texten,ersatt)
Exit For
Next
If Matches.Count>0 Then
texten=VisaPdf(texten)
End If
VisaPdf = texten
End Function