Avatar billede peter_holst Praktikant
11. marts 2005 - 09:45 Der er 5 kommentarer og
1 løsning

Script til visning af data fra korrekt felt i databasen.

Hej

Jeg har følgende SGL Sætning som henter data fra databasen:

strSQL = "Select * from Personer WHERE Afdeling1 = 'Administration' OR Afdeling2 = 'Administration' OR Afdeling3 = 'Administration' OR Afdeling4 = 'Administration' OR Afdeling5 = 'Administration' ORDER BY Fornavn"

Som der kan læs ud fra den henter den de personer der er medlem af "Administration", hvad entet der er deres 1. 2. 3. 4. eller 5. afdeling.

På min ASP side har heg lavet et liste hvor personerne bliver fremstilet med navn, funktion, telefon og et link.

I Databasen er der felter til 5 afdelinger (Afdeling1, Afdeling2 osv.) samt felter med funktioner (Funktion1, Funktion2 osv.). Funktion1 hører så til Afdeling1 osv. (Fx. Bogholder i Administration)

En Person:

Fornavn: Bent
Efternavn: Jensen
Funktion1: Formand
Afdeling1: Hovedbestyrelsen
Funktion2: Forretningsfører
Afdeling2: Administration

Når jeg så laver en liste over Administration og vil have Funktionen vist for Administration, hvordan kan jeg så gøre det, så det virker uanset om Funktionenen der hører til Administration kommer fra #1/2/3/4 eller 5.
Hmm, jeg har sgu lidt svært ved at forklare dette.
Jeg prøver lige med en teoretisk idé:

Jeg viser data på denne måde:
<% Response.Write rs("Funktion1") %>

Men det skal virke på denne måde:

Tjeck "Afdeling1", 2/3/4/5 for hvilken en der indeholder "Administration". Resultater kunne fx være "Afdeling3". Den skal så skrive indholdet af "Funktion3" på hjemmesiden ( <% Response.Write rs("Funktion3") %> ).

Håber virkelig i kan gennemskue hvad der er jeg vil.

Med venlig hilsen og på forhånd tak.
Peter Holst
Avatar billede netro Nybegynder
11. marts 2005 - 10:34 #1
Jeg ser ikke umiddelbart anden mulighed, end at du udtrækker alle afdelinger og funktioner for pågældende post og så tjekker dem bagefter.

strSQL = "Select * from Personer WHERE Afdeling1 = 'Administration' OR Afdeling2 = 'Administration' OR Afdeling3 = 'Administration' OR Afdeling4 = 'Administration' OR Afdeling5 = 'Administration' ORDER BY Fornavn"
Set rs = objConn.Execute(strSQL)

While Not rs.EOF
  Response.Write "<br><br>" & rs("Fornavn") & " " & rs("Efternavn") & "<br>"
  For i = 1 To 5
    If rs("Afdeling" & i) = "Administration" Then
      Response.Write rs("Funktion" & i)
      Exit For
    End If
  Next
  rs.MoveNext
Wend
Avatar billede sanne Nybegynder
11. marts 2005 - 10:51 #2
hvad med at lave en særskilt tabel 'afdelinger' og her oprette de afdelinger der findes og så en mange til mange relation med tabellen 'funktion'.
Hvis du så har en ansat som i dit eksempel med to funktioner, så bliver der to poster i tabellen 'funktion' med id på den ansatte, id på afdelingen samt en titel?
Avatar billede peter_holst Praktikant
11. marts 2005 - 11:37 #3
Netro: Da jeg ikke så meget forstand på det her, forstår jeg ikke helt hvad jeg skal gøre. Prøv om du kan hjælpe mig, ved at sætte det ind i koden nedenfor som jeg har det nu:

<% Do While Not rs.EOF
%>

<tr>
<td width="150"><% Response.Write rs("Fornavn") %>&nbsp;<% Response.Write rs("Efternavn") %></td>
<td width="150"><% Response.Write rs("Funktion1") %></td>
<td width="110"><% Response.Write rs("Telefon") %></td>
<td width="50"><a href="#" onClick="MyWindow=window.open('kontakt_profil.asp?ID=<%=rs("ID")%>','MyWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=450,height=250,left=300,top=200'); return false;">Info</a></td>
</tr>
           
<% rs.MoveNext
Loop  %>


Sanne: Jeg vil gerne undgå at ændre databasen for meget da næsten alt andet er programeret færdigt til at passe databasen som den er nu.
Avatar billede netro Nybegynder
11. marts 2005 - 14:06 #4
Jeg ville nu også benytte flere tabeller, som Sanne foreslår. Altså udskille data i en funktionstabel og en afdelingstabel.

Med lad os bare holde fast i dit eksisterende design.


<% Do While Not rs.EOF
%>

<tr>
<td width="150"><% Response.Write rs("Fornavn") %>&nbsp;<% Response.Write rs("Efternavn") %></td>
<td width="150">
<%
  For i = 1 To 5
    If rs("Afdeling" & i) = "Administration" Then
      Response.Write rs("Funktion" & i)
      Exit For
    End If
  Next
%>
</td>
<td width="110"><% Response.Write rs("Telefon") %></td>
<td width="50"><a href="#" onClick="MyWindow=window.open('kontakt_profil.asp?ID=<%=rs("ID")%>','MyWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=450,height=250,left=300,top=200'); return false;">Info</a></td>
</tr>
           
<% rs.MoveNext
Loop  %>

Et lille tip i øvrigt. Fremfor at skrive <% Response.Write rs("Fornavn") %>, kan du nøjes med <% = rs("Fornavn") %>
Avatar billede peter_holst Praktikant
13. marts 2005 - 14:32 #5
Yes, netro. Det var lige hvad der skulle til. Tak skal du have.
Du må hellere lave et lille svar, så du kan få dine points.
Avatar billede netro Nybegynder
13. marts 2005 - 14:54 #6
- kommer 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
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