Avatar billede george Nybegynder
23. januar 2005 - 14:19 Der er 17 kommentarer og
1 løsning

Søg i array efter en post med to ord

Kan jeg søge i et array ( en af posterne ) om der er et eller to ord ?

Jeg har en kode der ser således ud :

For i=0 ubound(ArrRec,2)
  Her skal jeg have noget kode der kan finde ud af om der er et eller to ord
  If ? = "et ord" then
      skriv 1. html kode
    Else
      'to ord
      skriv 2. html kode
  End If
Next

Jeg forstiller mig man skal søge efter om der er et mellem rum eller ej ?
Avatar billede softspot Forsker
23. januar 2005 - 14:42 #1
Jeg kunne forestille mig noget i stil med flg.:

For i=lbound(ArrRec) to ubound(ArrRec)
  If instr(Trim(ArrRec(i)), " ") = 0 then
      'skriv 1. html kode
    Else
      'to ord
      'skriv 2. html kode
  End If
Next

Idé: Gennemløb alle elementer i listen og trim mellem før og efter indholdet. Søg derefter efter et mellemrum... hvis der er nogen, så skriv 1. eller skriv 2.
Avatar billede george Nybegynder
23. januar 2005 - 14:51 #2
Jeg prøver lige.
Avatar billede george Nybegynder
23. januar 2005 - 15:11 #3
Jeg får følgende fejl i linje :  If instr(Trim(ArrRec(i)), " ") = 0 then

Fejl:
Microsoft VBScript runtime (0x800A0009)
Subscript out of range: 'ArrRec'
/gjonline/dbtest.asp, line 34
Avatar billede softspot Forsker
23. januar 2005 - 15:14 #4
Det er muligvis fordi der ikke er noget indhold i listen... er der det?
Avatar billede george Nybegynder
23. januar 2005 - 15:19 #5
Ja jeg har en DB med 10-15 poster hvor der blandt andet er en post med to ord.
Avatar billede softspot Forsker
23. januar 2005 - 15:20 #6
Næh det er ikke derfor! Det er naturligvis fordi det er for længe siden jeg har brugt denne funktion (InStr) - man skal jo starte med at angive startindeks. Det betyder at koden skal se således ud i stedet:

For i=lbound(ArrRec) to ubound(ArrRec)
  If instr(1, Trim(ArrRec(i)), " ") = 0 then
      'skriv 1. html kode
    Else
      'to ord
      'skriv 2. html kode
  End If
Next
Avatar billede george Nybegynder
23. januar 2005 - 15:25 #7
Desværre samme fejl.
Avatar billede softspot Forsker
23. januar 2005 - 15:29 #8
kan du smide lidt mere kode med... der må være nogle omstændigheder jeg ikke kan tage højde for med den informationer jeg har pt. :)
Avatar billede george Nybegynder
23. januar 2005 - 15:33 #9
Her er hele koden:

'Creating the Recordset Object
Set Conn = Server.CreateObject("ADODB.Connection")

'Creating a DSN-Less connection to your Database
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("pos.mdb")

'Open your recordset
Conn.Open strDSN

'* Get records for USA - SOHO ***************************************
strSQL = "SELECT * FROM Retail Where Country='usa' and City='soho'"
Set rs = Conn.Execute(strSQL)

' Everything in the memory
If Not rs.EOF Then
  ArrRec = rs.getrows()
End If
'* Get records for USA - SOHO ***************************************

' Close connections
rs.close
set rs = nothing
conn.close
set conn = nothing

' Print records for USA - SOHO
'For i = 0 to Ubound(ArrRec,2)
  'Response.Write(ArrRec(2,i))%><BR><%
'Next

For i=lbound(ArrRec) to ubound(ArrRec)
  If instr(1, Trim(ArrRec(i)), " ") = 0 then
    'skriv 1. html kode
    Response.Write "1. html kode"
  Else
    'to ord
    'skriv 2. html kode
    Response.Write "2. html kode"
  End If
Next
Avatar billede softspot Forsker
23. januar 2005 - 15:45 #10
For i=lbound(ArrRec) to ubound(ArrRec)
  If instr(1, Trim(ArrRec(0,i)), " ") = 0 then
      'skriv 1. html kode
    Else
      'to ord
      'skriv 2. html kode
  End If
Next

Nu har jeg sat den til at lede i den første kolonne i resultatet, men det kan godt være du vil søge i en anden kolonne... det må du lige selv tage en beslutning om :)
Avatar billede george Nybegynder
23. januar 2005 - 15:51 #11
Kommer med flg fejl lige meget hvilken kolonne jeg vælger at sætte den til at søge i:

Microsoft VBScript runtime (0x800A0009)
Subscript out of range: 'i'
/gjonline/dbtest.asp, line 34
Avatar billede softspot Forsker
23. januar 2005 - 17:48 #12
Det lader til at du skal bytte rundt på 0 og i, således:

If instr(1, Trim(ArrRec(i,0)), " ") = 0 then

Det er bare ikke det der står i dokumentationen, men hey - det er nok bare mig der ikke fatter en reje :)
Avatar billede softspot Forsker
23. januar 2005 - 17:51 #13
Næh, det passer heller ikke! :(
Avatar billede softspot Forsker
23. januar 2005 - 17:59 #14
OK, nu tror jeg at jeg dik fat i den (og ja, det var mig der ikke fattede en reje, for dokumentationen var - sjovt nok - korrekt). Det skal se sådan ud:

For i = 0 to ubound(ArrRec,2)
  If instr(1, Trim(ArrRec(0,i)), " ") = 0 then
      'skriv 1. html kode
    Else
      'to ord
      'skriv 2. html kode
  End If
Next


Jeg udskrifter lbound med 0 da arrays altid starter ved index 0
Avatar billede softspot Forsker
23. januar 2005 - 18:05 #15
Bugger! Jeg tester den i NS 7.2 og der fungerer det godt nok. Hvilken version kører du?
Avatar billede softspot Forsker
23. januar 2005 - 18:06 #16
Møj! Forkert vindue! Sorry :(
Avatar billede george Nybegynder
23. januar 2005 - 18:23 #17
Så virker det. Perfekt. Tak for hjælpen.
Avatar billede Nubbsking Nybegynder
06. januar 2014 - 10:35 #18
Hej jeg skal bruge lidt hjælp til en funktions omskrivning i arrays
den skal søge på tal mellem 10 og 100 når jeg trykker knappen søg
kan ikke helt gennemskue hvordan

kan i hjælpe mig?

function soeg() {
for(i=0; i<tal.length; i++) {
tal[length] = document.form1.tallene.value;
document.write(tal[i] +  "        " + "er fundet");
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
Kurser inden for grundlæggende programmering

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