Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Formatierung im Listenfeld

Begonnen von NinaG, November 24, 2015, 11:57:14

⏪ vorheriges - nächstes ⏩

NinaG

Hallo,

ich habe in einem Formular ein Listenfeld mit Herkunftstyp Werteliste. Es hat 7 Spalten und in 5 davon sollen Euro Beträge stehen. Wo kann ich die Spalten so formatieren, dass dort auch wirklich Euro Beträge stehen und nicht nur Zahlen?

Danke im vorraus

el_gomero

Hallo,

schau mal bei Karl Donaubauer in die faq
http://www.donkarl.com?FAQ4.16

;)
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

MzKlMu

Hallo,
verzichte auf die Werteliste und lege eine Tabelle an. In der Tabelle verwendest Du den Datentyp Währung für die 5 Spalten.
Wertelisten sind meist verzichtbar und keine flexible Lösung.

Nachtrag:
Der Vorschlag von Jürgen funktioniert auch nur mit einer Tabelle als Datenherkunft für das Listenfeld.
Gruß Klaus

DF6GL

Hallo,


unabhängig der Vorschläge:

und ich "verstehe" das Problem nicht...


Die Werteliste hat als "Datentyp" eh TEXT und kann deshalb auch so genutzt werden:


Z. B.:
für einspaltiges Kombi:
Datensatzherkunft:    "10,5 €";"0,00 €";"-1,00 €" 

für zweispaltiges Kombi mit ID-Wert in erster (0-ter) Spalte:
Datensatzherkunft:    1;"10,5 €";2;"0,00 €";3;"-1,00 €" 



(Die Gänsefüße können auch weggelassen werden)

PS: das gilt auch für ein Listenfeld.
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

NinaG

Ich fülle das Listenfeld mit vba mithilfe von mehreren Abfragen, die noch dazu abhängig von 4 optinalen Parmatern sind.
Ich habe jetzt so noch "€" angehängt bei den entsprechnden Spalten, aber kann ich die jetzt irgendwie rechtsbündig einstellen?

MzKlMu

#5
Hallo,
wenn Du ohnehin Abfragen hast, braucht es doch erst recht keine Wertliste.
Du kannst dem Listenfeld auch Abfragen mit Parametern direkt übergeben.
Z.B. so:
Me.Listenfeldname.RowSource = "Abfragename"
Zitataber kann ich die jetzt irgendwie rechtsbündig einstellen?
nur mit einem Trick.
Die Antwort dazu hast Du in #1 von Jürgen schon bekommen. Siehe Link dort.
Gruß Klaus

NinaG

Ich habe mal ein Bild von der Vorgabe wie das hinterher Aussehen soll angehängt.
Ich weiß nicht wie ich das so hinkriegen soll mit einer Abfrage als Herkunftstyp.

DF6GL

Hallo,

Zitat
Ich fülle das Listenfeld mit vba mithilfe von mehreren Abfragen, die noch dazu abhängig von 4 optinalen Parmatern sind.

