Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Sql-fråga till två databas-tabeller

Postades av 2005-08-24 09:58:53 - Mikael Kristiansson, i forum asp - allmänt, Tråden har 15 Kommentarer och lästs av 461 personer

Hej,

Jag vill hämta ut en adress och person ur två olika tabeller men får inte Sql-frågan rätt.
Vänt och vridit på Sql-n men är inte överrens med tekniken...

butik = Tabell 1
butik_ID = fält
ort = fält

personal = Tabell 2
butik_ID = fält
fornamn = fält
efternamn = fält
butikschef = fält(ja/nej)

Sql_n

Dim ort
ort = Request.QueryString("ort")
If ort <> "" Then
  Set rs = Conn.Execute("SELECT butiker.butik_ID, butiker.telefon, personal.fornamn, personal.efternamn FROM butiker, personal WHERE butiker.ort='"& ort &"' AND personal.butikschef=JA")
  'butik = rs("butik_ID")
  'Set rs2 = Conn.Execute("SELECT fornamn, efternamn FROM personal WHERE butikschef=ja AND butik_ID='"& butik &"'")
  Do Until rs.EOF 'AND rs2.EOF
  Response.Write " "& rs("telefon") &" <br>"
  Response.Write " "& rs("butik_ID") &" <br>"
  Response.Write " "& rs("fornamn") &" <br><br>"
  'Response.Write rs2("fornamn")<br><br>
  rs.MoveNext
  'rs2.MoveNext
  Loop
  rs.Close
  Set rs = Nothing
  'rs2.Close
  'Set rs2 = Nothing
End If


Får fram varje butik och dess ID men det är när jag ska hämta butikschefen till varje butik som det blir problem.
Får " No value given for one or more required parameters"
Någon som har en annan ide hur man kan hämta värden ur personal-tabellen som motsvarar butiken ur butik-tabellen?

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:20:33 - Peter Björklund

Prova att istället för butikschef=ja skriva butikschef=-1


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:26:02 - Mikael Kristiansson

Hej Peter,

Testade istället med:

<%
Dim ort
ort = Request.QueryString("ort")
If ort <> "" Then
  Set rs = Conn.Execute("SELECT butik_ID, telefon FROM butiker WHERE ort='"& ort &"'")
  Do Until rs.EOF
    Dim butik
    butik = rs("butik_ID")
    Set rs_person = Conn.Execute("SELECT butik_ID, fornamn, efternamn FROM personal WHERE butik_ID='"& butik &"' AND butikschef=JA")
  Response.Write " "& rs("telefon") &" <br>"
  Response.Write " "& rs("butik_ID") &" <br>"
  Response.Write " "& rs_person("fornamn") &" <br><br>"
  rs_person.Close
  Set rs_person = Nothing
  rs.MoveNext
  Loop
  rs.Close
  Set rs = Nothing
End If
%>


Är det ett bättre sätt? Fick det dock inte att fungera men är det mer rätt rent tekniskt ang Asp/Sql?
Fick meddelande: Data type mismatch in criteria expression.

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:26:47 - Andreas Hillqvist

<%
Dim ort
Dim strSQL

    ort = Request.QueryString("ort")
    If ort <> "" Then
        Set cmd = CreateObject("ADODB.Command")
        Set cmd.ActiveConnection = conn
        cmd.CommandText = "SELECT butiker.butik_ID, butiker.telefon, personal.fornamn, personal.efternamn" & vbCrLf & _
            "FROM personal INNER JOIN butiker ON personal.butik_ID = butiker.butik_ID" & vbCrLf & _
            "WHERE butiker.ort = @ort AND personal.butikschef = True"
    
        Set rs = cmd.Execute(, Array(ort))

        Do Until rs.EOF 
            Response.Write " "& rs("telefon") & " <br>"
            Response.Write " "& rs("butik_ID") & " <br>"
            Response.Write " "& rs("fornamn") & " <br><br>"
            'Response.Write rs2("fornamn")<br><br>
            rs.MoveNext
        Loop
        rs.Close
        Set rs = Nothing
    End If
%>


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:32:42 - Peter Björklund

Att använda JA i butikschef=JA är inte rätt. -1 ger TRUE och 0 ger FALSE.


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:34:07 - Mikael Kristiansson

Där ser man, då har man lärt sig nått nytt idag :)


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-24 10:43:55 - Mikael Kristiansson

Hej Andreas,

Det fungerade Kanon!

