Abfrage mit Bedingung
Moderator: Moderatoren
Abfrage mit Bedingung
Hallo
Ich möchte eine Filterung mit einer Bedingung.
Dazu muss die Bedingung (Markierfeld Ja/Nein Boolean) erfüllt sein und alle Datensätze auflisten, bei denen info1 oder info2 leer ist.
Tabelle sieht so aus:
ID____Bedingung____info1____info2
1.____ja____________5_______1__
2.____nein__________3__________
3.____ja____________2__________
praktisch soll Datensatz id 3. angezeigt werden.
Ohne die Bedingung würde das so aussehen.
oForm.filter = "( `Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` = IS NULL)"
Aber mit Einbindung der Bedingung, habe ich nur eine Lösung über eine Tabellenansicht gefunden, bei der ein editieren nicht möglich ist.
Ist das überhaubt möglich, da es sich um eine verschachtelte Abfrage handelt?
Hat da einer ne Idee.
Danke
Sacca
Ich möchte eine Filterung mit einer Bedingung.
Dazu muss die Bedingung (Markierfeld Ja/Nein Boolean) erfüllt sein und alle Datensätze auflisten, bei denen info1 oder info2 leer ist.
Tabelle sieht so aus:
ID____Bedingung____info1____info2
1.____ja____________5_______1__
2.____nein__________3__________
3.____ja____________2__________
praktisch soll Datensatz id 3. angezeigt werden.
Ohne die Bedingung würde das so aussehen.
oForm.filter = "( `Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` = IS NULL)"
Aber mit Einbindung der Bedingung, habe ich nur eine Lösung über eine Tabellenansicht gefunden, bei der ein editieren nicht möglich ist.
Ist das überhaubt möglich, da es sich um eine verschachtelte Abfrage handelt?
Hat da einer ne Idee.
Danke
Sacca
Zuletzt geändert von saccara am Di, 22.11.2011 09:16, insgesamt 1-mal geändert.
Re: Abfrage mit Bedingung
Tabelle oder Formular?Lösung über eine Tabellenansicht gefunden, bei der ein editieren nicht möglich ist
Code: Alles auswählen
"( `Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` = IS NULL)"
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Re: Abfrage mit Bedingung
richtig, hatte das heute früh nur noch schnell reingehackt, deshalb hat sich der Fehler eingeschlichen.
Das "=" muss natürlich weg.
sacca
Das "=" muss natürlich weg.
sacca
Re: Abfrage mit Bedingung
Aloha
Funktioniert nicht?
(= 'ja' unter Umständen ersetzen durch = 1, je nach Spaltendefinition)
Code: Alles auswählen
oForm.filter = "(`Datenbank`.`Bedingung` = 'ja' AND (`Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` IS NULL))"
(= 'ja' unter Umständen ersetzen durch = 1, je nach Spaltendefinition)
Re: Abfrage mit Bedingung
Entweder habe ich hier nen Fehler drin, oder das funktioniert nicht.
oForm.filter = "(`Artikel-Datenbank`.`sprache` = 'deutsch' AND(`Artikel-Datenbank`.`EAN:` IS NULL OR `Artikel-Datenbank`.`mpn` IS NULL ))"
sprache, ean:, und mpn sind alle strings.
Es kommt keine Filterung zustande.
sacca
oForm.filter = "(`Artikel-Datenbank`.`sprache` = 'deutsch' AND(`Artikel-Datenbank`.`EAN:` IS NULL OR `Artikel-Datenbank`.`mpn` IS NULL ))"
sprache, ean:, und mpn sind alle strings.
Es kommt keine Filterung zustande.
sacca
Re: Abfrage mit Bedingung
Aloha
Bist Du in einem Formular?
Wenn ja, hast Du
gesetzt?
Bedenkst Du Groß-/Kleinschriebung?
Bist Du in einem Formular?
Wenn ja, hast Du
Code: Alles auswählen
oForm.applyFilter = TRUE
Bedenkst Du Groß-/Kleinschriebung?
Re: Abfrage mit Bedingung
jup, ich kann mal den ganzen code posten.
Habe aber jetzt bissl rumprobiert und das Markierfeld durch die Bedingung (Sprache) ersetzt, um den Fehler zu finden.
Es sind noch einige andere Bedingungen notwendig, aber ich habe die erstmal rausgelöscht, wegen Fehlersuche und wegen der Übersichtlichkeit.
Es geht praktisch nur um die Verschachtelung (2. If...then Anweisung) .
Die anderen Funktionieren prima.
Gruß
sacca
- sub Abfrage_Filter_setzen
Dim oSuchFeld4 as variant
Dim oTypFeld4 as variant
Dim oDoc4 as variant
Dim oForm as variant
oDoc4 = ThisComponent
oForm = oDoc4.DrawPage.Forms.GetByName("MainForm") 'oder getByIndex()
oSuchFeld4 = oForm.getByName("Abfrage_Filter_Menu")
sSuchwort4 = oSuchFeld4.text
If sSuchwort4="Nicht im Shop" then sSuchwort4 ="( `Artikel-Datenbank`.`Produkt-URL` IS NULL AND `Artikel-Datenbank`.`Sprache` = 'deutsch' )"
If sSuchwort4="Googledaten fehlen" then sSuchwort4 ="(`Artikel-Datenbank`.`Sprache` = 'deutsch' AND(`Artikel-Datenbank`.`EAN:` IS NULL OR `Artikel-Datenbank`.`mpn` IS NULL ))"
If sSuchwort4="Bemerkungen" then sSuchwort4 ="( `Artikel-Datenbank`.`Bemerkung:` IS NOT NULL )"
oForm.filter = sSuchwort4
oForm.ApplyFilter=true
oForm.reload()
end sub
Habe aber jetzt bissl rumprobiert und das Markierfeld durch die Bedingung (Sprache) ersetzt, um den Fehler zu finden.
Es sind noch einige andere Bedingungen notwendig, aber ich habe die erstmal rausgelöscht, wegen Fehlersuche und wegen der Übersichtlichkeit.
Es geht praktisch nur um die Verschachtelung (2. If...then Anweisung) .
Die anderen Funktionieren prima.
Gruß
sacca
Re: Abfrage mit Bedingung
Aloha
Sieht auf den ersten Blick so aus, als würde Base geschachtelte Bedingungen nicht korrekt erkennen.
Bliebe die Möglichkeit, den zugrundeliegenden SQL-Befehl des Formulars zu ändern, oder mit einem Workaround ala
zu arbeiten.
Oder vielleicht kennt auch jemand, der mehr Ahnung von Base hat, einen anderen Weg.
Sieht auf den ersten Blick so aus, als würde Base geschachtelte Bedingungen nicht korrekt erkennen.
Bliebe die Möglichkeit, den zugrundeliegenden SQL-Befehl des Formulars zu ändern, oder mit einem Workaround ala
Code: Alles auswählen
If sSuchwort4="Googledaten fehlen" then sSuchwort4 ="(`Artikel-Datenbank`.`Sprache` = 'deutsch' AND IF(CHAR_LENGTH(`Artikel-Datenbank`.`EAN:`),1,0)+IF(CHAR_LENGTH(`Artikel-Datenbank`.`mpn:`),1,0) < 2)"
Oder vielleicht kennt auch jemand, der mehr Ahnung von Base hat, einen anderen Weg.
Re: Abfrage mit Bedingung
geht auch nicht so richtig
sacca
danke trotzdem
sacca
danke trotzdem
Re: Abfrage mit Bedingung
Und das soll was heissen...?saccara hat geschrieben:geht auch nicht so richtig
Re: Abfrage mit Bedingung
es passiert nix
gibt keinen Fehler, aber es funzt auch nix mehr, als wenn das makro abgeschmiert ist.
Mit bleibt nur, in den den entwurfsmodus zu wechseln und erneut beginnen.
Dann kommt allerdings die Fehlermeldung:
gibt keinen Fehler, aber es funzt auch nix mehr, als wenn das makro abgeschmiert ist.
Mit bleibt nur, in den den entwurfsmodus zu wechseln und erneut beginnen.
Dann kommt allerdings die Fehlermeldung:
- Dateianhänge
-
- Fehler2.jpg (36.65 KiB) 2034 mal betrachtet
Re: Abfrage mit Bedingung
sry, war falsches Bild,
hier das richtige
hier das richtige
- Dateianhänge
-
- fehler3.jpg (39.71 KiB) 2032 mal betrachtet
Re: Abfrage mit Bedingung
Womit arbeitest Du?
Deine ursprünglichen Codeausschnitte liessen eine MySQL-Datenbank vermuten (und dort funktioniert der von mir gepostete Workaround wie gewünscht, das habe ich gerade mit einem Base-Formular + MySQL-DB getestet, Win XP + OOo 3.2.1).
Deine ursprünglichen Codeausschnitte liessen eine MySQL-Datenbank vermuten (und dort funktioniert der von mir gepostete Workaround wie gewünscht, das habe ich gerade mit einem Base-Formular + MySQL-DB getestet, Win XP + OOo 3.2.1).
Re: Abfrage mit Bedingung
Ist openoffice Base, oder besser gesagt LibreOffice Base.
Aber ich glaube, ich habe ne Lösung.
Ich erstelle ne Abfrage mit dem Assistenten, der prüft, ob EAN,mpn etc vorhanden sind oder nicht und wechsel dann per Makro von der Haupttabelle (Artikel-Datenbank) in die Abfragetabelle.
Aus dieser lässt sich bequem per Makro, alle Artikel rausfiltern, die die Bedingung (in dem Fall Sprache="deutsch") erfüllen.
Ist nur die Frage, wie ich von der Tabelle auf die Abfrage wechsel.
Ich befasse mich erst seit paar Wochen mit dem Thema, deshalb Entschuldigung für mögliche newbee-Fehler.
sacca
Aber ich glaube, ich habe ne Lösung.
Ich erstelle ne Abfrage mit dem Assistenten, der prüft, ob EAN,mpn etc vorhanden sind oder nicht und wechsel dann per Makro von der Haupttabelle (Artikel-Datenbank) in die Abfragetabelle.
Aus dieser lässt sich bequem per Makro, alle Artikel rausfiltern, die die Bedingung (in dem Fall Sprache="deutsch") erfüllen.
Ist nur die Frage, wie ich von der Tabelle auf die Abfrage wechsel.
Ich befasse mich erst seit paar Wochen mit dem Thema, deshalb Entschuldigung für mögliche newbee-Fehler.
sacca
Re: Abfrage mit Bedingung
Mit Base-Formular + embedded HSQLDB funktioniert für mich auch
einwandfrei.
Insofern kann ich Dir da leider nicht weiterhelfen.
Code: Alles auswählen
oForm.Filter = """A"" = 'deutsch' AND (""B"" IS NULL OR ""C"" IS NULL)"
Insofern kann ich Dir da leider nicht weiterhelfen.