Mehrfacher Datenbankzugriff per ADOdb

lago

Mitglied
Hi Folks,

ich habe ein Problem bei dem ihr mir hoffenlich weiterhelfen könnt, es geht um folgendes:

ich habe ein Skript das ein Template befüllen soll, insgesamt werden im Template 6 Auswahllisten befüllt, die Daten hierfür kommen aus einer Datenbank, nun ist es so, die ersten 5 Anfragen werden ausgeführt , die 6. jedoch nicht, es hängt nicht am statement denn egal welches ich an die 6. Stelle im Skript schreibe, es wird nicht ausgeführt, kann es sein dass die ADOdb nur 5 ausführen kann und wenn ja hat jemand eine Idee wie ich das umgehen kann?

Zur veranschaulichung hier mal der Code:

$dbh=my_connect();
if($fkomp==""){
$fkomp="%";
}

//Komponenten bereitstellen
$kom=$dbh->Execute("SELECT * FROM komponente WHERE
Bezeichnung LIKE '$fkomp';");
$kompLoop=KompLoop($kom);

//E-Stände bereitstellen
$est=$dbh->Execute("SELECT * FROM e_staende;");
$eLoop=eLoop($est);

//Q-Stände bereitstellen
$qst=$dbh->Execute("SELECT * FROM q_staende;");
$qLoop=qLoop($qst);

//Freigabestände bereitstellen
$fr=$dbh->Execute("SELECT * FROM freigabe;");
$freiLoop=FreiLoop($fr);

//SW-Muster bereitstellen
$swm=$dbh->Execute("SELECT * FROM swmuster
LEFT JOIN swsample ON
swmuster.SampleID=swsample.ID
LEFT JOIN staende ON
swmuster.SW_Stand=staende.ID
ORDER BY swsample.Sampleart;");
$swLoop=swLoop($swm, $ID);

//HW-Muster bereitstellen //HIER ENTSTEHT DER FEHLER
$hwm=$dbh->Execute("SELECT h.ID, h.Liefertermin,
hs.HWSampleart, s.Stand FROM hwmuster h
LEFT JOIN hwsample hs ON h.HWSampleID=hs.ID
LEFT JOIN staende s ON h.HW_Stand=s.ID
ORDER BY hs.HWSampleart;");
$hwLoop=hwLoop($hwm, $ID);
//INNERHALB DER hwLoop wird per $hwm->MoveNext(); durch das Ergebnis gegangen aber der compiler sagt, dass $hwm kein Objekt darstellt!


ich hoffe jemand von euch hat ne Idee!

Gruss
Dominik
 
Original geschrieben von lago
//HW-Muster bereitstellen //HIER ENTSTEHT DER FEHLER
$hwm=$dbh->Execute("SELECT h.ID, h.Liefertermin,
hs.HWSampleart, s.Stand FROM hwmuster h
LEFT JOIN hwsample hs ON h.HWSampleID=hs.ID
LEFT JOIN staende s ON h.HW_Stand=s.ID
ORDER BY hs.HWSampleart;");
$hwLoop=hwLoop($hwm, $ID);
//INNERHALB DER hwLoop wird per $hwm->MoveNext(); durch das Ergebnis gegangen aber der compiler sagt, dass $hwm kein Objekt darstellt!
Was kommt denn wenn Du mal folgendes vor der hwLoop-Funktion versuchst:

PHP:
<?php
if($hwm->EOF) {
    echo 'Keine Daten vorhanden';
} else {
    echo 'Anzahl an selektierten Datensätze: '.$hwm->RecordCount();
}
?>
Alternativ würde ich mal nur die eine Datenbankabfrage ausführen lassen, um sicherzugehen, dass sie funktioniert. Ich wage aber zu bezweifeln, dass AdoDB nur 5 Queries nacheinander zulässt ;)
 
Hi,

also das Recordset ist zweifellos leer, wenn ich echo $hwm schreibe sollte es mir ja Object ausgeben das tut es aber nicht, wenn ich jedoch das Statement nehmen und direkt in der Datenbank bzw. in SQL ausführe, dann erreiche ich exakt das gewollte Ergebnis, die Abfrage funktioniert auch wenn ich sie bei den 6 DB Anfragen im Skript an die 5 Stelle setze, es ist tatsächlich so, dass immer die 6. nicht funktioniert!

Gruss
Dominik
 
Original geschrieben von lago
Hi,

also das Recordset ist zweifellos leer, wenn ich echo $hwm schreibe sollte es mir ja Object ausgeben das tut es aber nicht, wenn ich jedoch das Statement nehmen und direkt in der Datenbank bzw. in SQL ausführe, dann erreiche ich exakt das gewollte Ergebnis, die Abfrage funktioniert auch wenn ich sie bei den 6 DB Anfragen im Skript an die 5 Stelle setze, es ist tatsächlich so, dass immer die 6. nicht funktioniert!
Hm, hört sich komisch an. Gerade mal lokal gestest: Wie zu erwarten funktionieren 6 Datenbankanfragen direkt nacheinander. Welche Version von AdoDB verwendest Du?

Alternativ kannst Du auch mal das Debugging aktivieren (falls nicht schon geschehen):

PHP:
$dbh->debug = true;
Dazu noch:

PHP:
include ('pfad/zum/adodb/ordner/adodb-errorhandler.inc.php');
Vielleicht bekommst Du dadurch eine aussagekräftigere Fehlermeldung.
 
wenn ich die obige Funktion vor die hwLoop setze beschwert er sich er geht zwar nicht in die if sondern in die else bedingung, da ist dann aber schluss, da das result für Recordcount nicht das richtige Objekt ist!

Gruss
D.
 
Danke war ne riesen Hilfe,

den Fehler hab ich ausgemacht, da ich innerhalt der hwLoop noch eine Formatierungsfunktion für das Datum benutze und diese eine andere DB anspricht, verbröselt es ihn irgendwie an dieser stelle und er übernimmt komischerweise für den handler die falsche DB, sehr komisch finde ich, naja jetzt muss ich mir nur was einfallen lassen wir ich das hingekommen, trotzdem vielen vielen dank!

Gruß

Dominik
 
Original geschrieben von lago
den Fehler hab ich ausgemacht, da ich innerhalt der hwLoop noch eine Formatierungsfunktion für das Datum benutze und diese eine andere DB anspricht, verbröselt es ihn irgendwie an dieser stelle und er übernimmt komischerweise für den handler die falsche DB, sehr komisch finde ich, naja jetzt muss ich mir nur was einfallen lassen wir ich das hingekommen, trotzdem vielen vielen dank!
Kein Problem :)

Aber warum verwendest Du für ne Datumsformatierung eine andere DB? AdoDB bietet doch hierfür auch spezielle Funktionen an.
 
Die Anwendung benötigt spezielle Datumsformate, die AdoDb nicht unterstützt, ausserdem müssen sieauch nach Fertigstellung der GUI frei in ihrer Form definierbar sein -> leider ;-)
 
Zurück