Seite 1 von 1

IF Abfrage von Boolean

Verfasst: Fr, 30.09.2011 11:36
von Olek2
Hallo,

Ich habe ein weiteres Problem mit folgendem Makro:

Code: Alles auswählen

Sub Berichtauswahl
    
   if   Miete = ja then
          oReport = ThisDatabaseDocument.reportDocuments.getbyname("Miet_Bericht")
          oReport.open
   else oReport = ThisDatabaseDocument.reportDocuments.getbyname("Leasing_Bericht")
          oReport.open

End if
End sub
Wenn ich dieses Makro per Button auslöse öffnet er immer den Miet Bericht auch wenn im Formular Leasing angehakt ist.
Miete und Leasing sind Boolean werte mit Default wert "nein" in der Tabelle.

Wieso macht das Makro die Abfrage nicht richtig?

Ich benutze Win7, OO 3.3.0

Danke für eure Hilfe



Moderation,4: verschoben in BASIC-Unterbereich; Betreff angepasst

Re: If Abrage von Boolean wert

Verfasst: Fr, 30.09.2011 12:03
von komma4
So, wie Du es schreibst, wird mit dem Inhalt der Variablen ja verglichen.

Versuch mal die richtige Syntax zu verwenden.

Bei Nutzung der internen HSQLDB
For BOOLEAN columns, the literals FALSE, TRUE, NULL.
Quelle: http://hsqldb.org/doc/guide/ch09.html


TRUE, FALSE und NULL sind BASIC-Schlüsselwörter, die auch genauso genutzt werden können.

Hilft das?

Re: If Abrage von Boolean wert

Verfasst: Fr, 30.09.2011 13:27
von Olek2
Hallo,

Ich habe jetzt "ja" durch "true" ersetzt und nun öffnet er immer den anderen also den Leasing_Bericht.

Also zumindest macht das Makro schonmal was anderes ;)

Danke für die schnelle hilfe

Re: If Abrage von Boolean wert

Verfasst: Fr, 30.09.2011 16:17
von komma4
Olek2 hat geschrieben:Ich habe jetzt "ja" durch "true" ersetzt
Ich weiss nicht, ob Du wirklich "TRUE" gesetzt hast, oder TRUE -wie ich schrieb-, richtig wäre jedenfalls

Code: Alles auswählen

   If   Miete = TRUE then

Re: If Abrage von Boolean wert

Verfasst: Fr, 30.09.2011 16:24
von DPunch
Aloha

Was hast Du denn in der Variable "Miete" drin?

Wenn Du da nichts drin stehen hast, ist klar, dass

Code: Alles auswählen

if   Miete = ja then
immer als TRUE (zwei leere Variablen haben den gleichen Wert) ausgewertet wird, so dass Du immer den Miet-Bericht öffnen wirst.
Auf der anderen Seite ist in diesem Fall ebenso klar, dass

Code: Alles auswählen

if   Miete = true then
immer als FALSE ausgewertet wird ("Miete" ist nicht gleich -1) und immer der Leasing-Bericht geöffnet wird.

Also: Schreib was in Deine "Miete"-Variable, damit Du sie sinnvoll einsetzen kannst.

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 08:39
von Olek2
Hallo,

Erstmal danke ich euch für die Hilfe...dadurch bin ich schonmal weitergekommen und "Verstehe" jetzt überhaupt was passiert :)

Die Miet abfrage funktioniert jetzt seit Heute morgen mit euren Hilfestellungen.

Danke nochmal :)

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 10:17
von Olek2
Moin,

