Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

#Fehler in Abfrage abfangen

1,466 views
Skip to first unread message

Stefan Voit

unread,
Mar 18, 2008, 3:06:32 AM3/18/08
to
Hallo,

ich habe in einer Abfrage folgenden Ausdruck 'int(left(partition1, instr(partition1,"GB")-1))' mit dem ich die Anzahl der Gigabyte vor der Bezeichnung 'GB' selektieren will. Nun wenn er 'GB' im Datensatz nicht findet oder das LEFT vor dem 'GB' keine Zahl ist,
bekomme ich #Fehler zurück. Wie kann ich den Wert #Fehler abfragen und z.B. mit 0 ersetzen?

iif 'Ausdruck' = #Fehler (oder is error) geht leider nicht...

Vielen Dank im Voraus!

Mit freundlichen Grüßen

Stefan Voit


Lupus Goebel

unread,
Mar 18, 2008, 3:23:22 AM3/18/08
to
Tach,

Am 18.03.2008 08:06 schrieb Stefan Voit:
> Hallo,
>
> ich habe in einer Abfrage folgenden Ausdruck 'int(left(partition1,
> instr(partition1,"GB")-1))' mit dem ich die Anzahl der Gigabyte vor
> der Bezeichnung 'GB' selektieren will. Nun wenn er 'GB' im Datensatz
> nicht findet oder das LEFT vor dem 'GB' keine Zahl ist, bekomme ich
> #Fehler zurück. Wie kann ich den Wert #Fehler abfragen und z.B. mit 0
> ersetzen?
>
> iif 'Ausdruck' = #Fehler (oder is error) geht leider nicht...

Meinst das?

if( IsNumeric(int(left(partition1, instr(partition1,"GB")-1))) ;
int(left(partition1, instr(partition1,"GB")-1)); 0)


--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de http://foto.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq

Jens Schilling

unread,
Mar 18, 2008, 3:26:41 AM3/18/08
to
Hallo, Stefan

Schau Dir mal in der Hilfe die Erläuterungen zu NZ an; Du könntest es mal so
probieren:

NZ(int(left(partition1, instr(partition1,"GB")-1));0)

--
Gruss
Jens
______________________________
2. SEK (SQL Server-Entwickler-Konferenz)
Nürnberg, 12./13.4 und 19./20.4.2008
FAQ: http://www.donkarl.com


Henry Habermacher

unread,
Mar 18, 2008, 3:38:59 AM3/18/08
to
Hallo Stefan

Stefan Voit wrote:
> ich habe in einer Abfrage folgenden Ausdruck 'int(left(partition1,
> instr(partition1,"GB")-1))' mit dem ich die Anzahl der Gigabyte vor der
> Bezeichnung 'GB' selektieren will. Nun wenn er 'GB' im Datensatz nicht
> findet oder das LEFT vor dem 'GB' keine Zahl ist,
> bekomme ich #Fehler zurück. Wie kann ich den Wert #Fehler abfragen und
> z.B. mit 0 ersetzen?
>
> iif 'Ausdruck' = #Fehler (oder is error) geht leider nicht...

Die Funktion wäre wohl isError().

Dennoch solltest Du das ganze mal so anschauen:

val(Nz(partition1; 0))

Sollte in etwa das geben, was Du möchtest, ohne da rumoperieren zu müssen.

Falls Du lieber NULL haben möchtest, wenn die Partition nicht definiert ist,
dann so:

IIf(IsNull(partition1) = True; NULL; Val(partition1))

Gruss
Henry

--
SEK2 Anmeldung: http://donkarl.com/?SEK
Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Michael Zimmermann

unread,
Mar 18, 2008, 5:29:52 AM3/18/08
to
Hallo!

Stefan Voit:


> ich habe in einer Abfrage folgenden Ausdruck
> 'int(left(partition1, instr(partition1,"GB")-1))' mit dem
> ich die Anzahl der Gigabyte vor der Bezeichnung 'GB'
> selektieren will. Nun wenn er 'GB' im Datensatz nicht
> findet oder das LEFT vor dem 'GB' keine Zahl ist,
> bekomme ich #Fehler zurück.

Wenn Du Deine Daten wenigstens mal in die erste Normalform
bringen würdest, bräuchtest Du keine Zugriffe auf Teile
von Feldinhalten und hättest überhaupt kein Problem.

Gruß aus Mainz
Michael

Stefan Voit

unread,
Mar 18, 2008, 5:29:52 AM3/18/08
to
Hallo Michael,

das ist eine Datenübernahme in Tabellen, die der ersten Normalform entsprechen.

Danke.

Stefan Hoffmann

unread,
Mar 18, 2008, 6:55:17 AM3/18/08
to
hallo Stefan,

Stefan Voit schrieb:


> ich habe in einer Abfrage folgenden Ausdruck 'int(left(partition1, instr(partition1,"GB")-1))' mit dem ich die Anzahl der Gigabyte vor der Bezeichnung 'GB' selektieren will. Nun wenn er 'GB' im Datensatz nicht findet oder das LEFT vor dem 'GB' keine Zahl ist,
> bekomme ich #Fehler zurück. Wie kann ich den Wert #Fehler abfragen und z.B. mit 0 ersetzen?

Benutze eine eigene Funktion, das macht es einfacher, z.B.

Public Function GetFileSize(AFieldValue As Variant) As Long

Dim Result As Long

Result = 0
If Not IsNull(AFieldValue) Then
..
End If

GetFileSize = Result

End Function

mfG
--> stefan <--

--
Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm

Henry Habermacher

unread,
Mar 18, 2008, 8:03:50 AM3/18/08
to
Hallo Michael

Michael Zimmermann wrote:
> Wenn Du Deine Daten wenigstens mal in die erste Normalform
> bringen würdest, bräuchtest Du keine Zugriffe auf Teile
> von Feldinhalten und hättest überhaupt kein Problem.

Du wagst Dich wieder auf's Glatteis! Vielleicht ist es ja gerade der
Versuch, irgend einen Import in wenigstens die 1NF zu bringen ;-) Wie im
anderen Thread bereits geschrieben, bleibe ich in solchen Situationen lieber
in der Möglichkeitsform, wirkt weniger absolutistisch und hilft meist
genauso gut ;-)

Michael Zimmermann

unread,
Mar 18, 2008, 10:08:39 AM3/18/08
to
Hallo!

Henry Habermacher:


> Du wagst Dich wieder auf's Glatteis!

Na und? Ich bin ja nicht im Sternzeichen des Häschens
geboren. :-)

> Vielleicht ist es ja gerade der Versuch, irgend einen
> Import in wenigstens die 1NF zu bringen ;-)

Ist es; sagt er ja selbst. Damit hat er einen Sonnenstrahl
in mein von den 2007er Wolken verdunkeltes Gemüt geschickt.

Gruß aus Mainz
Michael

0 new messages