Avatar billede jesperwerge Nybegynder
27. marts 2005 - 13:02 Der er 23 kommentarer og
1 løsning

drop dowm med distinct valg tilknyttet

Hej

Jeg har et modul som styre et loppemarked, hvor det er muligt at redigere bestilingerne. i modulet skal det være muligt at tildele de 58 pladser som der er plads til. dette loppemarked kommer over mange datoer, så alt er delt omkring de mulige datoer som loppemarkedet afholdes på.

jeg har en side hvor jeg kan redigere bestillingerne fra en database (MS Access). I databasen er der et X antal bestillnger, dog max 58 per mulige dato. Dato kan have fra 1-23 forskellige. Det betyder at samme person kan godt have 2 bestillinger men på 2 forskellige datoer. (Håber dette give lidt menning)

Målet er nu at når man vælger hvilken plads af de 58 en bestillng skal have fra en dropdown boks, skal man kun se de muligheder som ikke er valgt på forhånd. så man ikke kan vælge samme plads 2 gange på samme dato.

min Access database består af 3 tabler, en med alle informationer om den enkelte bestilling og to tabeller som henholdvis indeholder datoerne for loppemarekedet og en med de mulige pladser.(max 58)

hvordan kan jeg scripte at jeg kun får vist de muligheder som ikke er valgt ???
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 09:50 #1
Min dropdown ser således ud nu:

Den henter alle fra den ene tabel og hvis feltet fra hoved tabel er det samme er den valgt.

<select size="1" name="txtStadeNr">
                <option value="0">0</option>
                <%
                Dim sel_1
                Dim strRSStadeNr
               
                strRSStadeNr = strStadeNr
               
                SET oRS3= oDB.execute("SELECT AutoID,Stadenr_tal FROM Stadenr")               
                Do While Not oRS3.EOF                   
                    If strRSStadeNr = oRS3("StadeNr_tal") Then
                        sel_1="selected"
                        else
                        sel_1=""
                    end if
                %>   
                <option value="<%= oRS3("Stadenr_tal") %>" <%= Sel_1%>><%= oRS3("Stadenr_tal") %></option>
                <%
                    oRS3.MoveNext
                Loop
                %>
                </select>
Avatar billede moejensen Nybegynder
28. marts 2005 - 13:24 #2
jeg troe ikk helt jeg forstår hvad du mener. Vil du have lavet din dropdown om, så den kun viser de ledige pladseer for en bestem dato?
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:27 #3
ja - det er menningen at der kun skal vises de stade nr for en gældene dato som ikke er valgt og samtidig vil jeg gerne beholde det med at når jeg henter den op igen så er den stade som er valgt markeret.
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:28 #4
Jeg forsøger lige nu bare at få vist de rigtige stade nr og har brugt følgende code:

        SQL = "select DISTINCT main.StadeNr, main.Dato, Stadenr.Stadenr_tal from main left join Stadenr on main.StadeNr <> Stadenr.Stadenr_tal WHERE Dato='10/04/05' "
        Set rs=oDB.Execute(SQL)
        response.write "<table>"
    do while not rs.EOF
        response.write "<tr>"
        Response.Write "<td>" & rs("Stadenr_tal")
          if ""&rs("StadeNr")<>0 then Response.write "<br>  Optaget"
          Response.Write "</td>"
          Response.Write "</tr>"
          rs.Movenext
    loop
        Response.Write "</table>"

%>

Men det virker ikke helt efter hensigten, den viser alle stade nr det antal gange som der er valgt et stade nr - hvis det giver menning
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:30 #5
Så i bund og grund vil jeg gerne have en liste med stade nr hvor der kun vises de stade nr som ikke er valgt i forvejen - for at undgå at lave en dobbelt bookning af samme stade på samme dato
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:36 #6
jeg har et link til selve modulet hvis du vil se hvad jeg mener - hvis det kan hjælpe?
Avatar billede moejensen Nybegynder
28. marts 2005 - 13:39 #7
det kunne nok være meget godt at se det.
Avatar billede moejensen Nybegynder
28. marts 2005 - 13:41 #8
kan du kort skitsere din database. Du skal vel i princippet bare lave en SQL der trækker pladserne for en valgte dag ud minus de pladser der allerede er optaget.
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:43 #9
hehe - det forstår jeg godt

