Server error
Reinhard
- perl
Hallo!
Habe ein Problem beim einlesen einer Access Datenbank
Ich erhalte folgende Fehlermeldung!
Software error:
Fehler beim Connect:(DBD: db_login/SQLConnect err=-1) at C:/Programme/Apache Group/Apache2/cgi-bin/test2.pl line 15.
In Linie 15
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",$DBI::errstr;
bin noch Anfänger in Perl
hallo,
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",$DBI::errstr;
"perldoc DBI" sollte dir erst einmal ein paar Auskünfte liefern. Das kannst du auch unter Windows in der Eingabeaufforderung aufrufen. Danach solltest du wahrscheinlich das, was du da in die Klammer geschrieben hast, korrigieren: DBI->connect($data_source, $username, $auth, %attr);
Es kommt auch darauf an, was in den vorangegangenen 15 Zeilen deines Scripts steht. Die Fehlermeldung bezieht sich zwar auf die Zeile, an der das Script nicht mehr weiter kann, aber der eigentliche Grund kann auch schon davor liegen.
Grüße aus Berlin
Christoph S.
In Linie 15
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",$DBI::errstr;
Eigentlich solltest du hier auch den Fehler mitgeteil bekommen, aber ich nehme an das DBI::errstr keine Skalar ist, es ist eigentlich eine Funktion, also probier mal
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",DBI::errstr();
Ansonsten fehlen, wie schon Christoph erwähnt hat, Parameter.
Struppi.
In Linie 15
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",$DBI::errstr;Eigentlich solltest du hier auch den Fehler mitgeteil bekommen, aber ich nehme an das DBI::errstr keine Skalar ist, es ist eigentlich eine Funktion, also probier mal
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",DBI::errstr();Ansonsten fehlen, wie schon Christoph erwähnt hat, Parameter.
Struppi.
vielen dank für euere mühe leider ist der Fehler immer noch da
und ich bin schon am verzweifeln
hier das ganze Script vielleicht liegt der Fehler ja woanders?
#! c:/perl/bin/perl
use strict;
use warnings;
use CGI::Carp qw/fatalsToBrowser/;
use CGI qw(:standard);
use DBI;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time);
$mon++;
$year += 1900;
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",DBI::errstr();
my $sqlstatement = "SELECT Tabelle1.Kundennummer, Adresse, Name, Telefonnummer,Tabelle2Kundennummer.Rechnungsbetrag FROM Tabelle1 INNER JOIN Rechnungsbetrag ON Tabelle1.Kundennummer = Rechnungsbetrag.Kundennummer WHERE Tabelle1.Kundennummer = ?";
my $sth = $dbh->prepare($sqlstatement) or die "Fehler beim prepare",$DBI::errstr;
$sth->execute(param('Kundennummer')) or die "Could not execute SQL statement...maybe invalid? $DBI::errstr";
print header(-type => 'text/html'), start_html(-title => 'Auswahl');
print h3('Ergebnis'), hr();
my $i = 1;
print '<table>';
while (my @row=$sth->fetchrow_array()){
print '<tr>';
print '<td>',$_,'</td>' for(@row);
print '</tr>';
my $rechnung = 'C:\Dokumente und Einstellungen\lehmann\Eigene Dateien'.$i.'.txt';
open(DATEI,">$rechnung") or print $!;
sub format_currency {
my ($val, $currency, $amount) = @_; $amount = 1 if (!$amount); # Standartmenge 1
$val =~ tr/,//d; # Kommas weg da evtl. engl. Format
$val = sprintf "%0.2f", $val*$amount; # Endsumme mit 2 Nachkommastellen
$val =~ tr/./,/; # Dezimalkomma
1 while $val =~ s/^(-?\d+)(\d{3})/$1.$2/; # Punkte in 3er Schritten
return "$val $currency";
}
print DATEI "Rechnungsnummer:\t\R125\t\vom: $mday.$mon.$year\n\n\n";
print DATEI "KdNr: $row[0]\n\n";
print DATEI $row[4],"\n\n";
print DATEI $row[1],"\n\n";
print DATEI $row[2]," ",$row[3],"\n" x 7;
print DATEI " " x 30;
print DATEI "Rechnungsbetrag Netto:\t", format_currency($row[5], 'EUR', 1),"\n\n";
print DATEI "Mit freundlichen Grüßen\n\nTestfirma";
close DATEI;
$i++;
}
Eigentlich solltest du hier auch den Fehler mitgeteil bekommen, aber ich nehme an das DBI::errstr keine Skalar ist, es ist eigentlich eine Funktion, also probier mal
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",DBI::errstr();Ansonsten fehlen, wie schon Christoph erwähnt hat, Parameter.
Struppi.
vielen dank für euere mühe leider ist der Fehler immer noch da
und ich bin schon am verzweifeln
Jetzt wäre es interessant gewesen, ob die Fehlermeldung anders ist und wenn ja, wie sie genau lautet.
hier das ganze Script vielleicht liegt der Fehler ja woanders?
my $dbh = DBI->connect('DBI:ODBC:kunden') or die "Fehler beim Connect:",DBI::errstr();
Der Fehler liegt schon hier. Wo sind die fehlenden Parameter, dei Christoph schon erwähnt hatte?
print '<table>';
while (my @row=$sth->fetchrow_array()){
print '<tr>';
print '<td>',$_,'</td>' for(@row);
print '</tr>';
Das könntest du auch mit Funktionen des CGI Moduls machen:
my @table_rows;
while (my @row=$sth->fetchrow_array()){
push @table_rows, @row;
print table( Tr( @table_rows ));
..
Standartmenge 1
Standard!!!
Struppi.
Hell-O!
Habe ein Problem beim einlesen einer Access Datenbank
Wird dieser Treiber von deinem System unterstützt? Rufe mal folgendes Miniprogramm auf:
#!/usr/bin/perl -w
use strict;
use DBI;
print "Content-type: Text/plain\n\n";
print join("\n", DBI->available_drivers);
Da müsste ODBC aufgeführt sein. Sollte dem nicht so sein, steht dir der Treiber auch nicht zur Verfügung. Je nach Zugriffsmöglichkeiten kannst du das erforderliche Modul nachladen, siehe hierzu die Liste auf cpan.org.
Sollte ODBC verfügbar sein, hilft dir möglicherweise die Doku zu DBD::ODBC weiter.
Siechfred