collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 84
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13975
  • stats Beiträge insgesamt: 66548
  • stats Themen insgesamt: 8971
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: "Das Objekt ist ungültig, oder es ist nicht mehr festgelegt" nach Filter löschen  (Gelesen 3247 mal)

Offline Damien

  • Newbie
  • Beiträge: 29
Hallo liebe Access-Experten,
ich habe ein Suchformular nach diesem Vorbild erstellt. "https://www.youtube.com/watch?v=xq6pzJZqfRo"
Alles funktioniert soweit wunderbar.
Private Sub cbxCountry_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxPhase_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxSegment_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxStatus_AfterUpdate()
Me.Requery
End Sub

Private Sub txtBusiness_description_AfterUpdate()
Me.Requery
End Sub

Private Sub txtCity_AfterUpdate()
Me.Requery
End Sub

Private Sub txtCompany_name_AfterUpdate()
Me.Requery
End Sub

Private Sub cmdDelete_filters_Click()
Me.cbxCountry = ""
Me.cbxPhase = ""
Me.cbxSegment = ""
Me.cbxStatus = ""
Me.txtBusiness_description = ""
Me.txtCity = ""
Me.txtCompany_name = ""
Me.Requery
End Sub

Der cmdDelete_filters tut seinen Dienst.

Jetzt möchte ich meine Datensätze mit einem txt_Date_from und einem txt_Date_until zusätzlich eingrenzen können.
Dafür bin ich hier im Forum auf das folgende Abfragekriterium gestoßen.

>=Nz([Formulare]![frm_analyse]![txtDate_from];#01.01.1990#) Und <=Nz([Formulare]![frm_analyse]![txtDate_until];#01.01.2200#)

damit lassen sich die Datensätze nun filtern, wie gewünscht. Ich habe VBA ergänzt:

Private Sub cbxCountry_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxPhase_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxSegment_AfterUpdate()
Me.Requery
End Sub

Private Sub cbxStatus_AfterUpdate()
Me.Requery
End Sub

Private Sub txtBusiness_description_AfterUpdate()
Me.Requery
End Sub

Private Sub txtCity_AfterUpdate()
Me.Requery
End Sub

Private Sub txtCompany_name_AfterUpdate()
Me.Requery
End Sub

Private Sub txtDate_from_AfterUpdate()
Me.Requery
End Sub

Private Sub txtDate_until_AfterUpdate()
Me.Requery
End Sub

Private Sub cmdDelete_filters_Click()
Me.cbxCountry = ""
Me.cbxPhase = ""
Me.cbxSegment = ""
Me.cbxStatus = ""
Me.txtBusiness_description = ""
Me.txtCity = ""
Me.txtCompany_name = ""
Me.txtDate_from = ""
Me.txtDate_until = ""
Me.Requery
End Sub

Doch immer wenn ich jetzt "delete Filters" anklicke kommt "Laufzeitfehler '3420': Das Objekt ist ungültig, oder es ist nicht mehr festgelegt." und in allen Datensatzfeldern erscheint #Name?

Es muss also etwas mit dem Abfragekriterium nicht stimmen, oder der Datenfilter muss anders in VBA eingespeist werden oder?  :-\

Bin noch ein totaler Anfänger also am besten für Dumme erklären, wenn jemand eine Idee hat.

Tausend Dank schon mal im Voraus, das Forum hat mir schon oft geholfen aber das ist mein erster Thread.

Gruß D.



 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3109
Hallo,

ich empfehle dir, die Felder beim Löschen auf NULL einzustellen, zumindest bei den neuen Datumsfeldern ist das notwendig.
Freundliche Grüße
MaggieMay
 
Folgende Mitglieder bedankten sich: Damien

Offline Damien

  • Newbie
  • Beiträge: 29
Meinst du so?
Private Sub cmdDelete_filters_Click()
Me.cbxCountry = ""
Me.cbxPhase = ""
Me.cbxSegment = ""
Me.cbxStatus = ""
Me.txtBusiness_description = ""
Me.txtCity = ""
Me.txtCompany_name = ""
Me.txtDate_from = "0"
Me.txtDate_until = "0"
Me.Requery
End Sub

Der Fehler bleibt leider.

Edit:
Wenn ich es so einstelle:
Me.txtDate_from = 0
Me.txtDate_until = 0
Kommt kein Fehler mehr, aber es werden gar keine Datensatzfelder mehr angezeigt.
« Letzte Änderung: Oktober 17, 2016, 10:59:29 von Damien »
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3109
Nein, ich meinte schon das Wort "NULL" (ohne Gänsefüßchen), so wie ich es geschrieben hatte, das ist ein spezieller "Un-Wert", nicht 0 oder "".

PS:
Hast du schonmal drüber nachgedacht, wozu die NZ-Funktion gut ist?
Freundliche Grüße
MaggieMay
 
Folgende Mitglieder bedankten sich: Damien

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7283
Hallo,
ein Leerstring ("") ist nicht NULL.
Du muss wirklich NULL zuweisen.
Me.cbxCountry = NULLusw.
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Damien

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1788
Re: "Das Objekt ist ungültig, oder es ist nicht mehr festgelegt" ...
« Antwort #5 am: Oktober 17, 2016, 11:08:50 »
Hallo Damian,
Was die beiden meinen ist:
NULL <> Null.
Null (0) ist eine Zahl; - NULL ist Nichts, na da.
Private Sub cmdDelete_filters_Click()
Me.cbxCountry = NULL
Me.cbxPhase = NULL
Me.cbxSegment = NULL
Me.cbxStatus = NULL
Me.txtBusiness_description = ""
Me.txtCity = ""
Me.txtCompany_name = ""
Me.txtDate_from = NULL
Me.txtDate_until = NULL
Me.Requery
End Sub
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Damien

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7283
Hallo,
@ekkehard
Du hast 3 vergessen, oder warum lässt Du die aus ?
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Damien

Offline Damien

  • Newbie
  • Beiträge: 29
Nein, ich meinte schon das Wort "NULL" (ohne Gänsefüßchen), so wie ich es geschrieben hatte, das ist ein spezieller "Un-Wert", nicht 0 oder "".

PS:
Hast du schonmal drüber nachgedacht, wozu die NZ-Funktion gut ist?

Vielen Dank, genau das hatte ich natürlich nicht ausprobiert. Es funktioniert!  :D

Ich habe es zuvor immer mit der "Zwischen ... Und ..." Funktion probiert, aber das hat nicht geklappt, die "Nz" habe ich einfach so probiert. Ich werde die genaue Bedeutung mal recherchieren oder jemand erklärt sie mir hier im Kontext zu meiner Anwendung, das wäre sehr nett. :)