linket er : http://www.werges.dk/admin/admin.asp

når du kommer på listen er det virgtigt at du vælger den bestilling som hedder JESPER WERGE - for de andre er LIVE data  - tak :o)

de tre Stadenr 1/ stedenr 2 / stadenr 3 dropdown er dem som jeg gerne vil have de viser de tilgængelige stadenr. i feltet under de tre dorpdows er en liste af nr som er dem som er valgt, det er egentlig dem som skal tages ud af dropdown boksne - hver af de 3 bokse har deres efet felt i databasen. og denne excludering af stadenr skal være tværgående imellem de 3 bokse.

/Jesper
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 13:51 #10
databasen ser således ud:

tabel:  main
felter: AutoID, StadeNr, StadeNr_1, StadeNr_2, StadeAntal
beskr:  dette er hovedtabellen og indeholder en del mere fleter, som ikke er relevante i denne sammenhæng. i disse 3 felter skriver jeg det valgte stadenr fra dropdown boksene. Der er kun tal i de dropdown bokse, hvis feltet StadeAntal = 1 så er første boks udfyld, = 2 så er to af boksene og slut, = 3 så er alle tre bokse udfyldt

tabel:  Stadenr
Felter: AutoID, Stadenr_tal
Beskr:  denne tabel indeholder kun de mulige stadenr - i dette tilfælde 1 - 50

i de tre dropdown bokse vis indholdet af tabel Stadenr. men jeg vil gerne have sxkluderet dem som allerede er valgt og som står i tabel main i feltet StadeNr/StadeNr_1 og StadeNr_2.

giver dette menning?
Avatar billede moejensen Nybegynder
28. marts 2005 - 14:02 #11
hmm, jeg er sku nok lidt tungnem ;-) det er jo også helligdag.

I de tre bokse skal kun vises nr. på de pladser der er ledige, sam t de tre pladser der er i den pågældende bestilling?
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 14:10 #12
Kan godt forstå hvis ud er forvirret, jeg har svært ved at forklare mig.

som bestillingen JESPER WERGE inde på linket, der er 2 af de 3 bokse udfyldt, hvis du klikker på den 3 boks står der kun 0 i den, da boksen ovenfor "Antal bestilte stader" = 2. (også en dorpdown)

lige nu viser begge bokse alle tal fra 1 - 50 og der er SELECTED på de tal som er valgt. (når main.StadeNr = Stadenr.Stadernr_tal så er det tal SELECTED)

Istedet for at alle 1 - 50 tal er i boksene var det menningen at kun de tal som ikke er valgt skal stå. (det skulle forhindre at stade nr. 4 ikke bliver valgt 2 gange på samme dato)

Hjælper det lidt?
Avatar billede moejensen Nybegynder
28. marts 2005 - 14:22 #13
jeg tror jeg er ved at have styr på det. Sidder lige og overvejer om der er en smart måde hvor du kan lave det i SQL. Hvilken database bruger du?
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 14:25 #14
en dødelige Access Database - jeg sidder også og grubler over det hehe
Avatar billede moejensen Nybegynder
28. marts 2005 - 14:37 #15
hmm, jeg mener ikke man kan lave subselects i Access. Så bliver du nok nød til at først at trække alle reservere paldser ud fra StadeNr, StadeNr_1, StadeNr_2 i main tabellen. henter du Stadenr_tal fra Stadenr (behøver de at have en tabel, hvis der altid er 50 pladser?) når du skriver de 50 pladser ud, tjekker du samtidig om pladsen er taget i den første forspørgsel
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 14:41 #16
jo jeg kan godt følge dig - samme tanke har jeg haft. jeg har forsøgt at trække data fra begge tabeller i 2 arrays og så sammenligne dem. Men jeg er ikke stærk nok i arrays til at få det til at virke. grunden til at stadenr er i en tabel er at det kan variere med antalet, så for at holde styr på det har jeg lavet det i en tabel.

