Avatar billede para7 Nybegynder
24. november 2002 - 17:17 Der er 25 kommentarer og
1 løsning

To tabeller sammenligning med LIKE

<%
'Jeg har asp og Acces db.
'Tabellen og feltet Butikker.FirmaID har feltet med værdien test
'Tabellen og feltet Butikker.NetbyNavn har feltet med værdien halmstad, helsingborg
'Tabellen og feltet Netbyer.NetbyID er en referencetabel for de netbyer der eksisterer og har
'18 records, hvor både halmstad og helsingborg findes i hver sin record.
'Jeg vil gerne have at det skal være den første, nemlig halmstad, der starter en popup - og kun én.
'FEJL:
'Der popper en alert op for alle 18 netbyer op, når der kun skal poppe op for den første, nemlig halmstad.

Set objConn = server.createobject("ADODB.connection") 
objConn.open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" & server.Mappath("netbydb.mdb")
Set objRS = Server.createobject("ADODB.Recordset")    'Recordset oprettes

SQL = " select Butikker.FirmaID, Butikker.NetbyNavn, Netbyer.NetbyID "
SQL = SQL & " from Butikker, Netbyer "
SQL = SQL &  " where Butikker.Aktiv = -1 "
SQL = SQL & " or Butikker.NetbyNavn LIKE '%Netbyer.NetbyID%' "
'SQL = SQL & " and Butikker.NetbyNavn = Netbyer.NetbyID " 'Denne dur kun ved en enkelt netby i Butikker.NetbyNavn
SQL = SQL & " order by dato desc "       
objRS.open SQL, objConn

do until objRS.EOF
       
if objRS("FirmaID") = "test1" then
    Response.write "<script>alert('" & objRS("FirmaID") & "\n"
    Response.write "Netby: " & objRS("NetbyID") & "\n"
    Response.write "')</script>"
'exit do
end if

objRS.movenext
loop
objRS.Close
%>
Avatar billede para7 Nybegynder
24. november 2002 - 17:21 #1
PS:
Hvis i linjen:
SQL = SQL & " or Butikker.NetbyNavn LIKE '%Netbyer.NetbyID%' " OR udskiftes med AND, som det jo nok burde være, popper der ikke noget op... øv...
Avatar billede sbm Nybegynder
25. november 2002 - 12:55 #2
Vedr. din PS.
Hvilken værdi har du i Butikker.Aktiv ? Hvis den ikke rummer præcis -1, vil din AND altid give false på den ene side, og så får du ikke noget ud.

Hvilken rækkefølge skriver du dine netbynavne? Alfabetisk rækkefølge?

Du vil altid kunne modificere din metode til kun at lave en enkelt alert:
dim continue
continue = true
if (objRS("FirmaID") = "test1" && continue) then
    Response.write "<script>alert('" & objRS("FirmaID") & "\n"
    Response.write "Netby: " & objRS("NetbyID") & "\n"
    Response.write "')</script>"
    continue = false
end if


Jeg er ikke 100% på syntaksen, da jeg ikke sidder et sted hvor jeg kan teste det, men jeg håber du kan fange idéen i det jeg prøver at vise.

Hvis rækkefølgen på byerne i din select og rækkefølgen på byerne i din komma-separerede liste ikke stemmer overens, vil den ikke altid give dig den rigtige by i din popup. Så kan du evt. forsøge at lave en ORDER BY så rækkefølgen bliver korrekt. Med mindre der slet ikke er nogen bestemt orden i din kommaseparerede liste, hvor du så bliver nødt til at lave en lille funktion der sørger for at finde den rigtige af dem frem til din alert.
Avatar billede para7 Nybegynder
25. november 2002 - 17:04 #3
Svar til sbm:
Tak for ideerne. Ingen løsning endnu. Butikker.Aktiv er 0 eller -1 (checmark i feltet).

Rækkefølge af netbyer i feltet er som de bliver prioriteret af klienten, med den første som hovedby. Det kan være halmstad, helsingborg eller helsingborg, halmstad.

Er det ikke blot et spørgsmål om at feltet bliver gennemløbet af LIKE , som når man ved LIKE som søgefunktion på inholdet af en tekst i et felt?
Avatar billede sbm Nybegynder
25. november 2002 - 20:33 #4
Ahhhh. Mon du så ikke skal checke på true/false istedet for -1 ?
Jeg har lidt travlt lige nu, så jeg kigger tilbage igen senere.....
Avatar billede para7 Nybegynder
27. november 2002 - 12:01 #5
Tak til sbm. Jeg har også prøvet sand, da min iis er på dansk. Den går ikke.
Det MÅ da kunne lade sig gøre med lige den rigtige SQL sætning. Så relativ simpel en ting???????
Avatar billede sbm Nybegynder
27. november 2002 - 12:07 #6
Ikke forstået? HVOR har du prøvet med sand "fordi din iis er på dansk"? Jeg kan da ikke forestille mig noget sted at du skal skrive de forskellige nøgleord på dansk?
Avatar billede para7 Nybegynder
27. november 2002 - 12:16 #7
Jeg har prøvet at udskifte:
SQL = SQL &  " where Butikker.Aktiv = -1 " med SQL = SQL &  " where Butikker.Aktiv = true "

