User since
2004-07-14
2
Artikel
BenutzerIn
Hallo miteinander,
Als absoluter Frischling in Sachen Perl habe ich mich schon einige Stunden durch die Community gelesen und im Netz recherchiert. Leider nicht mit dem entsprechenden Erfolg. Ich möchte gern folgendes Problem lösen:
Ich habe eine Access-DB mit zwei Tables, die über den Schlüsselwert Kundennummer in Verbindung stehen. Mithilfe eines HTML-Formulars soll die DB durch ein CGI-Skript durchsucht werden. Bei einem Treffer sollen die Daten der DB in Tabellenform angezeigt werden. Zusätzlich soll eine Textdatei als Rechnung generiert werden, auf der die Adresse, der Name und der Rechnungsbetrag des jeweiligen Kunden erscheint. kann mir jemand dazu Hilfestellung leisten?
Ich danke schon mal.
User since
2003-08-04
14371
Artikel
ModeratorIn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#! c:\perl\bin\perl
use Win32::ODBC;
$DriverType = "Microsoft Access Driver (*.mdb)";
$DSN = "Win32 ODBC --MAOmaoMAOmaoMAO--";
$Dir = "c:\\meinOrdner";
$DBase = "meineDB.mdb";
Win32::ODBC::ConfigDSN(ODBC_ADD_DSN, $DriverType,("DSN=$DSN", "Description=MAO Win32 ODBC Test DSN for Perl", "DBQ=$Dir\\$DBase", "DEFAULTDIR=$Dir", "UID=", "PWD=")) or die "ConfigDSN(): Could not add temporary DSN" . Win32::ODBC::Error();
$db=new Win32::ODBC($DSN) or die "couldn't ODBC $DSN because ", Win32::ODBC::Error(), "\n";
$query = "select * from table1, table2 where table1.spalte = table2.spalte";
!$db->Sql($query) or die "couldn't do $query because ", $db->Error(), "\n";
while($db->FetchRow())
{
my %Data = $db->DataHash();
foreach my $key(keys(%Data)){
print $key," -> ",$Data{$key};
}
}
Win32::ODBC::ConfigDSN(ODBC_REMOVE_DSN, $DriverType, "DSN=$DSN") or die "ConfigDSN(): Could not remove temporary DSN because ", Win32::ODBC::Error();
Ist jetzt allerdings noch keine HTML-Tabelle...
User since
2003-08-04
14371
Artikel
ModeratorIn
Hab noch was besseres gefunden:
use DBI;
#open connection to Access database
$dbh = DBI->connect('dbi:ODBC:driver=microsoft access driver (*.mdb);dbq=C:\Windows\Desktop\meineDB.mdb');
#prepare and execute SQL statement
$sqlstatement="SELECT * FROM table1, table2 WHERE table1.spalte = table2.spalte";
$sth = $dbh->prepare($sqlstatement);
$sth->execute ||
die "Could not execute SQL statement ... maybe invalid?";
#output database results
while (@row=$sth->fetchrow_array()){
print "@row\n";
}
\n\n
<!--EDIT|renee|1089901232-->
User since
2003-08-04
14371
Artikel
ModeratorIn
Vielen Dank für die irre schnelle Hilfe. Hast Du solche Scripts irgendwo rumliegen, oder wie kriegt man das so schnell hin? Also nochmals vielen Dank.
Axel
User since
2004-07-14
2
Artikel
BenutzerIn
Jetzt habe ich mich vor lauter Freude über die schnelle Hilfe nicht mal eingeloggt. Also Renee, vielen Dank.
Axel