28. maj 2002 - 18:05Der er
31 kommentarer og 1 løsning
Udvælge 5 tilfældige poster....
Hej jeg skal have udvalgt 5 forskællige poster fra en Access 2000 DB, og samme post må selvfølgelig ikke udvælges flere gange... der skal envidere være muglighed for at slette og tilføje poster.... det er altså ikke nogen koloner der indeholder en talrække fra 1 til * men det kan godt sprinde som fx:
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
antalRandom = 5 Rs.Open "SELECT * FROM Film ", Connect,1,3 inDB = rs.RecordCount If inDB > antalRandom then Randomize timer newId = Int (rnd*inDB) strIndex = "," & newid & "," indexFound = 1 Do while indexFound < antalRandom Do Newid = Int (rnd*inDB) Loop while inStr(strIndex,"," & newid & ",") > 0 strIndex = strIndex & newid & "," indexFound = indexFound + 1 Loop strIndex = mid (strIndex,2,len(strIndex)-2) myArr=split(strIndex,",",-1) For i = Lbound(myArr) to Ubound(myArr) rs.move myArr(i),1
eagleeye >>> 1: jeg kan overhovedet ikke se op og ned på den kode... men det hjælper nok når jeg får sat lidt struktur over den...
2: i tilfælde af at den ramme et Id der ikke findes hvad gør den så... ??? jeg læste noget om det på activedeveloper, men det var ringe forklaret efter min mening... men der rundede de op eller ned.. men det så ellers noget mere enkelt ud...
: 'Conn, Rs er ADODB.Connection hhv. ADODB.Recordset
Randomize Timer
Set Rs = Conn.Execute("SELECT * FROM Tabel WHERE ID = ("&_ "SELECT Min(ID) FROM Tabel WHERE ID >= (" &_ "SELECT Round(CDbl(" & Replace(Rnd(),",",".") &_ "*Max(ID))) FROM Tabel))")
men den udvælge desvære kun en så den kunne jeg ikke ummidelbart bruge...
det virker ikke... den kræver et objekt... men hvilket. det er ummidelbart ikke et recordset... eller er det, for det kan godt være at jeg har lavet en stavefejl...
min connectiona hedder cn... og så skal der vel bare stå cn der hedder cennect... og jeg har oprettet et reccordset... men jeg prøver lige igen senere i dag... som jeg sagde så kunne det være jeg havde stavet forkert.... ;o)
ja... og det er faktisk lige hvad jeg har på nuværende tidspunkt...
men jeg arbejder med at få lagret alle ID'er i et Array...
således at:IDinDB = ArrRec(1,2,4,5,6,8,9,15,16,19)
og hvor jeg så går ind og snupper 5 telfældige fra det array... men jeg ved ikke helt hvordan jeg skal gøre det.... jeg har fundet meget ringe dokumentation derom...
strPath = server.Mappath("Data.mdb") strDSN = "provider = microsoft.jet.OLEDB.4.0; Data Source =" & strPath set cn = server.createobject("ADODB.Connection") set rs = server.createobject("ADODB.Recordset")
SQL = "SELECT Array.ID, Array.TEXT FROM Array;"
rs.open SQL, strDSN,1,3
rs.close set rs = Nothing --------------------------------------------------------------------------- Det er i princippet det jeg har nu... for jeg kan ikke få det med array til at funge...
jo... men jeg skal bare have talene ind i arrayet... envidere skal det udvalgte tal slettes....
Array = alle ID (Array = ID1,ID2,ID3....) But how... -------------------------------------------------------------------------- Array: 1,2,4,5,6,8,9,15,16,19
første tal vælges: tal=2 Tal slettes eller sættes lig "": Slet 2
Array: 1,,4,5,6,8,9,15,16,19
næste tal vælges: tal=6 Tal slettes eller sættes lig "": Slet 6
antalRandom = 5 inDB = UBound(talArr) If inDB > antalRandom then Randomize timer newId = Int (rnd*inDB) strIndex = "," & newid & "," indexFound = 1 Do while indexFound < antalRandom Do Newid = Int (rnd*inDB) Loop while inStr(strIndex,"," & newid & ",") > 0 strIndex = strIndex & newid & "," indexFound = indexFound + 1 Loop strIndex = mid (strIndex,2,len(strIndex)-2) end if
strIndex indeholder du en liste med 5 tilfælde tal så skal man hednt ID ud fra talArr..
myArr=split(strIndex,",",-1) For i = Lbound(myArr) to Ubound(myArr) ID = talArr(myArr(i)) sql = "SELECT * FROM tabel WHERE ID = " & ID set rs = cn.execute(sql) response.write rs("kolonnenavne") & "<br>" next
<% Dim strPath, strDSN, cn, SQL, rs, SQLrun, randSTK, TalArr Dim inDB, indexFound, strIndex, newID, myArr, RSrun, ID
strPath = server.Mappath("Data.mdb") strDSN = "provider = microsoft.jet.OLEDB.4.0; Data Source =" & strPath set cn = server.createobject("ADODB.Connection") set rs = server.createobject("ADODB.Recordset") cn.open strDSN
SQL = "SELECT Array.ID, Array.TEXT FROM Array;"
rs.open SQL, cn,1,3
TalArr = rs.RecordCount
randSTK = 5 inDB = Ubound(TalArr) If inDB > randSTK Then Randomize timer newID = int(Rnd*inDB) strIndex = "," & newID & "," indexFound = 1 Do While indexFound < randSTK Do newID = Int(Rnd*inDB) Loop While inStr(StrIndex,"," & newID & ",") > 0 StrIndex = StrIndex & newID & "," indexFound = indexFound + 1 Loop StrIndex = Mid(StrIndex,2,Len(StrIndex)-2) End If
myArr = Split(StrIndex,",",-1) For i = Lbound(myArr) to Ubound(myArr) ID = TalArr(myArr(i))
rs.close set rs = Nothing
SQLrun = "SELECT Array.ID, Array.TEXT FROM Array WHERE ID = " & ID & ";" set RSrun = cn.execute(SQLrun)
og det har jeg fået til at virke... og jeg har også fået den til at hente 5 tilfældige... men da det er meget kringlet i forhold til den du har... så ville jeg gerne have den til at virke... men ellers så gør det ikke noget...
ved jeg godt....... men nu virker den anden metode jeg bruger 100% (indtil videre...), jeg er endnu ikke stødt på nogen fejl... men som tidligere så var det en helvedes masse kode... i forholde...
men det med at rive talene ud at tabellen har jeg løst... på en måde hvor jeg kan sige til mig selv "HVORFOR HELVEDE TÆNKTE JEG IKKE PÅ DET ??? MIG IDIOT !!!"""
jeg har bare gået ind i en helt almindelig udskrivning uden Recordsets osv.... og så bare:
If Left(AllRec, 1) = "," Then AllRec = Right(AllRec, (Len(AllRec)-1)) Else AllRec = AllRec End If AllRec = Left(AllRec, (Len(AllRec)-1))
den køre så 5 gange.... og det er lidt meget kode kan du god se... men det virker da... så jeg ved ikke om vi skal lægge det på hylden eller prøve at få det andet til at virke...
hvis du nu ville vide det... og grunden til at det skulle laves på denne måde er at vi kan uploade sponsore fra siden, så vi ikke skal opdatere vores database konstandt, vi skal bare logge ind som admin, og så vælge tilføj/slet sponsor
så skriver vi sponsorens navn, URL(hvis mugligt), og så vælge det billede der skal uploades sammen med... smart ikke
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.