(og sand, da det er dansk som iis snakker med, når man spørger)
Avatar billede sbm Nybegynder
27. november 2002 - 12:39 #8
Jeg kan ikke helt greje dine data. Er netbyer.netbyid et nummer-id eller er det ren tekst?
Avatar billede para7 Nybegynder
27. november 2002 - 12:50 #9
Ja, for at klare lidt op på det og resumere:
Netbyer.NetbyID er ikke kommasepareret med flere byer - kun een by.
Netbyer -tabellen er bare reference.
Butikker.NetbyNavn  indeholder normalt også bare et enkelt bynavn, men kan indeholde op til 18 med , imellem.
Avatar billede sbm Nybegynder
27. november 2002 - 12:52 #10
Ok. Jeg kigger på din SQL, og jeg føler mig ikke sikker på at det holder at lave en LIKE '%Netbyer.NetbyID%'
Vil den så ikke tage det som en faktisk tekst, og prøve at finde "Netbyer.NetbyID inde i Butikker.NetbyNavn, og det er der naturligvis ikke nogen af dem der har.
Avatar billede sbm Nybegynder
27. november 2002 - 12:58 #11
Hvis jeg må komme med lidt konstruktiv kritik, så synes jeg det hænger lidt med normaliseringen i din tabel. Du bør slet ikke have en kolonne der rummer flere bynavne, men istedet lave en tredje tabel der f.eks. hedder ref_butik_netby og kun indeholder to kolonner. En der refererer til Butikker.id og en anden der refererer til Netbyer.NetbyID
Men det vil sikkert kaste en del ekstra arbejde af sig for dit vedkommende. :-/
Avatar billede para7 Nybegynder
27. november 2002 - 12:58 #12
Joooh..
Jeg kunne forestille mig at løsningen lå i fx det med % tegnene i LIKE; om der skal søges på begyndelsen, over det hele, eller i enden af Butikker.NetbyNavn -strengen:
(halmstad, helsingborg, goeteborg, svenskeby1, svedskeby, oerestad, osv-stad)
Hvis det var VBscript kunne man bare knipse med fingrene. Men der Skal sgu være lignende muligheder -eller bedre med SQL.
Avatar billede sbm Nybegynder
27. november 2002 - 13:00 #13
Hov. Vi skrev vist samtidig. Læs lige mit indlæg fra 12:58:06 :-)
Avatar billede sbm Nybegynder
27. november 2002 - 13:07 #14
Jeg er altså RET sikker på at
LIKE '%Netbyer.NetbyID%'
vil få dig til at søge på STRENGEN Netbyer.NetbyID og ikke VARIABLEN Netbyer.NetbyID. Du skal have noget streng-konkatenering med ind så det bliver
LIKE '%' & Netbyer.NetbyID & '%'
eller noget i den stil. Jeg aner ikke hvordan man konkatenerer i Access :-/
Avatar billede para7 Nybegynder
27. november 2002 - 13:07 #15
Det er rigtigt.
At lave en ny tabel (eller i samme tabel) lave flere felter er en lousy løsning, hvis det er det du mener. Det skal nemlig være muligt at udvidde antallet af netbyer hen ad vejen og op til flere hundrede.
Avatar billede sbm Nybegynder
27. november 2002 - 13:09 #16
Ikke forstået? Det er da ikke en "lousy" løsning at lave en ekstra tabel. Det er da den rigtige måde at løse det på... Eller misforstår jeg dig?
Avatar billede para7 Nybegynder
27. november 2002 - 13:19 #17
Fortsat tak til sbm. Det jeg mener er luset er at lave et felt for hver by. Eet felt med kommaseparerede byer må være sagen. Selvfølgelig OM nødvendigt i en anden tabel. Men jeg vil gerne keep it simple, og sitet her fungeret efter hensigten lige til det her problem dukkede op..
Avatar billede para7 Nybegynder
27. november 2002 - 13:22 #18
Og ja, du har ret, at det ER sgu strengen jeg søger i. Har prøvet med LIKE %Netbyer.NetbyID% uden appostrof - dur heller ikke.
Avatar billede sbm Nybegynder
27. november 2002 - 13:23 #19
Du kan følge med her... :-)
http://www.eksperten.dk/spm/288371
Avatar billede para7 Nybegynder
27. november 2002 - 13:27 #20
Det var en god idé. Jeg er standby lidt her og der..
Avatar billede para7 Nybegynder
27. november 2002 - 14:01 #21
Denne er lukket og viderføres i ny formulering på http://www.eksperten.dk/spm/288395
Avatar billede sbm Nybegynder
27. november 2002 - 14:10 #22
Hmmm. Nu skuffer du mig. Jeg har lokaliseret dit problem, og sågar smidt et spørgsmål der kan skaffe dig den sidste komponent til et svar, og så trækker du hele pivtøjet retur.
Avatar billede para7 Nybegynder
27. november 2002 - 14:18 #23
HVAD er der dog galt. Eller er det fordi jeg er grøn eller dum. Jeg har accepteret din hjælp og dermed regner jeg med at systemet sender dig dine point, som jeg gavmildt har givet bort på en kvart, men good-for-now-løsning?
Avatar billede para7 Nybegynder
27. november 2002 - 14:22 #24
Undskyld 3/4 løsning.. og fortsat tak...
Avatar billede sbm Nybegynder
27. november 2002 - 14:24 #25
Kig engang til. Dit svar kl. 13:27:54
Accepteret svar: para7
Point : 120
Avatar billede para7 Nybegynder
27. november 2002 - 14:34 #26
Vil det sige at jeg har fået mine egne point tilbage? Det var jo ikke lige meningen.
Og det synes jeg er en brist ved systemet. Er man ny her og gør sit bedste, kan man da godt blive upopulær ved et uheld, må jeg sige.. Nu skylder jeg dig 120..
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-metodespecialist og projektkoordinator i Ballerup

HusCompagniet A/S

Senior data engineer

Capgemini Danmark A/S

Client Partner

Politiets Efterretningstjeneste

Data engineer til PET