Hej, Är inte helt säker på att jag helt har fattat vad du vill göra, men här är ett försök: Tja, nu får varje rubrik värdet 0. InStr returnerar vilken position fs har i alf. Din tanke är helt rätt, men tyvärr blir det fel någonstans. Då har du nog gjort fel! ;) Vad får du ut från recordsetet? Kör jag den koden i VB6 får jag ut 1, 2, 3 eller 4 om jag byter ut RecSet("rubrik") mot t.ex. "hej" To dé? Sorry, jag hade råkat byta ordning på instr och lcase, då fungerar den inte när ordet börjar med stora bokstäver... Såhär ska det vara: Kanoners kanon! Du har markerat den som löst nu, det är så du gör när du fått svar på din fråga.Ge första bokstaven ett värde
Jag har en textsträng från en databas vid namn RecSet("rubrik"). Jag har dessutom 4 stycken bilder, bild_1.jpg, bild_2.jpg, bild_3.jpg och logiskt nog bild_4.jpg (det kommer fler bilder!).
När rubriken skrivs ut ska en av bilderna visas till, vilken bild beror på vilken den första bokstaven i rubriken är. Jag har kommit så här långt:
<code=asp>
alf = "abcdefghijklmnopqrstuvwxyzåäö0123456789"
antalbilder = 4
fs = mid(RecSet("rubrik"), 1, 1)
</code>
Men där tar hjärnan slut. Jag fattar att jag måste dela in alf i lika många delar som antalbilder, och på något sätt sedan använda inStr(), men hjärnan vill som sagt inte. Någon som har en idé om hur man kan lösa det här?
Tacksamt,
Björn JanssonSv: Ge första bokstaven ett värde
<code>
alf = "abcdefghijklmnopqrstuvwxyzåäö0123456789"
antalbilder = 4
fs = Mid(RecSet("rubrik"), 1, 1)
bildnr = ((LCase(InStr(1, alf, fs)) - 1) Mod antalbilder) + 1
</code>
/JohanSv:Ge första bokstaven ett värde
Frågor: vad gör 1 i InStr(); vad gör Mod?
TackSv: Ge första bokstaven ett värde
Mod gör att man får "resten" vid en heltalsdivision.
I mitt exempel får bildnr ett värde mellan 1 och beroende på första bokstaven i RecSet("rubrik").
a->1
b->2
c->3
d->4
e->1
f->2
osv.
Men det kanske inte var det du var ute efter? Om inte, förklara gärna mer vad du är ute efter.
/JohanSv:Ge första bokstaven ett värde
Jag använder din kod på http://www.stenkullengoik.com/?bild=ja
Alla värden ser ut att bli 0?
Väldigt tacksam för din hjälp!
BjörnSv: Ge första bokstaven ett värde
<code>
Dim alf As String, fs As String
Dim antalbilder As Integer, bildnr As Integer
alf = "abcdefghijklmnopqrstuvwxyzåäö0123456789"
antalbilder = 4
fs = Mid("hej", 1, 1)
bildnr = ((LCase(InStr(1, alf, fs)) - 1) Mod antalbilder) + 1
MsgBox bildnr
</code>
/JohanSv:Ge första bokstaven ett värde
Hela inkluderingen som ska fixa bilden ser ut som följer:
<code=asp>
<%
alf = "abcdefghijklmnopqrstuvwxyzåäö0123456789"
antalbilder = 4
fs = Mid(RecSet("rubrik"), 1, 1)
bildnr = ((LCase(InStr(1, alf, fs)) - 1) Mod antalbilder) + 1
if request.querystring("bild") = "ja" then
imgsrc = "pic_design_" & bildnr & ".jpg"
else
imgsrc = "pic_design_1.jpg"
end if
%>
<td width="62" valign="top"> <img src="http://www.stenkullengoik.com/<%=imgsrc%>" border="1" width="<%=Width%>" height="<%=Height%>"></td>
</code>
Jag kan inte se vad som kan vara fel?
Björn
EDIT: Svårt att använda DIM eftersom detta inkluderas 5 gånger. Kan tänka mig att det blir fel om man DIMar samma variablar flera gånger?Sv: Ge första bokstaven ett värde
bildnr = ((InStr(1, alf, LCase(fs)) - 1) Mod antalbilder) + 1
/JohanSv:Ge första bokstaven ett värde
Tack för hjälpen!
Jag tänkte stänga tråden, men det går ju inte. Någon annan som kan det kanske?Sv: Ge första bokstaven ett värde
/Johan