Orkar du berätta mer om:
1. cmd.ActiveConnection
2. cmd.CommandText
3. Set rs = cmd.Execute(, Array(ort))
4. & vbCrLf & "FROM personal INNER JOIN butiker ON personal.butik_ID = butiker.butik_ID" & vbCrLf & _
"WHERE butiker.ort = @ort

Annars Stort tack!

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-24 11:45:31 - Andreas Hillqvist

Det är det det finns dokumentation för. :oP

Men koden skyddar mot SQL injection. Vilket din kod var sårbar för.
Commandobjektet används för att köra frågor, anropa stored procedure, osv.


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-24 12:19:35 - Mikael Kristiansson

Okej!

Får kolla upp mer då tid ges...

Tack iallafall!

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-25 07:29:56 - Mikael Kristiansson

Hej,

Försökte få till Sql-frågan så att den hämtade ur tre tabeller!

"SELECT butiker.butik_ID, butiker.butik, butiker.gatuadress, butiker.postnummer, butiker.ort, butiker.telefon, personal.fornamn, personal.efternamn, oppettider.man_fre" & vbCrLf & "_
FROM (personal INNER JOIN butiker ON personal.butik_ID = butiker.butik_ID)_
INNER JOIN oppettider ON oppettider.butik_ID = butiker.butik_ID" & vbCrLf & "_
WHERE butiker.ort = @ort AND personal.butikschef = True"


Det som är tilllagt är hämtningen av oppettider.man_fre samt då en till inner join

Får: No value given for one or more required parameters.
Set rs = cmd.Execute(, Array(ort)) // pekar på denna rad (såklart)

Misstänker att det är oppettider som Inte stämmer eller...

Micke


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-25 10:58:09 - Andreas Hillqvist

Det är troligt att du stavat fel på ett kolumnnamn. Var vänlig att kontrolera dessa mot din databas.

Jag skulle radbryta frågan på följande sätt:

strSQL = "SELECT butiker.butik_ID, butiker.butik, butiker.gatuadress, butiker.postnummer, butiker.ort, butiker.telefon, personal.fornamn, personal.efternamn, oppettider.man_fre" & vbCrLf & _
         "FROM (personal INNER JOIN" & vbCrLf & _
         "    butiker ON personal.butik_ID = butiker.butik_ID) INNER JOIN " & vbCrLf & _
         "    oppettider ON oppettider.butik_ID = butiker.butik_ID" & vbCrLf & _
         "WHERE butiker.ort = @ort AND personal.butikschef = True" & vbCrLf


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-25 11:16:09 - Mikael Kristiansson

Hej,

Det är ordnat!
Det var så "dumt" att jag hade ändrat fältnamnet i tabellen men Inte uppdaterat db på servern :)
Så fältet jag tittade på var den jag ändrat lokalt...

Stort Tack, faktiskt lärt mig nått nytt genom detta inlägget :)

Micke


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-29 21:40:46 - Mikael Kristiansson

Hej (Andreas),

Fått (Du gav mig) ett förslag på en Sql-sträng innehållande detta:

Dim cmd
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = Conn
cmd.CommandText = "tjolahopp"
Set rs = cmd.Execute


Men då jag skulle "stänga" rs-et med rs.Close så kunde den inte köra Sql-n för den var stängd även om stängningen kom Efter körningen, behöver man inte stänga varken rs-et eller Conn-et då man kodar på detta sätt?

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-31 00:12:14 - Andreas Hillqvist

Var stänger du recordsetet? I min kod sker detta efter itereringen över posterna eftersom recordsetet då inte längre behövs.

Jag har sett folk göra inkludfiler där det uppnar recordset i huvedet och stänger det i foten. Detta är dålig programmering och borde bestraffas med spöstraff.


Svara

Sv:Sql-fråga till två databas-tabeller

Postades av 2005-08-31 08:19:28 - Mikael Kristiansson

Om det handlar om att göra en Do Until rs.EOF så stänger jag det efter rs.MoveNext : Loop!
Annars om det handlar om Insert eller Uppdate så stänger jag det efter körningen och Så klart Innan Redirect :)

Fungerar det på samma sätt om man använder Command istället för Set rs = Conn.Execute?

Micke


Svara

Sv: Sql-fråga till två databas-tabeller

Postades av 2005-08-31 20:16:35 - Andreas Hillqvist

Conn.Execute skapar ett command internt.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 602
27 953
271 705
5 661
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies