14. juli 2010 - 17:53Der er
16 kommentarer og 1 løsning
sammenligne et array med en tekststreng
Hej Jeg har et lille problem med array.
Jeg trækker en tekst ud fra et felt i en DB og vil kontrollere om den findes i arrayet. Hvis ikke skal den tilføjes arrayet elles springes til næste tekstudtræk med en ny sammenligning.
Jeg prøver også med select distinc, men får alligevel dubletter i arrayet.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<%set gr=server.createobject("adodb.recordset") sqlgr = "SELECT DISTINCT gruppe FROM tblBruger" & ntabel & "Web WHERE status <> 'udmeldt' and gruppe <> '" & "" &"'" gr.open sqlgr, conn
Så prøver jeg at indsætte værdierne i arrayet
a = ""
do while not gr.eof
a = a + "," + gr("gruppe")
gr.MoveNext loop
grupper = split(a,",")
Senere skal arryet bruges til overskrifter til grupperne og gruppens medlemmer indsættes i en tabel med dette udtræk fr DB.
set rs=server.createobject("adodb.recordset")
sqlrs = "SELECT * FROM tblBruger" & ntabel & "Web WHERE status <> 'passiv' and status <> 'udmeldt' and status <> 'I arbejde' and GRUPPE like '%" & grupper(i) & "%' order by fornavn ASC, gruppe DESC"
hm.. altså der hvor du indsætter en ny gruppe. Det er der, du skal tjekke om den nye gruppe findes i forvejen.
Det er nok ikke i do-loop løkken, da de grupper du trækker ud, er hentet med DISTINCT.
Måske er dit problem at du sorterer på fornavn før gruppe? I så tilfælde, prøv:
sqlrs = "SELECT * FROM tblBruger" & ntabel & "Web WHERE status <> 'passiv' and status <> 'udmeldt' and status <> 'I arbejde' and GRUPPE like '%" & grupper(i) & "%' order by gruppe DESC, fornavn ASC"
hvordan får jeg checket om den foregående records felt gruppe er i arryet eller ikke,
altså noget i den her stil
hvis teksten i databasefeltet findes i arrayet skal det ikke indsættes igen i arrayet, men man skal gå videre til den næste record i databasen og så lave checket igen.
så skal det hele ende ud med at jeg har et array med de grupper der findes i databasen, men kun en gang af hver.
det jeg mener er hvis en person er med i flere grupper så er der i feltet gruppe skrevet hvormange grupper vedkommende indgår i.
meningen er at hver gruppe skal stå for sig selv i tabellen.
Hvis jeg har døbt gruppenavnet inden jeg søger i DB får jeg det rigtige resultat, men hvis jeg ikke ved på forhånd hvad grupperne hedder skal jeg løse problemmet som ønsket ovenfor.
Der vil sige læse fra DB, indsætte i array med gruppe navnet kun en gang.
så når en person deltager i flere grupper og det står i feltet gruppe, skal jeg gerne kunne dele hele denne tekststreng op i enkelte ord som så checkes om de er i arrayet eller ikke.
Når jeg så har et array med alle grupperne nævnt kun en gang er resten bare at søge i DB igen med det unikke gruppenavn og indsætte resultatet i en tabel og vupti alt er ok.
I brugertabellen er der et felt der hedder "Gruppe".
Indhold i feltet gruppe er kommasepareret, og afspejler hvilke grupper et medlem er en del af.
Nu vil du gerne trække en liste (dit array) over alle gruppenavne i record-settet.
Har jeg ret, gør du således:
alle="" do while not gr.eof if gr("gruppe")<>"" then tmp=split(gr("gruppe"),",") for t=lbound(tmp) to ubound(tmp) if instr(alle,tmp(t)&",")=0 then alle=alle&tmp(t)&"," end if next end if gr.MoveNext loop if alle<>"" then alle=left(alle,len(alle)-1) array_med_grupper=split(alle,",")
men nu kan jeg ikke forstå hvorfor jeg får et andet udtræk fra databasen når jeg bruger
set rs=server.createobject("adodb.recordset") sqlrs = "SELECT * FROM tblBruger" & ntabel & "Web WHERE status <> 'passiv' and status <> 'udmeldt' and status <> 'I arbejde' and GRUPPE like '%"&array_med_grupper(i)&"%' " order by fornavn ASC, gruppe DESC rs.open sqlrs, conn
istedet for hvis direkte har brugt f. eks.
set rs=server.createobject("adodb.recordset") sql = "SELECT * FROM tblBruger" & ntabel & "Web WHERE status <> 'passiv' and status <> 'udmeldt' and status <> 'I arbejde' and GRUPPE like '%" & "Medlemsservice" & "%' order by fornavn ASC, gruppe DESC" rs.open sql, conn
Det vil sige jeg får ikke alle med i grupperne når jeg bruger løkken fra arrayet, men hvis jeg har døbt gruppen i forvejen i sql sætningen får jeg alle med.
hm, kan det være fordi du ikke løber hele arrayet igennem i dit første eksempel?
ved tvivl, prøv at teste:
for i=lbound(array_med_grupper) to ubound(array_med_grupper)
sqlrs = "SELECT * FROM tblBruger" & ntabel & "Web WHERE status <> 'passiv' and status <> 'udmeldt' and status <> 'I arbejde' and GRUPPE like '%"&array_med_grupper(i)&"%' " order by fornavn ASC, gruppe DESC
hm, jeg kan ikke ligge et svar, men lad nu det ligge. Jeg kunne bare se i din historik (alle dem jeg lige tjekkede) at du selv tager svarene..
Der er ingen forskel på om du bruger en konstant eller en variabel i din sql sætning.
Fejlen er i koden et sted.
Men man kan sige, at den måde det er bygget på, med kommaseparerede data i et felt, måske ikke er helt den mest optimale måde at lave det der på..
Synes godt om
Ny brugerNybegynder
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.