woormsen: abfragen in funktionen packen

Hallo zsammen, habe in meinem skript ein select case... für den unten
geposteten teil sieht dies so aus

Case "getCShopper" : response.ContentType = "text/xml"

strSQL = "SELECT * FROM CShopper;"
set rs = conn.execute(strSQL)

if not rs.eof then
Response.Write "<mc><nm>getCShopper</nm><pm>"

do while not rs.eof

Response.Write "<a>"
Response.Write "<b>" & rs.Fields("ShopperID").value & "</b>"
Response.Write "<b>" & rs.Fields("Name").value & "</b>"
Response.Write "<b>" & rs.Fields("FirstName").value & "</b>"
Response.Write "<b>" & rs.Fields("HomeAddress").value & "</b>"
Response.Write "<b>" & rs.Fields("MobilePhone").value & "</b>"
Response.Write "<b>" & rs.Fields("EMail").value & "</b>"
Response.Write "<b>" & rs.Fields("ProfiTerminalID").value & "</b>"
Response.Write "<b>" & rs.Fields("PublicKeyShopper").value & "</b>"
Response.Write "<b>" & rs.Fields("VehicleType").value & "</b>"
Response.Write "<b>" & rs.Fields("ActicePerDay").value & "</b>"
Response.Write "<b>" & rs.Fields("CapacityRestriction").value & "</b>"
Response.Write "<b>" & rs.Fields("PhoneProfiTerminal").value & "</b>"
Response.Write "<b>" & rs.Fields("TransportBoxCapacity").value & "</b>"
Response.write "</a>"
rs.movenext
loop
Response.Write "</pm></mc>"
end if

rs.close

wenn ich nun den nächsten select ..bsp. cShop habe, den ich für diesen fall auch auslese, der aber natürlich andere fields hat und auch weniger
, wie kann ich das in eine Funktion packen und aufrufen.. bin da nicht unbedingt bewandert und will das lernen...

gruss aus bayern

  1. Also, ich würd' für jeden Shop/Tabelle einen Array anlegen, der alle in der jeweiligen Tabelle enthaltenen Feldnamen enthält. Diesen Array würde ich dann an eine Funktion "Anzeigen" übergeben.
    Desweiteren übergebe ich auch die ausgelesene Datenmenge mit an die Anzeige-Funktion.
    Nun kannst du mit einer Schleife jedes einzelne Feld und den dazu ermittelten Wert ausgeben :-)

    MfG, Kay

    1. Nun kannst du mit einer Schleife jedes einzelne Feld und den dazu ermittelten Wert ausgeben :-)

      MfG, Kay

      ...und wie leg ich diesen array an ?? hoffe die frage
      is vertretbar...

      1. Dim CShopper(1 To 3)

        CShopper(1) = "ShopperID"
        CShopper(2) = "Name"
        CShopper(3) = "FirstName"

        Könnte man z.B. in eine Datei packen und die dann auslesen. Da hätte man vielleicht nicht ganz so viel zu schreiben...

        MfG, Kay

        1. Hi, hallo

          Könnte man z.B. in eine Datei packen...

          oder aber auch in die Datenbank selbst ;-)

          Tschau, tschüß,
          Frank

  2. Hi, hallo

    fangen wir mal hier an:

    • den Aufwand mit x mal Response.Write kannst du dir bei geschickterer Programmierung sparen ... dazu später

    • du mußt dir genaue Gedanken machen, was du wann aus welchem Grund wie anzeigen willst

    • du mußt dir dazu Relationen und Bedingungen denken

    • dann mußt/wirst du sehen, welche Bereiche immer wieder das gleiche logische Schema hätten

    • dann weißt du auch, was du in eine Funktion kapseln könntest und kannst dich an die Arbeit machen, das Ding zu schreiben

    ....
    für den einfachen Fall, daß du alle Felder einer Tabelle ausgeben willst, geht folgendes Konstrukt viel kürzer und universaler verwendbar:

    sql_qr = "SELECT * FROM tbl_1"
    set rs = conn.execute(sql_qr)

    Do Until rs.EOF
       for each feld in rs.fields
           Response.Write "<b>" & feld.value & "</b>"
       next
       rs.moveNext
    Loop

    damit sollte schon deutlich werden, was du in einer Funktion kapseln kannst, nämlich die endgültige Ausgabe in HTML der Felder

    nur so als Hilfe: das SQL-Statement wird sich evt. von CASE zu CASE unterscheiden, weil du andere Tabellen hast.

    aber du könntest in deinem SELECT CASE den SQL-String zusammenbauen und an die Ausgabeprozedur (Funktion nur, wenn du einen Rückgabewert benötigst) übergeben, dorthin kannst du dann auch noch andere Sachen mit übergeben, die sich potentiell ändern könnten

    ich hoffe, du konntest mir folgen ... dann darfst du jetzt freihändig weiterdenken

    Tschau, tschüß,
    Frank