er du god til arrays?
Avatar billede moejensen Nybegynder
28. marts 2005 - 15:03 #17
det er en lidt kluntet løsning, men prøv den her:

<%
    Dim strOptStadeNr
    Set rs = Conn.execute("SELECT StadeNr, StadeNr_1, StadeNr_2 FROM main WHERE dato = 'den aktuelle dato'")
    strOptStadeNr = ","
    do until rs.eof or rs.bof
        strOptStadeNr = strOptStadeNr & rs("StadeNr") &","& rs("StadeNr_1") &","& rs("StadeNr_2") &","
        rs.movenext
    loop
%>

<select size="1" name="txtStadeNr">
<option value="0">0</option>
<%
    Dim sel_1
    Dim strRSStadeNr
   
    strRSStadeNr = strStadeNr
   
    SET oRS3= oDB.execute("SELECT AutoID,Stadenr_tal FROM Stadenr")               
    Do While Not oRS3.EOF
        If inStr(strOptStadeNr,","&oRS3("Stadenr_tal")&",") = 0 Then                 
            If strRSStadeNr = oRS3("StadeNr_tal") Then
                sel_1="selected"
            else
                sel_1=""
            end if
%>   
            <option value="<%= oRS3("Stadenr_tal") %>" <%= Sel_1%>><%= oRS3("Stadenr_tal") %></option>
<%
        End if
      oRS3.MoveNext
Loop
%>
</select>
Avatar billede moejensen Nybegynder
28. marts 2005 - 15:04 #18
husk at skifte den aktuelle dato ud i denne linie:

Set rs = Conn.execute("SELECT StadeNr, StadeNr_1, StadeNr_2 FROM main WHERE dato = 'den aktuelle dato'")
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 16:09 #19
Hej igen, jeg skulle lige have lidt frokost og energi

det virker med selekteringen af de rigtige stadenr - så det er meget fint - tusind tak.

men den viser ikke den som er valgte hvis man går ind på en bestillingen
har du nogen ide om hvordan dette kan løses?

og du får selvølgelig points :o)

tak for hjælpen
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 16:22 #20
min fejl - det virker præsist som det skal. sorry

Jeg er ikke helt med på hvad du lgør, tror jeg.

laver du en streng hvor du lægger alle de valgte stadeNr fra de tre felter ned i og så matcher dem med udtrækket fra den tabel med de alle stadenr_tal - er det rigtigt forstået?

håber du har tid til at forklare kort hvad du gør.

Men tusind tak for din hjælp - der er rart at man kan få lidt hjælp - når man selv er tungnem hehe.
Avatar billede moejensen Nybegynder
28. marts 2005 - 16:41 #21
det er lige det jeg gør, så du har forstået det rigtigt, alternativt skulle alle valgte pladser lægges i et array, der så skulle gennemløbes for hver af de 50 pladser.
Avatar billede jesperwerge Nybegynder
28. marts 2005 - 20:15 #22
hej moejensen igen,

jeg har lige en ting jeg bliver nød til at spørge om. den løsning du har lavet gør præcist det jeg efterspurgte  - dog er jeg løbet ind i et mindre problem som jeg vil høre om du kan hjælpe med, hvis ja er det med nye points

når dropdownen ekskludere de valgte tagerden selvfølgelig også den som er valgt for den gældene post, hvilket betyder at min select aldrig har noget at selecte for tallet er jo taget væk i sammenligningen af strengen og feltet :o)

kan jeg i strengen sige at den ikke skal medtage strStadeNr, strStadeNr_1 og strStadeNr_2
Avatar billede moejensen Nybegynder
29. marts 2005 - 09:31 #23
du retter bare sql'en så den ikke tager den valgte post med:

Set rs = Conn.execute("SELECT StadeNr, StadeNr_1, StadeNr_2 FROM main WHERE dato = 'den aktuelle dato' AND autoID <> det valgte id")
Avatar billede jesperwerge Nybegynder
29. marts 2005 - 18:36 #24
tja enkelt kan det gøres - endnu engang tusind tak
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