Überprüfen Sie die Abfrageergebnisse, wenn keine Daten zurückgegeben
Ich habe eine Abfrage, ich rufe zum aktualisieren eines E-Mail-service. Die meisten Zeiten, die Sie haben Daten, aber in der Prüfung kam ich über die situation, dass es nicht der Rückgabe alle Daten, weil es keine Daten zurückgeben. Im Falle, dass keine Daten gibt es zu der Fehlermeldung "Variable EDITEDACCTS ist nicht definiert".
Habe ich versucht, das einwickeln der Abfrage in einem <cftry>
aber es funktioniert nicht ", nicht" per se so ist es keine Reise, die <cfcatch>
. Ich habe auch versucht die variable definieren
var EditedAccts = QueryNew("")
sowie einfach versuchen
<cfif NOT isDefined(#EditedAccts#)>
und es gibt immer "Variable EDITEDACCTS ist nicht definiert".
Ich brauche eine produktionstaugliche Lösung für dieses, und ich bin in der Hoffnung hier irgendwo auf SO kann mir helfen.
Dank im Voraus für Eure Hilfe.
- Verwenden Sie keine # Zeichen mit IsDefined(). Es bewirkt, dass die Bewertung von
EditedAccts
auslöst, die sehr-Fehler, den Sie versuchen, zu verhindern. Dies ist eine grundlegende select-Abfrage? Da das query-Objekt selbst sollte noch vorhanden sein, auch wenn es keine Datensätze enthält. - .. vergessen, um die richtige syntax für isDefined:
<cfif NOT isDefined("EditedAccts")>
- Danke @Leigh. Entfernen Sie das # - Zeichen gearbeitet. Ich dachte, es war etwas einfach, aber ich konnte nicht sehen, den Wald für die Bäume.
- Gut. Also was für eine Art von sql-Anweisung, die Sie ausführen? Wie ich bereits erwähnt habe ein
SELECT
Abfrage sollte immer vorhanden sein. Einfach Fragen, wenn Sie lief in einem mögliche Fehler oder Missverständnisse cfquery. - Es ist ein
SELECT
- Anweisung mit einem paar von verschachtelten Abfragen, aber es war einfach ein Missverständnis meinerseits vonisDefined()
als eine Funktion. Ein perfektes Beispiel dafür, wie genial SO sein kann, wenn Sie gar nicht Vorhaben, die offensichtliche Fehler vor Ihnen. Nochmals vielen Dank für die Hilfe. - Nicht herumreiten den Punkt, aber Sie sollten nicht verwenden müssen
IsDefined
mitSELECT
Abfragen. So ist es möglich, Sie auf einen Fehler. Aber froh, dass alles funktioniert jetzt 🙂 - Das ist in Ordnung. Ich kann schauen es später mehr, aber ich arbeite gegen ein release-Datum. Aber nur für zukünftige Referenz für Sie und für sonst niemanden interessiert ich eigentlich meine Lösung unten, und testen Sie dann die Datensätze zurückgegeben, und dann gehen von diesem Punkt aus, weil
isDefined()
sowieisQuery()
sind nicht spezifisch genug für meine Bedürfnisse. Nochmals vielen Dank für alles. Prost! - Hört sich gut an. Viel Glück mit dem release 🙂 Cheers.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe gerade die Antwort gefunden. Legen Sie die "Ergebnis" - parameter in der Abfrage aufrufen und dann können Sie die recordcount-Feld zurückgegeben.
Wenn das "Ergebnis" - parameter erhalten Sie eine Struktur zurückgegeben, die mit dem sql verwendet, die Cache-Einstellung, die Ausführungszeit und die Anzahl der Datensatz.
Jetzt kann ich die Anzahl der Datensätze und gehen von dort aus.
Hoffentlich hilft jemand in der Zukunft.
#ecitAccts.recordcount#
erhalten Sie das gleiche Ergebnis. Und wie Leigh sagte, auf Ihrer ursprünglichen post, ein null-Datensatz-Ergebnismenge NICHT zu einer Ausnahme führen, und ist immer noch definiert.SELECT
Anweisung, wie einUPDATE
,DELETE
, ...?Ich habe versucht, mit Ergebnis="queryResult" aber als ich versuchte, Referenz der query-name ich habe so etwas wie dieses Fehler - "Den Wert des Attributs Abfragen, die derzeit EditedAccts, ist ungültig". Stattdessen habe ich etwas benutzt wie IsDefined("#EditedAccts#") - einschließlich der Wert in Anführungszeichen gesetzt hat den trick für mich. Ich bin nur neu in ColdFusion, aber ich Lerne schnell, dass die Werte in Anführungszeichen sind ganz andere Werte nicht in Anführungszeichen gesetzt, in Bezug darauf, wie eine Funktion interpretieren parameter.
SELECT col1, col2 FROM table1 INNER JOIN table2 on table1_id = table2_id WHERE criteria order by col1
also nicht sicher, warum das query-Objekt wurde nicht zurückgegeben.