MichaelS: Ok... Nase von Frontpage voll... Hilfe... wer kann mir sagen...

Beitrag lesen

Hallo !!  Ich Hänge mich nun auf ;-)

"Originalquellcode".

Ich habe Beispiele rauskopiert und diese mir den Pfaden usw. angepasst. Das ist auch alles soweit ok.

Gleiches Problem wieder... Apache schmiert angeblich ab...
Bei weilcher Gelegenheit?

Er "schmiert ab", wenn ich das nordwind.pl aufrufe... bzw. vorher kommt die nordwind.html... die gibt die angeforderten Daten über POST an nordwind.pl, der dann die Verbindung zur Access-Datei aufbaut und Daten holt.

in wircklichkeit jefoch nicht...
Wie ist das jetzt zu verstehen?

Es kommt zwar eine meldung, Programm wird beendet, wird es aber nicht und das beste, es werden auch keine Logeinträge gemacht. Weder im system noch unter dem Error.log des Apache bzw. von dieser Seite.

Ich weis nicht woran das liegen könnte... Vielleicht am WIN32::ODBC Treiber???
Gegenfrage: was hat der mit deinem Apache zu tun (hast ihn wegen Access irgendwie einzubinden versucht ...), wie hast du das gute Stück mit Apache zusammengebracht?

Nein! Habe den Apache (httpd... meinst du bestimmt?) nicht irgendwie angepasst... wüßte auch gar nicht wie... darum verstehe ich es auch gar nicht!

Gebe Dir "euch" mal die Daten durch...

1.) die HTML-DATEI:
<HTML>
<HEAD>
<TITLE>SQL auf Nordwind</TITLE>
</HEAD>
<BODY>
<H2>SQL auf MS Access "Nordwind.MDB"</H2>
<FORM ACTION="/cgi/nordwind.pl" METHOD="POST">
<pre>
Alle Artikel zeigen:    <INPUT TYPE="Radio" NAME="default" VALUE="Artikel">
Alle Kunden zeigen:     <INPUT TYPE="Radio" NAME="default" VALUE="Kunden">
Alle Lieferanten zeigen:<INPUT TYPE="Radio" NAME="default" VALUE="Lieferanten">
</pre>
SQL Statement eingeben:
<p>
<TEXTAREA NAME="sql_eingabe" COLS="100" ROWS="12"></TEXTAREA>
<p>
Max Zeilen:
<SELECT NAME="max_rows">
<OPTION VALUE="10">10
<OPTION VALUE="50">50
<OPTION VALUE="100">100
<OPTION VALUE="200">200
</SELECT>
<INPUT TYPE="Submit"><INPUT TYPE="reset">
</FORM>
</BODY>
</HTML>

2.) die nordwind.pl
#!c:\apache\perl\bin\perl.exe
use CGI;            # CGI-Modul einbinden
$cgi = new CGI;
use Win32::ODBC;    # ODBC-Modul einbinden
$db = new Win32::ODBC("DSN=nordwind"); # Objekt erstellen
$max_rows = 2; # Max Zeilen die später ausgegeben werden
$rows = 0;

Parameter auslesen

$max_rows = $cgi->param('max_rows');
$vordef = $cgi->param('default');
if($vordef){
  $sql_string = ("select * from $vordef");
}
else{
  $sql_string = $cgi->param('sql_eingabe');
}

if(! $db->Sql($sql_string)){
  @FelderNamen = $db->FieldNames();  # Feldnamen
  $spalten = @FelderNamen;           # Spaltenanzahl ermitteln
  #Ausgabe der Daten in den Browser (Tabelle)
  print        $cgi->header,
        $cgi->start_html('Ergebnis der SQL - Abfrage'),
        $cgi->h2('Ergebnis der SQL - Abfrage'),
        $cgi->h5($sql_string),
        "Maximal angezeigte Zeilen: ", $max_rows;
  print "<table border cellspacing=0>\n";
  # Die Überschriften nicht vergessen
  print "<tr>\n";
  for (@FelderNamen){
    print "<th>", $_, "</th>\n";
  }
  print "</tr>\n";
  # Und nun den Rest der Tabelle
  # FetchRow() gibt 0, wenn keine weiteren Daten anliegen
  while ($db->FetchRow() and $rows < $max_rows){
    print "<tr>\n";
    undef %Daten ;
    %Daten = $db->DataHash();
    $rows++;
    for ($i = 0; $i < $spalten; $i++){
      if ($Daten{$FelderNamen[$i]} gt ''){
        print "<td>", $Daten{$FelderNamen[$i]}, "</td>\n";
      }
      else{
        print "<td>Nicht Angegeben</td>\n";
      }
    }
    print "</tr>\n";
  }
  print "</table>\n",
  $cgi->end_html;
  $db->Close() ;
}
else{
  print $cgi->header,
        $cgi->start_html('Fehler im SQL Statement'),
        $cgi->h2('Fehler im SQL Statement'),
        $cgi->p,
        $db->Error();
}