Avatar billede trumf Nybegynder
03. november 2002 - 13:20 Der er 15 kommentarer og
1 løsning

Addere to arrays

Hejsa

Jeg laver to søgninger:
SQL1 = Select * from tabel where xxx
SQL2 = Select * from tabel where yyy AND ID Not IN (xxx)

arr1 = SQL1.getrows
arr2 = SQL2.getrows

Hvordan lægger jeg de to arrays sammen til et ?

alldata = arr1 + arr2 (det virker selvfølgelig ikke)


Takker

TRUMF
Avatar billede taager-kongen Nybegynder
03. november 2002 - 13:24 #1
alldata = arr1 & arr2
Avatar billede taager-kongen Nybegynder
03. november 2002 - 13:25 #2
& bruger man når man skal linke to variabler
+ bruger man når man skal + i matamatik
Avatar billede taager-kongen Nybegynder
03. november 2002 - 13:25 #3
svar
Avatar billede stigc Nybegynder
03. november 2002 - 13:31 #4
Du skal "redim preserve" det først array til at være lige så stort som den fælles størrelse. Dernæst looper du elementer fra det andet array, over i det første.

Lettere er det at lave en union med SQL:

SQL = "(Select * from tabel where xxx)"
SQL = SQL & "UNION"
SQL = SQL & "(Select * from tabel where yyy AND ID Not IN (xxx))"
set rs= conn.execute(SQL)

if NOT rs.eof THEN arrSamlet = SQL.getrows
Avatar billede trumf Nybegynder
03. november 2002 - 13:32 #5
Ja, det skulle jeg også mene, men jeg får fejlen:
Microsoft VBScript runtime error '800a000d'
Type mismatch
quick_soeg.asp, line 59
[alldata = alldata1 & alldata2]
Avatar billede trumf Nybegynder
03. november 2002 - 13:36 #6
stigc> får jeg så resultaterne vist fra SQL1 først ?
Den første SQL henter resultater hvor alle ord indgår og den anden tager nogle.

Og svar lige, så du kan få point
Avatar billede stigc Nybegynder
03. november 2002 - 13:38 #7
Det skulle du gerne, da der ingen order by er! Behold bare dine points.
Avatar billede trumf Nybegynder
03. november 2002 - 13:40 #8
Jeg får fejlen:
Cannot use Memo, OLE, or Hyperlink Object field 'beskrivelse' in the SELECT clause of a union query.
Avatar billede stigc Nybegynder
03. november 2002 - 13:43 #9
hmmmm. DU må ikke buge UNION med et memo felt. Hvis du skal have den med, er du nød til at bruge den første metode!
Avatar billede trumf Nybegynder
03. november 2002 - 13:53 #10
Jeg er i gang med at pille den ud, men det er ikke nemt, da der er mange data at holde styr på.
Det skulle gøres før eller siden, da det vil optimere søgningen. :-)
Avatar billede trumf Nybegynder
03. november 2002 - 14:12 #11
Der er en order by, så det virker vist ikke  :-(
hvordan laver jeg den der redim preserve ?

Det jeg laver ligger på www.vinguide.net og det er quicksøgningen på forsiden, prøv at søge på Château Petit-Mangot
Avatar billede trumf Nybegynder
03. november 2002 - 15:33 #12
Jeg har lige læst at redim preserve er en "ressource fælde" da den looper, så vil det ikke være nemmere at definere et nyt array, jeg kender jo antallet af poster der skal være i det nye array og så bare lægge dem sammen ?
Avatar billede trumf Nybegynder
03. november 2002 - 15:51 #13
Nu har jeg prøvet:
numrows = numrows1 + numrows2
Dim alldata(numrows)
alldata = alldata1 & alldata2

Men det giver fejlen:
Microsoft VBScript compilation error '800a0402'
Expected integer constant
Dim alldata(numrows)
------------^
Avatar billede coltau Juniormester
04. november 2002 - 15:29 #14
Kan du ikke bruge denne:

Dim alldata(UBound(alldata1) + UBound(alldata2) + 1)
' Det skulle give plads til begge
Avatar billede trumf Nybegynder
25. november 2002 - 17:05 #15
Microsoft VBScript compilation error '800a0402'

Expected integer constant

Dim alldata(UBound(alldata1) + UBound(alldata2)+1)
------------^
Avatar billede trumf Nybegynder
22. januar 2003 - 02:33 #16
Svaret for mig er i SQL'en:

Select *, 1 As Q from tbl where xxx Union Select *, 2 As Q from tbl where yyy AND ID Not IN (Select ID from tbl where xxx) order by Q

Håber den kan hjælpe en anden!
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