Robert Lacroix: Datenbankzugriff

Ich greife über ASP auf eine Access Datenbank zu und will damit eine zugangskontrolle verwirklichen. Also habe ich eine Access Datenbank angelegt, mit der Tabelle User, den Spalten Name, Passwort und Leader. Jetzt will ich die User aus der Tabelle User auslesen, die Leader = 1 haben, und dann auch gleich ein html select machen, in dem man diese auswählen kann. Also habe ich
<%
      cnString = "DRIVER={Microsoft Access Driver (*.mdb)}; "
      cnString = cnString & "DBQ=" & Server.MapPath("../soldiers.mdb")
      Application("ASPForumDSN") = cnString
  
      Set Conn = Server.CreateObject("ADODB.Connection")
   Conn.Open Application("ASPForumDSN")
   SQL =       "SELECT * FROM User WHERE (((Leader = 1)))"
   Set userget = Conn.Execute(SQL)
   User1 = userget("Name")
%>

<body bgcolor="black" text="red">
<FORM NAME=Records ACTION="postnews.asp" METHOD=POST>
<select name="login" size="1">
<option> <%= User1%>
</select><br>
<input type=password size=16 name="pass"><br>
<INPUT TYPE=SUBMIT NAME=UPDATE VALUE="Login">
</form>
</body>
</html>

Dass funktioniert sehr gut, wenn ich nur einen User habe, bei dem Leader = 1 ist. Wie kann ich das bei mehreren Usern machen ?

Danke, Robert.

  1. <body bgcolor="black" text="red">
    <FORM NAME=Records ACTION="postnews.asp" METHOD=POST>
    <select name="login" size="1">
    <option> <%= User1%>
    </select>

    <input type=password size=16 name="pass">

    <INPUT TYPE=SUBMIT NAME=UPDATE VALUE="Login">
    </form>
    </body>
    </html>

    Dass funktioniert sehr gut, wenn ich nur einen User habe, bei dem Leader = 1 ist. Wie kann ich das bei mehreren Usern machen ?

    Danke, Robert.

    Hallo,

    zu allerserst möchte Dir ans Herz legen, conn.execute nicht für Select-Abfragen zu verwenden, sondern höchstens für Upadte, Insert, Create Table, ...

    Statt dessen solltest Du Dir ein eigenes Recordset instantiieren.
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
        conn.open "ASP_Kurs","",""
    SQL = "SELECT * FROM User WHERE Leader = 1"

    ' --- Hier kommt Dein Recordset
    Set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open SQL, conn, 3, 3

    Response.Write "<select name=""login"" size=""1"">"

    Do While Not rs.EOF
        Response.Write "<option value="<%=rs.Fields("Name")%>">
        rs.MoveNext
    Loop

    Response.Write "</select>"

    rs.Close
    Set rs = Nothing
        conn.Close
    Set conn = Nothing
    %>
    ...

    Empfehlen würde ich Dir auf jeden Fall mal die Seite ]link:http://www.asp-database.de]. Ich denke, daß dort einiges zu finden ist, das für Dich interessant sein könnte.

    Tschau, Stefan

    P.S.: Falls ich einen Dreckfuhler im Code habe, bitte ncht hauen.

    1. Hallo,

      natürlich muß es in der Zeile
      Response.Write "<option value="<%=rs.Fields("Name")%>">
      heißen,
      Response.Write "<option value=" & rs.Fields("Name") & ">" & rs.Fields("Name")

      Und der Link soll auf [ink:http://www.asp-database.de] verweisen.

      Tschau, Stefan

      1. Vielen Dank für Deine Mühe.

        Hallo,

        natürlich muß es in der Zeile
        Response.Write "<option value="<%=rs.Fields("Name")%>">
        heißen,
        Response.Write "<option value=" & rs.Fields("Name") & ">" & rs.Fields("Name")

        Und der Link soll auf [ink:http://www.asp-database.de] verweisen.

        Tschau, Stefan