Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Division mit Nachkommastellen

Begonnen von Paule, März 03, 2016, 09:37:32

⏪ vorheriges - nächstes ⏩

DF6GL

#15
Hallo,

ZitatTag 3 ist ein Textfeld 

"Tag 3" sehe ich nicht..  nur "Tag3" . Zudem ist "TAG3" ein TABELLEN-Feld, kein Formular-Textfeld.


Zitatdem Buchungssatz eine Kostenstelle zuordnen

Den Datentyp (und darauf kommt es an!) dieses Tabellenfeldes verschweigst Du jedoch.


ZitatSondern es ist ein freiex Textfeld, wo man alles angeben kann

Welchen Ausdruck meinst Du damit?
"BK_BookEntryT.Tag3"   ist ein TabellenFeld (Was "BK_BookEntryT" nun ist (Tabelle oder Abfrage) , hast Du nicht beantwortet.

"[TempVar]![Tag3J]"  ist ein Element der Tempvar-Auflistung und kein Textfeld


Zitatsollen die Buchungssätze mit allen Tag 3 angezeigt werden, egal, was da drin steht.

So übabhängig ist das aber nicht zu sehen...   Es besteht eine "And"-Bedingung zu anderen "Tagx"  , die berücksichtigt werden müssen, bzw. von der Abfrage berücksichtigt werden.

Was soll überhaupt "Tagx"  bedeuten?  Hat das was mit "Tagen" zu tun, oder soll das "Marke" bedeuten?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Tag bedeutet in meinem Kontext "Marke".

Tag3 ist als Tabellen-Felddatentyp "Kurzer Text". Genauso wie Tag1 und Tag2 die mit der identischen Systematik bei den Kriterien allerdings funktionieren.

Im Formular zur Hinzufügung eines neuen Datensatzes in BK_BookEntryT heißt das zugeordnete Steuerelement "Tag3". In dieser Tabelle werden alle Buchungssätze gespeichert. 

In meinem Parameter-Eingabeformular für die Ermittlung der Abfragekriterien aus TB_BookEntryT wird mit einem Textfeld namens "Tag3J" die TempVar "Tag3J" gespeichert.
Die anderen beiden Tags (1&2) sind klar vorgegeben, mit Branch bzw. Headquarter zum auswählen (Listenfeld) und abhängig von der Eingabe bei Tag1 wird in Tag2 dann entweder die Abteilungen des Headquarters angegeben oder eben die einzelnen Branches (=Filialen).

Bei der Hinzufügung eines neuen Buchungssatz gibt es in dem dazugehörigen Formular ein Textfeld "Tag3" ohne irgendwelche Einschränkung oder Auswahlmöglichkeit. Dort kann alles oder nichts stehen --> In BK_BookEntryT.Tag3 kann also dementsprechend nichts stehen, oder alles, was man eben dort in dem entsprechende Formular zum Hinzufügen von Datensätzen in diese Tabelle, eingetragen hat.

Diese Informationen will ich nun gemäß Benutzer's Wünsche abfragen.
Will er auch nach "Tag3" gezielt abfragen, dann soll er das machen können über das Formular mit den Parametern. Dort gibt er dann das gewünschte Kriterium in das Textfeld "Tag3J" ein. Dann soll er mir alle Datensätze anzeigen, die (sofern alle anderen Parameter leer gelassen) unter Tag3 die gewünschte Information gespeichert hat. TempVar Tag3J muss damit mit Tag3 übereinstimmen. Sofern nichts bei der Eingabe im Parameter-Formular in "Tag3J" angegeben wurde, soll er mir eben alle Datensätze zeigen, völlig unabhängig davon, was unter Tag3 in BK_BookEntryT.Tag3 gespeichert wurde.

BK_BookEntryT ist eine Tabelle, Tag3 ein Feld davon.


Ich hoffe, ich habe mich verständlich ausgedrückt. Gerne stelle ich aber auch noch weitere Informationen zur Verfügung.
Vielen Dank für die geduldige Hilfe!

DF6GL

Hallo,

ja, ok...

wenn wir von dieser Where-Condition ausgehen:


ZitatWHERE (((BK_BookEntryT.BusinessTransaction)>=Nz([TempVar]![StartDateJ],DateValue('1900-01-01')) And (BK_BookEntryT.BusinessTransaction)<=Nz([TempVar]![EndDateJ],DateValue('2999-12-31'))) AND ((BK_BookEntryT.DebitSide) Like [TempVar]![DebitAcc] & ('*')) AND ((BK_BookEntryT.CreditSide) Like [TempVar]![CreditAcc] & ('*')) AND ((BK_BookEntryT.Tag1) Like [TempVar]![Tag1J] & ('*')) AND ((BK_BookEntryT.Tag2) Like [TempVar]![Tag2J] & ('*')) AND ((BK_BookEntryT.Tag3) Like [TempVar]![Tag3J] & ('*')));

geht  der Datumbereich hart mit in die Bedingung ein....


Gibt es denn zum Zeitpunkt der besagten Abfrage  passende Datum in den Datensätzen?

Evtl. sollte die Bedingung dann so geschrieben werden:

WHERE (((  Nz(BK_BookEntryT.BusinessTransaction,Date())  )>=Nz([TempVar]![StartDateJ],DateValue('1900-01-01')) And (   Nz(BK_BookEntryT.BusinessTransaction,Date())   )<=Nz([TempVar]![EndDateJ], ..............

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Hallo,

ich habe im Screenshot mal meine Test-Datensätze.
Es sind derzeit nur drei.
Möchte ich jetzt bei meine Formular zur Eingabe der Parameter (über Speicherung der TempVar) bei Tag1 "Branch" und Tag3 "Sawadi" stehen haben, dann müsste er mir folglich keinen Buchungssatz anzeigen, weil es einen Buchungssatz, der als Tag1 "Branch" UND als Tag3 "Sawadi" hat, nicht geben. Er zeigt mir aber jetzt den Buchungssatz mit Tag1="Branch" an.
Alle anderen Parameter habe ich leer gelassen. Daher sollten sie keine Rolle spielen.

Anscheinend bekommt Access in meinem Fall nicht gesagt, dass beide Kriterien gleichzeitig berücksichtigt werden sollen.

Bei allen anderen Kriterien ist dies aber kein Problem. Gebe ich zum Beispiel unter Tag1 "Branch" und unter Tag2 "Daressalaam" an, zeigt er mir richtigerweise KEINEN Buchungssatz.
Gebe ich unter Tag1 "Headquarter" an und als Zeitraum Januar, dann zeigt er mir auch richtigerweise keinen Buchungssatz an.
Gebe ich als Zeitraum März an, unter Tag1 "Branch" und unter Tag2 "Mtwara" kommt auch richtigerweise kein Buchungssatz.

Esklappt also nur bei dem Tag3 nicht und das obwohl es ja nicht irgendwie anders aufgebaut ist.


____________

Was genau meinst du mit dem Datumsbereich? Der Datumsbereich SOLL extra in die Abfrage mit hinein. Ich will es als ein Parameter angeben aber auch weglassen können (indem ich es einfach frei lasse).

Die vorgeschlagene Veränderung betrifft das "Date()" hinter BK_BookEntryT.BusinessTransaction, oder? Was genau würde das denn machen?


Ich habe außerdem mal einen Screenshot von dem Formular zur Eingabe der Parameter gemacht.

DF6GL

Hallo,

der Vorschlag mit Date() bezieht sich nur auf den Fall, dass in "BusinessTranaction" und/oder "BookingDate" keine Datum stehen.



Hast Du mal geprüft, ob Du wirklich die Texte in die richtigen Tempvars-Elemente schreibst?

(Im Direktbereich mit  gesetztem Haltepunkt  ?TempVar!Tag3J eintragen und Return drücken...)

Je nachdem, wo der SQL-String steht (im Abfrageentwurf oder im VBA-Code)  sind die Hochkommata um die Datums-Literale durch Gänsefüße zu ersetzen...


Ansonsten lad die Db mal hier hoch, koprimiert/repariert und gezippt.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Ok,

irgendwie funktioniert es nun doch nicht mehr. Ich hatte nochmal ein bisschen rumgespielt und die Namen der TempVars ausgetauscht...jetzt ist aber wieder alles beim alten Stand.
Bei der Abfrage arbeite ich eigentlich nur im SQL-Code.

Ich habe die DB mal hochgeladen.

Die Tabellen BK_BookEntryT, die Abfrage BK_JournalQ (BK_JournalQ2 war nur eine Testabfrage) und BK_JournalR sind die entscheidenden Größen. Die Auswahl findet über BK_ShowJournalF statt.

Vielen Dank für deine Mühen.

DF6GL

Hallo,


ändere  "tempvar"  in "tempvars" 
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Hallo,

ich habe den Code jetzt so geändert:
WHERE (((BK_BookEntryT.BusinessTransaction)>=Nz([TempVars]![StartDateJ],DateValue('1900-01-01')) And (BK_BookEntryT.BusinessTransaction)<=Nz([TempVars]![EndDateJ],DateValue('2999-12-31'))) AND ((BK_BookEntryT.DebitSide) Like [TempVars]![DebitAcc] & ('*')) AND ((BK_BookEntryT.CreditSide) Like [TempVars]![CreditAcc] & ('*')) AND ((BK_BookEntryT.Tag1) Like [TempVars]![Tag1J] & ('*')) AND ((BK_BookEntryT.Tag2) Like [TempVars]![Tag2J] & ('*'))) And ((BK_BookEntryT.Tag3) Like [TempVars]![Tag3J] & ('*'));

Auch das funktioniert nicht wirklich. Er zeigt jetzt zum Beispiel nur die Headquarter Datensätze an (mit Tag1 =Headquarter), wenn ich im Parameter-Eingabeformular auch Tag2 und Tag3 angebe (ich habe aus Spaß bei einem Headquarter-Datensatz als Tag3 noch "Sawadi" hinzugefügt und nach nach die entsprechenden Tag1, Tag2 und Tag3 im Formular angegeben. Dann wird der Buchungssatz angezeigt...allerdings. Wenn ich aber nur Headquarter auswähle als Tag1 und bei Tag2/3 nichts mache, wird keiner der Headquarter-Buchungssätze angezeigt.

Ohne das Tag3-Kriterium hat es einwandfrei funktioniert.

DF6GL

Hallo,

dann taste Dich doch mal an das problem heran.

Entferne zunächst das Datums-Kriterium und prüfe nur die 3 restlichen Tag-Elemente.


(Die Hochkommata hast Du auch noch nicht durch Gänsefüsse ersetzt..  Welche Access-Version in welcher Sprache verwendest Du?)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Ich verwende Access 2013 mit Englisch als Spracheinstellung.
Das mit den Hochkommata habe ich schon versucht, aber es ändert sich nix. Beliebig die Konditionen hinzuzufügen bzw. wegzulassen habe ich ebenso probiert, ohne das etwas passiert.

Wie ich schon einmal vermutet habe, liegt das Problem an:
((BK_BookEntryT.Tag3) Like TempVars!Tag3J &[u][b] ('*')[/b][/u]));

In meinen Augen sucht er sich dann alle Datensätze raus, die irgendetwas beliebiges BK_BookEntryT.Tag3 stehen haben. Ich möchte aber, dass er auch die anzeigt, bei denen GAR NICHTS unter Tag3 angegeben ist.

Korrigiere mich, wenn ich falsch liege...

DF6GL

Hallo,


also englisch-sprachige Access-Version?  dann sollte das Hochkomma in Ordnung sein.



versuch dann mal so:  .....  And  ( BK_BookEntryT.Tag3 Like TempVars!Tag3J & '*'   or   BK_BookEntryT.Tag3  is Null )    ......


Habe die überflüssigen Klammern entfernt. Die Klammern um die Or-Bedingung sind zwingend.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Paule

Hallo,
ja, super, das funktioniert jetzt. VIELEN DANK!

Wenn ich jetzt meine beiden Buchungssätze vom Headquarter habe (nur einer hat bei Tag3 "Sawadi" stehen), dann zeigt er mir jetzt endlich beide Headquarter-Buchungssätze an, unabhängig davon, ob bei Tag3 etwas steht oder nicht. 

Nun möchte ich noch einen Schritt weiter gehen und als Parameter in mein Formular unter Tag1=Headquarter, und Tag3= Sawadi eingeben.
Dann soll mir die Abfrage nur den einen Buchungssatz des Headquarters anzeigen, der als Tag3 "Sawadi" aufweist.

Dafür müsste ich ja wohl etwas an den Kriterien ändern, sodass er weiß, dass er bei der ABfrage nur Buchungssätze anzeigen soll, die Tag1 und Tag3 genau so haben, wie ich es im Formular angegeben habe und nicht Buchungssätze mit Tag 1 UND zusätzlich Buchungssätze auf die Tag3 zutrifft.

Das heißt, diese drei Kriterien (Tag1, Tag2 und Tag3) muss ich nochmal irgendwie miteinander, untereinander anders verknüpfen, oder). Wüsstest du auch da einen Rat?

MzKlMu

Hallo,
wenn ich hier Buchungssätze lese, frage ich mich, ob es nicht sinnvoll wäre erst mal die im anderen Thema (http://www.access-o-mania.de/forum/index.php?topic=21143.msg119917;topicseen#new) vorgeschlagene (und bessere) Umstrukturierung abzuwarten. Es könnte nämlich sein, dass das was Du hier vorhast dann wieder nicht mehr geht.
Gruß Klaus

Paule

Hallo,

danke für die Anmerkung.
Die Kreditdaten sind unabhängig von den Buchungssätzen und werden zusätzlich eingegeben. Daher sollte das kein Problem sein.