Abfrage mit Bedingung

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Abfrage mit Bedingung

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 23:47

ich glaub, dass funktioniert.
Muss es morgen nochmal in Ruhe testen, sieht aber schon sehr gut aus.

Danke dir, für deine Ausdauer und Hilfe.

Grüße

Sacca

Re: Abfrage mit Bedingung

von DPunch » Di, 22.11.2011 23:43

Mit Base-Formular + embedded HSQLDB funktioniert für mich auch

Code: Alles auswählen

oForm.Filter = """A"" = 'deutsch' AND (""B"" IS NULL OR ""C"" IS NULL)"
einwandfrei.
Insofern kann ich Dir da leider nicht weiterhelfen.

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 23:25

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

Re: Abfrage mit Bedingung

von DPunch » Di, 22.11.2011 23:17

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).

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 23:08

sry, war falsches Bild,

hier das richtige
Dateianhänge
fehler3.jpg
fehler3.jpg (39.71 KiB) 2022 mal betrachtet

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 23:04

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:
Dateianhänge
Fehler2.jpg
Fehler2.jpg (36.65 KiB) 2024 mal betrachtet

Re: Abfrage mit Bedingung

von DPunch » Di, 22.11.2011 22:59

saccara hat geschrieben:geht auch nicht so richtig
Und das soll was heissen...?

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 22:57

geht auch nicht so richtig

sacca

danke trotzdem

Re: Abfrage mit Bedingung

von DPunch » Di, 22.11.2011 22:53

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

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)"
zu arbeiten.
Oder vielleicht kennt auch jemand, der mehr Ahnung von Base hat, einen anderen Weg.

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 21:47

jup, ich kann mal den ganzen code posten.
  • 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
genaugenommen, soll über ein markierfeld dem produkt bescheinigt werden, ob es bei google gelistet werden soll und dann soll über einen filter herausgefunden werden, ob noch google relevanten Daten (wie ean, mpn o.ä.) fehlen.
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

von DPunch » Di, 22.11.2011 21:34

Aloha

Bist Du in einem Formular?
Wenn ja, hast Du

Code: Alles auswählen

oForm.applyFilter = TRUE
gesetzt?
Bedenkst Du Groß-/Kleinschriebung?

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 21:17

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

Re: Abfrage mit Bedingung

von DPunch » Di, 22.11.2011 11:48

Aloha

Code: Alles auswählen

oForm.filter = "(`Datenbank`.`Bedingung` = 'ja' AND (`Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` IS NULL))"
Funktioniert nicht?
(= 'ja' unter Umständen ersetzen durch = 1, je nach Spaltendefinition)

Re: Abfrage mit Bedingung

von saccara » Di, 22.11.2011 09:07

richtig, hatte das heute früh nur noch schnell reingehackt, deshalb hat sich der Fehler eingeschlichen.
Das "=" muss natürlich weg.

sacca

Re: Abfrage mit Bedingung

von gogo » Di, 22.11.2011 08:53

Lösung über eine Tabellenansicht gefunden, bei der ein editieren nicht möglich ist
Tabelle oder Formular?

Code: Alles auswählen

"( `Datenbank`.`info1` IS NULL OR `Datenbank`.`info2` = IS NULL)"
... wird wegen dem "=" Probleme machen - einfach weglassen.

Nach oben