Hatte mich leider zu früh gefreut :(

Ich habe jetzt kein Boolean wert mehr sondern mit einer dropdownliste wähle im Formular aus ob ich Mieten oder Leasen möchte in der Tabelle steht dann auch wirklich "Miete" oder "Leasing"

ABER bei diesem Code:

Code: Alles auswählen

    Sub Berichtauswahl
       
       if   Miete = "Leasing" then
       			oReport = ThisDatabaseDocument.reportDocuments.getbyname("Leasing_Bericht") 
       			oReport.open
       else oReport = ThisDatabaseDocument.reportDocuments.getbyname("Miet_Bericht")
              oReport.open

    End if
    End sub
geht er immer auf den ELSE wert und öffnet Miet_Bericht

und bei diesem Code:

Code: Alles auswählen

    Sub Berichtauswahl
       
       if   Miete = Leasing then
       			oReport = ThisDatabaseDocument.reportDocuments.getbyname("Leasing_Bericht") 
       			oReport.open
       else oReport = ThisDatabaseDocument.reportDocuments.getbyname("Miet_Bericht")
              oReport.open

    End if
    End sub
geht er immer uaf den IF wert und öffnet Leasing_Bericht

Ich versteh einfach nicht was ich jetzt Falsch mache da in der Tabelle auch wirklich Miet oder Leasing steht?

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 11:53
von komma4
Dann lese nochmal was DPunch geschrieben hat... und baue eine Anzeige ein, die Dir zu Beginn der SUB

Code: Alles auswählen

print Miete
ausgibt.

Wetten: da steht nichts drinne

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 12:21
von Olek2
Hallo,

Ich hab das eben mit dem

Code: Alles auswählen

Print Miete
gemacht und du hast recht das Textfenster ist leer...

Und als ich eben noch mal den Beitrag von DPunch gelesen hab ist mir nix aufgefallen :(
In meiner Stammdatenbank Tabelle Steht in der Spalte die Miete Heißt für jeden Datensatz Miete oder Leasing drin, das wird ja im Formular ausgewählt, abgespeichert und dann soll per Makro der Bericht aufgehen.

Also entweder steh ich gerade richtig auf dem Schlauch oder BASE will mich ärgern :(

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 12:53
von komma4
DPunch hat geschrieben:Was hast Du denn in der Variable "Miete" drin?
Das meinte ich.
Ohne Setzen des gewählten Spalteninhalts in Deine Variable Miete (der gewählte Name hat nichts mit dem Spaltennamen Deiner Tabelle zu tun) wird Deine Abfrage nicht funktionieren.


Edit: werde dem Thread demnächst in BASIC-Unterforum verschieben - da gehört er hin.

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 13:19
von Olek2
Hallo,
Ohne Setzen des gewählten Spalteninhalts in Deine Variable Miete (der gewählte Name hat nichts mit dem Spaltennamen Deiner Tabelle zu tun) wird Deine Abfrage nicht funktionieren.
Ok da war dann mein Fehler...Ich dachte die ganze zeit wenn ich

Code: Alles auswählen

 if   Miete = "Miete" then
schreibe das, das Makro in meine Spalte Miete guckt und sieht was da drinn weil es ja aktuell im Formular ausgewählt wurde....
Dann steh ich jetzt ja vor dem Problem wie ich der Variablen Miete sage das es den Wert aus dem Datensatz nehmen soll der eben Bearbeitet wurde ist das richtig?
Uff hätte ich gewusst was da so dran hängt hätte ich erstmal nen Lehrgang gemacht, hab ja nun leider keinerlei Ahnung von Basic :(

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 13:58
von komma4
Wie wird denn der Bericht ausgelöst... Schaltfläche? Du hast zuvor die Daten in Formularfeldern bearbeitet... oder in einem Tabellengrid?

Und wie greift der Bericht auf die Daten zu (Datenquelle: Abfrage, Tabelle, View)?


Gab vor kurzem hier einen Thread über Bericht mit gewähltem Datensatz aufrufen...

(Geh' jetzt Abendessen, danach wird verschoben und ggfs. gesplittet - hat ja nichts mehr mit der IF-Abfrage zu tun).


Ergänzung:
Olek2 hat geschrieben: hab ja nun leider keinerlei Ahnung von Basic :(
Wir haben alle mal angefangen => Tee trinken :)

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 14:10
von Olek2
Der Bericht wird mit einer Schaltfläche ausgelöst und die Daten wurden von Hand in das Formular eingetragen bzw. "Anrede" und ob gemietet oder geleast wird werden per drop down Menü ausgewählt.
Der Bericht greift dann auf meine Tabelle zu wo alle Datensätze mit den gemachten Angaben drinstehen.

Den von dir erwähnten Thread hab ich gelesen und leider die Lösung am ende null verstanden hab rumprobiert aber klappte leider nicht.

Dann hab ich also 2 Probleme...Einmal den richtigen Bericht zu öffnen (Miet-/ oder Leasing Bericht) und dann noch das die Daten aus dem Aktuellen Datensatz genommen werden sollen
und nicht immer aus dem ersten wie im moment Leider...

Wenn du einen guten Onlin Kurs weisst wo ich mal wegen basic reinschauen kann immer herdamit bitte...weil langsam kommt mir der Gedanke ich stell ziemlich "einfache" fragen

Re: If Abrage von Boolean wert

Verfasst: Di, 04.10.2011 16:48
von DPunch
Aloha

Rein prinzipiell kriegst Du den Inhalt Deiner Spalte "Miete" so:

Code: Alles auswählen

oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0)
Miete = oForm.getString(oForm.findColumn("Miete"))
Dann hast Du in Deiner Variable "Miete" den Inhalt des aktuell ausgewählten Datensatzes aus der Spalte "Miete".
Deine logische Verzweigung muss dann nur noch in

Code: Alles auswählen

if   Miete = "Miete" then
(...)
else
(...)
end if
umgebaut werden.

Re: IF Abfrage von Boolean

Verfasst: Do, 06.10.2011 11:57
von Olek2
Hallo,

Danke euch es hat funktioniert die IF abfrage läuft :)

Jetzt kümmer ich mich um das Problem das immer der erste Datensatz genommen wird und nicht der aktuelle aber das in eienm neuen Thread... :)