Danke auch an die anderen für die schnelle Hilfe.
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3109
Zitat von: Access-Hilfe
Application.Nz-Methode

Sie können die Nz-Funktion verwenden, um Null, eine leere Zeichenfolge (Leere Zeichenfolge: Eine Zeichenfolge, die keine Zeichen enthält. Sie können eine leere Zeichenfolge verwenden, um anzugeben, dass für ein Feld kein Wert vorhanden ist. Um eine leere Zeichenfolge einzugeben, geben Sie zwei Anführungszeichen ohne Leerzeichen ein ("") ein.) (" ") oder einen anderen angegebenen Wert zurückzugeben, wenn eine Variable des Typs Variant den Wert Null aufweist. Sie können diese Funktion z. B. verwenden, um einen Wert Null in einen anderen Wert zu konvertieren und so zu verhindern, dass der Wert durch einen Ausdruck verbreitet wird.
Kurz gesagt, mit Hilfe der NZ-Funktion lassen sich Ersatzwerte festlegen, wenn ein Feld leer (NULL) ist - genau so wie du das bei dem Datumsvergleich machst.
Freundliche Grüße
MaggieMay
 
Folgende Mitglieder bedankten sich: Damien

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1788
Re: "Das Objekt ist ungültig, oder es ist nicht mehr festgelegt" ...
« Antwort #9 am: Oktober 17, 2016, 12:31:07 »
Hallo Klaus,
Welche 3 denn, - sorry ??  :-[
ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Damien

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3109
Na, die drei die du in deinem Vorschlag nicht auf NULL gesetzt hast! ;-)
Freundliche Grüße
MaggieMay
 
Folgende Mitglieder bedankten sich: Damien

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1788
Re: "Das Objekt ist ungültig, oder es ist nicht mehr festgelegt" ...
« Antwort #11 am: Oktober 17, 2016, 16:22:01 »
Hallo,
Au man, ich hoffe es wird nicht schlimmer  ;)
Weil das Textfelder sind, die ich normalerweise auf vbNullString setze um die zu
leeren, - NULL geht natürlich auch.
Frag mich nicht, vielleicht wollte ich den TS nicht noch mehr verwirren ...
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Damien