Avatar billede mydream Nybegynder
26. september 2012 - 09:03 Der er 3 kommentarer og
1 løsning

Sql kald med parametre og et array

Jeg forsøger at ændre hele min kode fra simple sql kald til sql kald med parametre, men jeg har et problem med arrays:

function hentartikler2(Tekst)

arrTekst = Split(Tekst," ")

sql = "select distinct url,overskrift,ID,Korttekst from dbo.Artikel where Status='Aktiv' "

For t = LBound(arrTekst) to UBound(arrTekst)
Cmd.Parameters.Append(Cmd.CreateParameter("@arrTekst", 200, 1, 50, arrTekst(t)))
sql = sql &" and (Artikeltekst like('%?%') ) "
Next

sql = sql & " order by Overskrift "
Cmd.CommandText = sql
Set Record3 = Cmd.Execute
end function

men den virker ikke. Hvad gør jeg galt?
Avatar billede softspot Forsker
26. september 2012 - 09:47 #1
Jeg vil tro dette kunne gøre det:

function hentArtikler2(Tekst, conn)
  dim arrTekst, sql, rs, word, cmd

  arrTekst = Split(Tekst," ")

  sql = "SELECT DISTINCT url,overskrift,ID,Korttekst " & _
        "FROM dbo.Artikel " & _
        "WHERE Status = 'Aktiv' "

  for each word in arrTekst
    sql = sql & " AND (Artikeltekst LIKE '%' + ? + '%') "
  next

  sql = sql & " order by Overskrift "

  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandText = sql

  Set rs = cmd.Execute(, arrTekst)

  set hentArtiklers = rs
end function

Hvor du medsender et åbent connection-objektet (conn) i kaldet, således du har indkapslet hele logikken omkring læsning af artikler i én funktion, men stadig kan udføre andre handlinger på den samme connection.
Avatar billede softspot Forsker
26. september 2012 - 09:51 #2
Ups! Der sneg sig lige en fejl ind i navnet på funktionen ifm. returnering af recordsettet. Det skal nok være således i stedet:

function hentArtikler2(tekst, conn)
  dim arrTekst, sql, word, cmd

  arrTekst = Split(tekst," ")

  sql = "SELECT DISTINCT url,overskrift,ID,Korttekst " & _
        "FROM dbo.Artikel " & _
        "WHERE Status = 'Aktiv' "

  for each word in arrTekst
    sql = sql & " AND (Artikeltekst LIKE '%' + ? + '%') "
  next

  sql = sql & " ORDER BY Overskrift "

  set cmd = Server.CreateObject("ADODB.Command")
  set cmd.ActiveConnection = conn
  cmd.CommandText = sql

  set hentArtikler2 = cmd.Execute(, arrTekst)
end function
Avatar billede mydream Nybegynder
26. september 2012 - 10:00 #3
Det ser ud til at være løsningen. Tusind tak for hjælpen !! Lægger du et svar? Ha en super dag !!
Avatar billede softspot Forsker
26. september 2012 - 11:21 #4
Velbekomme og tak i lige måde :-)
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