Avatar billede para7 Nybegynder
27. november 2002 - 14:00 Der er 17 kommentarer og
1 løsning

SQL Syntaks for Butikker.NetbyNavn LIKE % Netbyer.NetbyID %

Kernen i problematikken synes at være en syntaksfejl (streng-konkatenering) - og måske mere:

<%
'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 kun en alert op, når der kun er en enkel by i feltet.
der skal poppe op for den første by der er på listen. de andre er sekundære byer.

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 & " and 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
%>
Jeg kunne forestille mig at løsningen lå i fx det med % tegnene i LIKE. Der skal opsnappes begyndelsen af Butikker.NetbyNavn -strengen:fx(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.
Jeg vil absolut mene, at lave et felt for hver by er meningsløst, da antal byer skal udviddes hen ad vejen op mod flere hundrede. 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 terry Ekspert
27. november 2002 - 14:03 #1
Not sure what Netbyer.NetbyID is but your LIKE should be something like this

LIKE '*SomeValue*'
Avatar billede para7 Nybegynder
27. november 2002 - 14:15 #2
DET lyder mere rigtigt - om i Acces. men jeg har ikke fået det til at virke på den ene eller anden måde: '*Netbyer.NetbyID*' eller 'Netbyer.NetbyID*' osv. Men hvad er så % til for?
PS: Netbyer.NetbyID er en strengværdi som halmstad eller halmstad, goeteborg, etc
Avatar billede terry Ekspert
27. november 2002 - 14:37 #3
try with

LIKE '*halm*'

your problem is that you have to get the contents of whatever Netbyer.NetbyID is, into the string ''

So something like

SQL = SQL & " and Butikker.NetbyNavn LIKE '* & Netbyer.NetbyID & "*'"
is ABOUT right, but I dont know much about ASP or where Netbyer.NetbyID is comming from
Avatar billede di8leva Nybegynder
27. november 2002 - 14:39 #4
para7 >>
normalt i en SQL skall man ikke bruge *,
det wildcard man skall bruge er %, vilket betyder samme som * i en SQL

like '%stad%'

matchar:
karlstad
halmstad
stad
stad i brand
Avatar billede terry Ekspert
27. november 2002 - 14:46 #5
In access the wildcard characyer for stringsis * although in other SQL databases it is %
Avatar billede para7 Nybegynder
27. november 2002 - 14:50 #6
OK, terry har nok ret at det er noget i den retning. Men jeg har prøvet lidt af hvert i den retning: SQL = SQL & Butikker.NetbyNavn LIKE '%Netbyer.NetbyID%' " - dutter ikke.
Avatar billede para7 Nybegynder
27. november 2002 - 14:54 #7
Jeg mener di8leva har nok ret ...
Avatar billede terry Ekspert
27. november 2002 - 15:45 #8
READ MY Comment 14:37:38 !!!!
and try with an example JUST TO SEE if it works!

SQL = SQL & " and Butikker.NetbyNavn LIKE '* & "Halm" & "*'"

and you obviously NEED some records  where Butikker.NetbyNavn contains "Halm"
Avatar billede di8leva Nybegynder
27. november 2002 - 15:45 #9
hvis du skriver:
SQL = SQL & "Butikker.NetbyNavn LIKE '%Netbyer.NetbyID%' "

kommer du att leta efter en by der heder *Netbyer.NetbyID* og det heter ingen by =)

hvis jag førstår det rætt vill du ha en join fra to tabeller:

SQL = "select Butikker.FirmaId, Butikker.NetbNavn, Netbyer.NetbyID "
SQL = SQL & " from Butikker left join Netbyer on Butikker.NetbyNavn = Netbyer.NetbyId "
SQL = SQL & " order by dato desc "       

^testa den
Avatar billede terry Ekspert
27. november 2002 - 15:58 #10
para7> I would suggest that you use Access to get your query (SQL) to work, and once it sworking there then it should be a piece of cake to get it working in ASP, thats if you know ASP :o)
Avatar billede para7 Nybegynder
27. november 2002 - 16:23 #11
Tak og thanks. Vender tilbage i aften. Er på arbejde.
Avatar billede para7 Nybegynder
27. november 2002 - 22:29 #12
Råd fra terry:
Jeg afprøvede SQL = SQL & " and Butikker.NetbyNavn LIKE '* & "Halm" & "*'" og senere omskrevet til '%Halm%'". Dette gav 18 popups - een for hver by.
SQL blev kreeret via Acces med følgende resultat:
Fejltype:
Microsoft JET Database Engine (0x80040E21)
Der kan ikke joinforbindes med feltet af typen Memo, OLE eller Hyperlink Object (Netbyer.NetbyID=Butikker.NetbyNavn).
Ja, felterne er begge af typen memo, ærgerligt, men datamængden i den kommaseparerede streng i Butikker.NetbyNavn kræver det.
Avatar billede para7 Nybegynder
28. november 2002 - 20:46 #13
Der kan ikke joinforbindes med feltet af typen Memo. Kan man ikke komme om ved det?.. Hvis ingen ser ud til at have en løsning eller tæt på, så jeg lukker spørgsmålet.
Avatar billede terry Ekspert
29. november 2002 - 08:40 #14
para7>We can NOT give you a solution on the design errors in you database, that is another question, which would cost more than 120 points :o)
We can only help you on the actual question you placed and you have received an anwer for that, but before you can get it to work you MUST get your database design in place. Its a hard life :o)
Avatar billede terry Ekspert
29. november 2002 - 09:47 #16
para7>Points are given for a correct answer not for a happy customer. You have recieved and answer concernt the LIKE syntax. You have also received information telling you what your porblem is. So I dont understand WHY no points are rewarded, even thoug hthey cant be used for much at all. But dont worry just do NOT expect ANY help in future.
Avatar billede para7 Nybegynder
29. november 2002 - 09:49 #17
SORRY terry - det var ikke meningen at afvise det sidste svar med linket. Den ser jeg nærmere på. Men speaking on behalf on all the experts here?.. I can offer a few more donuts, no problemo ;o)
Men altså det foregår på http://www.eksperten.dk/spm/289027 hvor jeg har ryddet lidt op i tingene.
Den her er blevet lidt rodet..
Avatar billede para7 Nybegynder
29. november 2002 - 09:55 #18
"Points are given for a correct answer not for a happy customer..." Hvor læser man om den slags regler? Jeg vil da gerne opføre mig ordentligt her..
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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