Naja, Du kannst einen ja schön hinter's Licht führen  :'(

Ein Listenfeld ist für die gezeigte Darstellung wohl eher ungeeignet.  Ich würde da eher zu einem Bericht raten, dort sind die Daten (auf einfache Art und Weise) gruppierbar, berechenbar und formatierbar.
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

NinaG

Uff mit Berichten habe ich bisher nicht viel gearbeitet. Wie kann ich denn dort die einzelnen Werte so eintragen? Ich dachte da könnte ich auch nur Abfragen angeben, durch die die Werte eingetragen werden... oder auf bestimmte Felder in Formularen verweisen :/

DF6GL

#9
Hallo,


???

bei mir zieht dichter Nebel auf..

Beschreibe mal Deine DB ( Tabellen, Felder, Beziehungen) und die genaue Aufgabe,  die die DB lösen soll...
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

MaggieMay

Hallo,
Zitat von: NinaG am November 24, 2015, 14:13:50
Ich habe mal ein Bild von der Vorgabe wie das hinterher Aussehen soll angehängt.

das ist ein klassischer Fall für einen Bericht mit Gruppierungen, Zwischen- und Endsummen. Das einzige was du dem Bericht dazu liefern musst sind die Detail-Datensätze, die alle Datenfelder enthalten die dafür gebraucht werden.
Freundliche Grüße
MaggieMay

NinaG

Ich habe die Tabellen als Bild angehängt, ist das in Ordnung so? Sonst fasse ich sie nochmal schriftlich zusammen.
Ich soll eine Asuwertung der Planzahlen machen die abhängig von Kostenstelle, Gruppenname, Projektnummer, Sachkontonummer und Jahr ist, wobei Jahr(default ist das aktuelle Jahr) der einzige Parmater ist der zwangsweise eingegeben werden muss und zusätzlich mindestens einer der anderen.
In der Auswertung sollen dann die jeweiligen Gruppen stehen, für jede Gruppe die jeweiligen Projekte und für die Projekte die jeweiligen Sachkonten.
Für die Gruppen brauche ich nur den Gruppennamen, für die Projekte nur die Projektnummer und die Bezeichnung. Für die Sachkonten brauche ich die Sachkontonummer, die Bezeichnung, alle Ausgaben, die für das Sachkonto bereits bezahlt wurden (Ist), die Planzahlen, alle Ausgaben für Bestellungen, die noch nicht bezahlt wurden (Bindung aus Bestellung), alle Ausgaben für Abrufaufträge, die noch nicht bezahlt wurden (Bindung aus Abruf), und der Rest (Planzahlen-Ist-Bindung aus Bestellung-Bindung aus Abruf)
(Abrufaufträge sind Bestellungen bei denen Abrufauftrag=TRUE ist)
Dann soll zusätzlich nachdem alle Sachkonten für ein Projekt abgearbeitet sind die Summe von disen Spalten in einer neuen Zeile "Summe Projekt" stehen. Nachdem dann alle Projekte einer Gruppe abgearbeitet sind die Summe für die Gruppe in der Zeile "Summe Projektgruppe" und wenn alles fertig ist die Summe von allem in der Zeile "Summe gesamt". (Das habe ich noch nicht gemacht)
Bisher hatte ich in meinem Formular sobald Kostenstelle, Projekt, Sachkonto oder Gruppe ausgewählt wird (über ein jeweiliges Kombinationsfeld) foglende Sub aufgerufen:
Private Sub AuswertungZeigen()
    Dim sSQL As String

    sSQL = ""
    If Len(Gruppe) > 0 Then
        sSQL = " And P.Gruppenname ='" & Gruppe & "'"
    End If
    If Len(Kostenstelle) > 0 Then
        sSQL = sSQL + " And Pr.Kostenstelle=" & Kostenstelle
    End If
    If Len(Projekt) > 0 Then
        sSQL = sSQL + " And P.Projektnummer='" & Projekt & "'"
    End If
    If Len(Sachkonto) > 0 Then
        sSQL = sSQL + " And P.Sachkontonummer = " & Sachkonto
    End If
   
    Dim rs As Recordset
    Dim dbs As Database
    Set dbs = CurrentDb
    Set rs = dbs.OpenRecordset("SELECT P.Projektnummer, P.Gruppenname, P.Sachkontonummer, S.Bezeichnung, P.Planzahlen, P.Jahr FROM (public_Planzahlen AS P INNER JOIN public_Projekte AS Pr ON((P.Projektnummer=Pr.Projektnummer) And (P.Gruppenname = Pr.Gruppenname))) INNER JOIN public_Sachkonten As S ON(S.Sachkontonummer=P.Sachkontonummer) WHERE (P.Jahr =" & Jahr & sSQL & ") ORDER BY P.Gruppenname, P.Projektnummer, P.Sachkontonummer;", dbOpenSnapshot)

    Dim AltesProjekt As String
    Dim NeuesProjekt As String
    Dim AlteGruppe As String
    Dim NeueGruppe As String
   
    Dim BestellungIst As Currency
    Dim BestellungBindung As Currency

    Dim AbrufIst As Currency
    Dim AbrufBindung As Currency

    Dim Ist As Currency
    Dim Rest As Currency

    Dim rs2 As Recordset

    AlteGruppe = ""
    AltesProjekt = ""

    PlanListe.RowSource = ""
    If Not rs.BOF Then
        rs.MoveFirst
        NeuesProjekt = rs!Projektnummer
        NeueGruppe = rs!Gruppenname
        Do Until rs.EOF
            'Wenn die Gruppe gleich bleibt wird sie nicht erneut zur PlanListe hinzugefügt
            NeuesProjekt = rs!Projektnummer
            NeueGruppe = rs!Gruppenname
            If Not NeueGruppe = AlteGruppe Then
                PlanListe.AddItem (rs!Gruppenname)
                PlanListe.AddItem (rs!Projektnummer)
            'Wenn die Gruppe und das Projekt gleich bleibt wird dass Projekt ebenfalls nicht erneut zur PlanListe hinzugefügt
            ElseIf Not AltesProjekt = NeuesProjekt Then
                PlanListe.AddItem (rs!Projektnummer)
            End If
            AltesProjekt = NeuesProjekt
            AlteGruppe = NeueGruppe
            'IstZahlen aus Bestellung
            Set rs2 = dbs.OpenRecordset("SELECT SUM(A.Menge*A.[Preis pro Stück]) As BestellungIst FROM (public_Artikel As A INNER JOIN public_Bestellungen B ON (A.Bestellnummer=B.Bestellnummer)) WHERE ((B.Abrufauftrag=FALSE) And (A.Status=TRUE) And (A.Projektnummer='" & rs!Projektnummer & "') And (A.Sachkontonummer=" & rs!Sachkontonummer & ") And (A.Jahr=" & rs!Jahr & ") And (A.Gruppenname='" & rs!Gruppenname & "'));", dbOpenSnapshot)
            If Not rs2.EOF Then
                rs2.MoveFirst
                If IsNull(rs2!BestellungIst) Then
                    BestellungIst = CCur(0)
                Else
                    BestellungIst = CCur(rs2!BestellungIst)
                End If
            End If
            'Bindung aus Bestellung
            Set rs2 = dbs.OpenRecordset("SELECT SUM(A.Menge*A.[Preis pro Stück]) As BestellungBindung FROM (public_Artikel As A INNER JOIN public_Bestellungen B ON (A.Bestellnummer=B.Bestellnummer)) WHERE ((B.Abrufauftrag=FALSE) And (A.Status=FALSE) And (A.Projektnummer='" & rs!Projektnummer & "') And (A.Sachkontonummer=" & rs!Sachkontonummer & ") And (A.Jahr=" & rs!Jahr & ") And (A.Gruppenname='" & rs!Gruppenname & "'));", dbOpenSnapshot)
            If Not rs2.EOF Then
                rs2.MoveFirst
                If IsNull(rs2!BestellungBindung) Then
                    BestellungBindung = CCur(0)
                Else
                    BestellungBindung = CCur(rs2!BestellungBindung)
                End If
            End If
            'IstZahlen aus Abruf
            Set rs2 = dbs.OpenRecordset("SELECT SUM(R.Rechnungsbetrag) As AbrufIst FROM (((public_RechnungUndArtikel As RUA INNER JOIN public_Artikel A ON (RUA.Bestellnummer=A.Bestellnummer And RUA.Position=A.Position))INNER JOIN public_Rechnungen As R On(R.Rechnungsnummer=RUA.Rechnungsnummer And R.Bestellnummer=RUA.Bestellnummer))INNER JOIN public_Bestellungen B On(A.Bestellnummer=B.Bestellnummer)) WHERE ((B.Abrufauftrag=TRUE) And (A.Projektnummer='" & rs!Projektnummer & "') And (A.Sachkontonummer=" & rs!Sachkontonummer & ") And (A.Jahr=" & rs!Jahr & ") And (A.Gruppenname='" & rs!Gruppenname & "'));", dbOpenSnapshot)
            If Not rs2.EOF Then
                rs2.MoveFirst
                If IsNull(rs2!AbrufIst) Then
                    AbrufIst = CCur(0)
                Else
                    AbrufIst = CCur(rs2!AbrufIst)
                End If
            End If
            'Bindung aus Abruf
            'Betrag aus Abruf
            Set rs2 = dbs.OpenRecordset("SELECT SUM(A.Menge*A.[Preis pro Stück]) As AbrufBetrag FROM (public_Artikel As A INNER JOIN public_Bestellungen B ON (A.Bestellnummer=B.Bestellnummer)) WHERE ((B.Abrufauftrag=TRUE) And (A.Projektnummer='" & rs!Projektnummer & "') And (A.Sachkontonummer=" & rs!Sachkontonummer & ") And (A.Jahr=" & rs!Jahr & ") And (A.Gruppenname='" & rs!Gruppenname & "'));", dbOpenSnapshot)
            If Not rs2.EOF Then
                rs2.MoveFirst
                If IsNull(rs2!AbrufBetrag) Then
                    AbrufBindung = CCur(0) - AbrufIst
                Else
                    AbrufBindung = CCur(rs2!AbrufBetrag) - AbrufIst
                End If
            End If
            Ist = AbrufIst + BestellungIst
            Rest = CCur(rs!Planzahlen) - Ist - BestellungBindung - AbrufBindung
            rs2.Close
            Set rs2 = Nothing

            PlanListe.AddItem (rs!Sachkontonummer & ";" & rs!Bezeichnung & ";" & Ist & "€;" & CCur(rs!Planzahlen) & "€;" & BestellungBindung & "€;" & AbrufBindung & "€;" & Rest & "€")
            rs.MoveNext
        Loop
    End If
    rs.Close
    Set rs = Nothing
    PlanListe.Height = PlanListe.ListCount * 290
End Sub


Ich habe jetzt hoffentlich nichts vergessen.

DF6GL

Hallo,


wie vorgeschlagen,  mach Dir das Leben leichter und erstell einen gruppierenden und berechnenden Bericht...

Ohne jetzt die Details "erforscht" zu haben, erscheint mir ein Bericht geeignet, die Auswertung zu liefern, und das ohne viel VBA-Gedöns..
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

NinaG

Wie kriege ich es dort hin, dass für die jeweiligen Sachkonten dann nur einmal das Projekt angezeigt wird und für die jeweiligen Projekte genauso nur einmal die Gruppe?

MzKlMu

Hallo,
für jeden Eintrag der einmalig sein soll muss eine Gruppe angelegt werden. Dabei ist auf die hierarchische Folge zu achten.

Ist die DB noch in der Entwicklung ?

Ich habe da Zweifel am Datenmodell.

- warum ist keine referentielle Integrität eingestellt ?

- warum verwendest Du zusammengesetzte Primärschlüssel, auch noch 4-fach
Das erschwert nur die Handhabung

- Was macht das Jahr bei den Artikeln ?
Das Jahr gehört nur zu den Planzahlen.

- Ist die Sachkontennummer eine Eigenschaft des Artikel oder der Planzahlen ?
Wohl eher des Artikels.

- kann ein Artikel nur für ein Projekt verwendet werden ?
Das könnte man meinen, weil es bei den Artikeln ein Feld für das Projekt gibt.

Das ist noch nicht alles, was mir aufgefallen ist. Ich halte das Datenmodell für stark verbesserungsbedürftig. Und das sollte erst mal geklärt(bereinigt werden, bevor Du an Berichte denkst.
Gruß Klaus