Detlev: Inhalt eines Datenbankfeldes abfragen

Ich möchte in einer Datenbank den Inhalt des Feldes abfragen.

Beispiel:
Kurzreferenz;Anhang;Verfasser
Blumen;blumen1.doc;Meier
Pflanzen;;Müller

Bei einer Suchabfrage soll bei "Blumen" das Wort Blumen als Link zur Datei blumen1.doc verwendet werden. Da für Pflanzen aber keine Datei eingetragen ist sollte hier auch kein Link erscheinen. Wer kann mir hier den entscheidenden Tip geben wie ich nicht zum Namen des Datenfeldes "Anhang" komme sonder zum Inhalt des Feldes.

Detlev

  1. Hallo Detlev

    Kurze Zwischenfrage:

    In welcher serverseitigen Programmiersprache soll das ganze realisiert werden:
    [ ] Perl,
    [ ] PHP,
    [ ] ASP mit VisualBasic,
    [ ] ASP mit Javascript,
    [ ] JSP,
    [ ] andere: .............

    Bite ankreuzen.

    Grüsse
    Tom

    1. Hallo Detlev

      Kurze Zwischenfrage:

      In welcher serverseitigen Programmiersprache soll das ganze realisiert werden:

      »»  [ ] Perl,
      »»  [ ] PHP,
      »»  [ ] ASP mit VisualBasic,
      »»  [ ] ASP mit Javascript,
      »»  [ ] JSP,
      »»  [ ] andere: .............

      Bite ankreuzen.

      Grüsse
      Tom

      Hallo Tom für mich wäre Javascript am besten.

    2. Hallo Detlev

      Kurze Zwischenfrage:

      In welcher serverseitigen Programmiersprache soll das ganze realisiert werden:

      »»  [ ] Perl,
      »»  [ ] PHP,
      »»  [ ] ASP mit VisualBasic,
      »»  [x] ASP mit Javascript,
      »»  [ ] JSP,
      »»  [ ] andere: .............

      Bite ankreuzen.

      Grüsse
      Tom

      Javascript ist für mich besten. Hier kenne ich mich ein wenig aus.
      Detlev

      1. Hallo Detlev

        Also ASP mit Javascript.

        Ich nehme an, Deine Daten befinden sich in einer Datenbank, die Du über ODBC abrufen kannst.

        Dazu muss auf dem Web-Server (beim Internet Information Server) eine ODBC-Datenquelle eingerichtet werden.
        Der Name soll 'myDB' heissen, User und Passwort sind nicht definiert.
        In der Datenbank sei eine Tabelle 'Referenzen' mit den von Dir genannten Feldern 'Kurzreferenz', 'Anhang', 'Autor' angelegt.

        <%@ LANGUAGE=JScript%>
        <!--#include file="Adojavas.inc"-->
        <% // ASP-Code in JScript

        // Aufbau der DB-Connection  
        db = Server.CreateObject("ADODB.Connection");  
        db.Open("myDB");  
          
        // Abfrage der Referenzen  
        rs = Server.CreateObject("ADODB.RecordSet");  
        SQL = "SELECT Kurzreferenz, Anhang, Autor FROM Referenzen";  
        rs.open(SQL, db, adOpenDynamic, adLockOptimistic);  
        

        %>

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
        <html>
        <head>
          <title>Referenzen</title>
        </head>
        <body bgcolor="#FFFFFF" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>
          <%
          while(!rs.EOF)
          {
           if(rs("Anhang").value != null)
           {
            Response.Write("<a href=" + rs("Anhang").value + " target='_self'>" + rs("Kurzreferenz").value + "</a> <i>(Autor:" + rs("Autor").value + ")</i><br>");
           }
           else
           {
            Response.Write("" + rs("Kurzreferenz").value + " <i>(Autor:" + rs("Autor").value + ")</i><br>");
           }
           rs.Move(1);
          }
          %>
        </body>
        </html>

        Es hat etwas gedauert, bis ich das Beispiel zusammen hatte, denn JScript ist nicht gleich VBScript *grummel*.

        Man beachte in JScript die folgenden Besonderheiten (gegenüber VBScript, welches unter den ASP-Programmieren wohl verbreiteter sein dürfte)

        • Jede Zeile mit Semikolon abschliessen
        • If- und Schlaufen-Blöcke in geschweiften Klammern
        • Die Zuweisung von Objektinstanzen geschieht nicht über Set, sondern über eine normale Zuweisung mit dem Gleichzeichen
        • Prüfung, ob Feldinhalt null ist geschieht immer über die Abfrage der value-Eigenschaft.
            rs("Anhang") == null   // falsch: liefert true, falls das Feldobjekt in dem Recordset vorhanden ist.
            rs("Anhang").value == null // richtig: liefert true, falls der Wert des Feldes "Anhang" im aktuellen Datensatz Null ist
        • Die Recordset-Methoden MoveFirst(), MoveNext(), etc. stehen nicht zur Verfügung. Die Bewegung des Datensatzzeigers muss über die Methode rs.Move(Anzahl Datensätze) erfolgen.
        • JScript ist case-sensitive
        • Zur Verwendung von ADO-Konstanten (adOpenDynamic, adLockOptimistic, etc.) muss die Datei 'Adojavas.inc' eingebunden werden.
            Die Datei befindet sich normalerweise auf dem IIS unter "C:\Programme\Gemeinsame Dateien\System\ADO"

        Weitere Informationen zu ASP, JScript, VBScript und ADO unter http://www.chilisoft.com/caspdoc/

        Ich hoffe, dass das etwa das ist, was Du suchst.

        Grüsse
        Tom

        1. Ich hoffe, dass das etwa das ist, was Du suchst.

          Grüsse
          Tom

          Hallo Tom,
          ich bin begeistert. Nun musste ich erst mehr als ein halbes Jahrhundert alt werden um in so kurzer Zeit so viel Hilfe zu erfahren. Bisher hatte ich noch keine Erfahrung mit einem Forum. Aber nun werde ich wohl regelmäßig mal reinschauen. Vielleicht kann ich dem einen oder anderen auch mal helfen

          Detlev

    3. Hallo Detlev

      Kurze Zwischenfrage:

      In welcher serverseitigen Programmiersprache soll das ganze realisiert werden:

      »»  [ ] Perl,
      »»  [ ] PHP,
      »»  [ ] ASP mit VisualBasic,
      »»  [ ] ASP mit Javascript,
      »»  [ ] JSP,
      »»  [ ] andere: .............

      Bite ankreuzen.

      Grüsse
      Tom

      Hallo Ihr,

      na mit Javascript allein wird es nicht gehen. PHP, Perl oder ASP? ASP ist sicherlich einfacher zu verstehen für ungeübtere Programmierer. Aber was ist JSP?? JAVA SERVLET PROGRAMMING?

      Deshalb nochmal eine kürzere Ankreuzelfrage:

      [ ] PHP
      [ ] Perl
      [ ] ASP

      Gruß, Frank

      1. Hallo Frank

        Aber was ist JSP?? JAVA SERVLET PROGRAMMING?

        Fast richtig ;-)

        JSP = Java Server Pages, in analogie zu ASP = Active Server Pages
        Ähnlicher Aufbau wie ASP (auch mit <% %>-Tags, jedoch Java als interne Programmiersprache.

        Grüsse
        Tom

      2. Programmierer. Aber was ist JSP?? JAVA SERVLET PROGRAMMING?

        Deshalb nochmal eine kürzere Ankreuzelfrage:

        [ ] PHP
        [ ] Perl
        [X] ASP

        Gruß, Frank

        Hallo Frank,

        danke für Dein Interesse an meinem Problem. Mit dem Befehl

        <id="Test" datafld="Anhang">
        <script>alert(document.all.Test.dataFld)</script>

        bekomme ich den Feldnamen also "Anhang" ausgegeben. .value liefert mir aber nicht den Inhalt des Datenfeldes. Da der Inhalt des Datenfeldes aber problemlos auf dem Bildschirm angezeigt wird, wie unser großer Lehrmeister (dies ist nicht zynisch gemein) Stefan in dem Bereich tfbb.htm#a3 beschreibt, sollte es auch möglich sein den Inhalt des Datenfeldes für eine Abfrage zu nutzen. Leider reichen meine Kenntnisse in den anderen Sprachen nicht aus.

        Detlev

        1. Hi,

          okay, du hast ne Datenbank mit einer Tabelle, diese Tabelle hat 3 Spalten: Kurzreferenz,Anhang,Verfasser - die mit Daten gefüllt sind. hab ich das richtig verstanden? Wenn ja: Was is das für ne DB (SQL, Access, Oracle) und wie ziehst du die Daten aus der Tabelle raus?

          Wenn du mir die Facts gibst kann ich dir evt. noch weiter helfen.

          Gruß, Frank

          1. Hi,

            okay, du hast ne Datenbank mit einer Tabelle, diese Tabelle hat 3 Spalten: Kurzreferenz,Anhang,Verfasser - die mit Daten gefüllt sind. hab ich das richtig verstanden? Wenn ja: Was is das für ne DB (SQL, Access, Oracle) und wie ziehst du die Daten aus der Tabelle raus?

            Wenn du mir die Facts gibst kann ich dir evt. noch weiter helfen.

            Gruß, Frank

            Hallo Frank,

            danke das Du Dich mit meinem Problem befasst. Der Begriff Datenbank ist für die Tabelle sicherlich etwas hoch angesetzt. Ich benutze die Regeln die von Stefan Müntz unter DHTML (tfbb.htm) beschrieben sind für diese Aufgabe. Ich möchte eine HTML Seite aufbauen, die leicht pflegbar Literaturquellen mit einer Kurzreferenz verbindet. Da die Daten, also nicht nur die drei aus dem Beispiel, von mehreren Seiten benutzt werden erschien mir der Weg über die Zentrale xx.csv am besten.

            Detlev

            1. Hi,

              okay, du hast ne Datenbank mit einer Tabelle, diese Tabelle hat 3 Spalten: Kurzreferenz,Anhang,Verfasser - die mit Daten gefüllt sind. hab ich das richtig verstanden? Wenn ja: Was is das für ne DB (SQL, Access, Oracle) und wie ziehst du die Daten aus der Tabelle raus?

              Wenn du mir die Facts gibst kann ich dir evt. noch weiter helfen.

              Gruß, Frank

              Hallo Frank,

              danke das Du Dich mit meinem Problem befasst. Der Begriff Datenbank ist für die Tabelle sicherlich etwas hoch angesetzt. Ich benutze die Regeln die von Stefan Müntz unter DHTML (tfbb.htm) beschrieben sind für diese Aufgabe. Ich möchte eine HTML Seite aufbauen, die leicht pflegbar Literaturquellen mit einer Kurzreferenz verbindet. Da die Daten, also nicht nur die drei aus dem Beispiel, von mehreren Seiten benutzt werden erschien mir der Weg über die Zentrale xx.csv am besten.

              Detlev

              Hi Detlev,

              also wenn du im Besitz eines ASP-fähigen Servers bist (das ist dann zwangsweise ein NT-Server) nutze den Weg über ODBC. Lege dir einen Ordner auf deinem Server an, erstelle darin eine Textdatei (in der 1. Zeile schreibst du die Spaltenkonfiguration auf: Spalte;Spalte;Spalte)richte dann über Systemsteuerung->OSBC eine DB-Datenquelle (DSN) mit dem integrierten Texttreiber ein. Das geht alles mit einem Assitenten.

              Wenn du dir diese DSN gebaut hast, trägst du in deinen ASP-Seiten immer folgendes ein:

              set db = Server.CreateObject("ADODB.Connection")
              db.open "dsn=dbankname;uid=Benutzername;pwd=Passwort"

              dann kannst du mittels SQL-Abfragen wunderbar deine Daten verbasteln:

              sqlabfrage = "SELECT * FROM deinetabelle"
              set result = db.execute(sqlabfrage)

              "result" beinhaltet dann alle Ergebnisse aus deiner Tabelle.
              Die kannst du dann abarbeiten. Tips dazu findest du hier im Forumsarchiv (wie man Datensätze liest und darstellt) und unter folgenden Adressen:

              http://www.altmuehlnet.baynet.de/~schneider-m/asp/
              http://www.abs-online.de/aspdatabase/

              Viel Spaß beim Experimentieren.

              Frank

              P.S. der Vorteil: ASP und Datenbanken sind Serverseitig, du brauchst dir dann um díe Browser keine Gedanken machen. Mit DHTML mußt du browserorientiert arbeiten, das ist bedeutent schwieriger. Mit ASP werden dann nur die Ergebnisse an den Surferbrowser geschickt.

  2. Hi,

    Ich möchte in einer Datenbank den Inhalt des Feldes abfragen.

    Beispiel:
    Kurzreferenz;Anhang;Verfasser
    Blumen;blumen1.doc;Meier
    Pflanzen;;Müller

    Bei einer Suchabfrage soll bei "Blumen" das Wort Blumen als Link zur Datei blumen1.doc verwendet werden. Da für Pflanzen aber keine Datei eingetragen ist sollte hier auch kein Link erscheinen. Wer kann mir hier den entscheidenden Tip geben wie ich nicht zum Namen des Datenfeldes "Anhang" komme sonder zum Inhalt des Feldes.

    So was ähnliches macht die folgende Funktion:

    Die Hosts anhand der IP aus der hosts-Datei ermitteln

    sub search_host{
    my $ip = shift;  # ip wird als Parameter übergeben
    my @zeile = "";
    seek( HST, 0, 0);# zum Dateianfang des Handlers HST
    while(<HST>){
      @zeile = split; # hier musst Du nach /;/ splitten
      if( $zeile[0] eq $ip ){ # oder so: ... =~ /$ip/;
       return ( $zeile[1] );  # die 2. Spalte zurückgeben
      }
    }
    }

    Beachte mal die Kommentare...

    Viele Grüße, Rolf

    1. So was ähnliches macht die folgende Funktion:

      Die Hosts anhand der IP aus der hosts-Datei ermitteln

      sub search_host{

      »»  my $ip = shift;  # ip wird als Parameter übergeben
      »»  my @zeile = "";
      »»  seek( HST, 0, 0);# zum Dateianfang des Handlers HST
      »»  while(<HST>){

      @zeile = split; # hier musst Du nach /;/ splitten
        if( $zeile[0] eq $ip ){ # oder so: ... =~ /$ip/;
         return ( $zeile[1] );  # die 2. Spalte zurückgeben
        }

      »»  }

      }

      Beachte mal die Kommentare...

      Viele Grüße, Rolf

      Hallo Rolf, danke für Deine Hilfe aber ich kann das script bisher noch nicht verstehen. Kannst Du es mir noch ein wenig besser erklären?

      Detlev

      1. Hallo Detlev

        Nochmals zum Verständnis: Alle Vorschlöge, die hier kommen, setzen eine _serverseitige_ Programmiersprache voraus.

        Dazu braucht Du einen direkten Zugriff auf einen Web-Server, bzw. musst Du mit dem Server-Administrator aushandeln, welche serverseitigen Programmiersprachen unterstützt werden.

        Als Programmiersprachen gelten hier:

        • Perl (Vorschlag von Rolf r.)
        • ASP (mein Vorschlag, mit der Besonderheit, dass innerhalb der ASP-Seite JScript anstelle VBScript verwendet wird)
        • andere wie PHP, JSP, ...

        Für Perl muss auf dem Web-Server ein Perl-Interpreter installiert sein. Gibt es sowohl für Unix/Linux als auch Windows NT
        Für ASP muss der Web-Server der Internet Information Server von Microsoft sein. Dieser gibt es aber nur für Windows NT.

        Teile uns mit, mit welcher serverseitigen Programmiersprache Du arbeiten kannst, bzw. möchtest.

        Grüsse
        Tom

        1. Teile uns mit, mit welcher serverseitigen Programmiersprache Du arbeiten kannst, bzw. möchtest.

          Grüsse
          Tom

          Hallo Tom,

          Danke das Du Dich mit meinem Problem befasst. Mit Javascript kenne ich mich ein wenig aus. Daher möchte ich nach Möglichkeit auch hier die Lösung finden. Die Lösung sollte auch, wenn möglich, ohne Server auskommen.

          Detlev

          1. Hallo Detlev

            Dann habe ich Dich wohl total falsch verstanden >:-o

            Für clientseitige Datenanbindungen gibt es nur Lösungen im MS Internet Explorer (wie Du in Posting <89817.html> selbst bemerkt hast).

            Also zurück an den Start!

            Dein Problem ist, auf den Feldinhalt einer solchen Datenquelle zuzugreifen. Richtig ?
            Mit welcher Methode, der in <../../tfbb.htm> genannten, greifst Du auf die xx.csv zu?
            Kannst Du ein Stück Quellcode posten?
            Es würde das Leben ein bischen erleichtern.

            Grüsse
            Tom

            1. .de/selfhtml/tfbb.htm] genannten, greifst Du auf die xx.csv zu?
              Kannst Du ein Stück Quellcode posten?
              Es würde das Leben ein bischen erleichtern.

              Grüsse
              Tom

              Guten Morgen Tom,
              danke für Deine Antwort. Hier ein kleiner Ausschnitt:

              ***********
              <html>
              <head>
              <script language="JScript">
              function Suchen()
              {
              var max = 500;
              document.all.Anzeige.style.display = "none";
              var Suchausdruck = "";
              var Suchbegriffe = 0;
              if(document.Eingabe.SuchHersteller.value != "")
                {
                 if(Suchbegriffe > 0)
                   Suchausdruck = Suchausdruck + " & Hersteller = " + document.Eingabe.SuchHersteller.value;
                 else
                   Suchausdruck = Suchausdruck + "Hersteller = " + document.Eingabe.SuchHersteller.value;
                 Suchbegriffe++;
                }
              if(document.Eingabe.SuchFabrik.value != "")
                {
                 if(Suchbegriffe > 0)
                   Suchausdruck = Suchausdruck + " & Fabrik = " + document.Eingabe.SuchFabrik.value;
                 else
                   Suchausdruck = Suchausdruck + "Fabrik = " + document.Eingabe.SuchFabrik.value;
                 Suchbegriffe++;
                }

              document.all.Puppen.object.Filter = Suchausdruck;
              document.all.Puppen.Reset();
              document.all.Anzeige.dataSrc = "#Puppen";
              if(document.all.Puppen.recordset.recordCount < max)
                {
                 document.all.Anzeige.dataPageSize = Puppen.recordset.recordCount;
                 document.all.Treffer.innerText = Puppen.recordset.recordCount + " Puppen";
                 document.all.Anzeige.style.display = "block";
                }
              else
                 document.all.Treffer.innerText = "0 oder zu viele Suchtreffer!";
              }
              </script>
              </head>
              <body bgcolor="#C0C0C0">
              <center>
              <object id="Puppen" classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
              <param name="DataURL" value="daten.csv">
              <param name="UseHeader" value="true">
              <param name="FieldDelim" value=";">
              <param name="Filter" value="">
              <param name="CaseSensitive" value=false>
              </object>
              <form name="Eingabe">
              <table>
              <tr><td>Suche nach:</td></tr>
              <tr><td><input name="SuchHersteller" type="text" width=40> Hersteller</td>
              <tr><td><input name="SuchFabrik" type="text" width=40> Puppenfabrik</td>
              <tr><td></td><td><input type="button" style="width:150px; height:25px;" value="Suche starten" onClick="Suchen()"></td>
              </form>
              <span id="Treffer" style="color:#0000FF; font-weight:bold;"></span>
              <table width=98%>
              <tr>
              <td bgcolor="#EEEEEE" width=14%><b>Hersteller</b></td>
              <td bgcolor="#EEEEEE" width=14%><b>Puppenfabrik</b></td>
              <td bgcolor="#EEEEEE" width=14%><b>Halsmarke</b></td>
              </tr>
              </table>
              <table id="Anzeige" style="display:none" width=98%>
              <colgroup>
              <col>
              <col>
              <col width=100>
              </colgroup>
              <tr>
              <td bgcolor="#FFFFE0" width=14%><span datafld="Hersteller"></span></td>
              <!--*****************************************************//-->
              <td bgcolor="#FFFFE0" width=14%><span datafld="Fabrik"></span></td>
              <td bgcolor="#FFFFE0" width=14%><a datafld="HalsBild"><span datafld="Halsmarke"></span></a></td>
              </tr><tr><td bgcolor="#EEEEEE" colspan=7><font size=-2><a datafld="Anhang"><span datafld="Literatur"></span></a></td></tr>
              <!-- die Links der letzten beiden Zeilen sollen nur erscheinen wenn im Datenfeld "HalsBild" bzw "Anhang" ein Inhalt eingetragen ist //-->
              <!--*****************************************************//-->
              </table>
              </center>
              </body>
              </html>
              ***************

              Danke im vorraus

      2. Hi again,

        Hallo Rolf, danke für Deine Hilfe aber ich kann das script bisher noch nicht verstehen. Kannst Du es mir noch ein wenig besser erklären?

        Bevor diese PerlFunktion schafft, wurde ein Dateihandler aufgemacht:

        open HST, "wwwhosts" or die "$!";

        In der "wwwhosts" stehen je Zeile eine IP und ein Hostname, die o.g. Funktion wird mit einer IP im Argument aufgerufen, geht durch die wwwhosts und wenn es eine übereinstimmende IP gibt wird der zugehörige Hostname zurückgegeben. IP und Hostname sind in der "wwwhosts" durch ein Leerzeichen getrennt, falls Du dieses Script für Deine Zwecke verwenden möchtest, müsstest Du in jeder Zeile die split-Funktion auf das Trennzeichen /;/ anwenden.

        Siehe also perl, split, io/Filehandling und nochmals Perl.

        Viele Grüße, Rolf