Neuigkeiten:

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

Mobiles Hauptmenü

Zahlenfeld addieren

Begonnen von macrodiverm, September 12, 2010, 16:25:35

⏪ vorheriges - nächstes ⏩

macrodiverm

Hallo, ich habe bei meiner Datenbank ein Problem. Für einen Honorarausdruck benötige ich eine fortlaufende Nummer. Nun habe ich eine Tabelle erstellt mit nur einem Zahlenfeld. Dieses Feld soll immer, vor dem Aufruf des Honorars, um 1 addiert werden. Ich dachte, es könnte mit einem Makro funktionieren aber kann leider keinen geeigneten Befehl dafür finden. Kann mir dabei jemand helfen? Ich möchte aber keinen Autowert der sich immer automatisch um eines erhöht, da ich da ja immer einen neuen Datensatz schreiben muss. Wäre sicherlich auch mit einem Makro zu bewältigen aber meine erste "Vision" wäre mir lieber.
Also das Makro sollte folgendes tun: Tabelle öffnen, Feld um 1 addieren, Tabelle wieder schließen.
Also ganz einfach, wenn man es kann....

BITTE um RASCHE HILFE!!! DANKE!!!

macrodiverm

ach ja, der aktuelle - neue - Wert sollte natürlich gespeichert werden um beim nächsten Aufruf die nächst höhere Zahl zu erhalten ...

macrodiverm

Nun habe ich noch ein kleines Problem. Ich benötige für den Honorarausdruck aus einem Datumsfeld nur das Monat und das Jahr, wobei das Monat ausgeschrieben werden soll. Diesen Befehl würde ich in einem Bericht einbauen. Bitte um Hilfe! Danke!

DF6GL

HAllo,



zu Wert um 1 erhöhen:

bleib beim Autowert, da ja genau dieses:  "der aktuelle - neue - Wert sollte natürlich gespeichert werden um beim nächsten Aufruf die nächst höhere Zahl zu erhalten ..."   so passiert.

Vergiss Makros...

Zum Datum im Bericht:

Erstelle ein Textfeld , das an das Datumsfeld gebunden is und dessen Eigenschaft "Format"  so eingestellt ist:

mmmm jjjj 

database

#4
Hallo,

wenn die fortlaufende Nummer am Bericht (der Honorarnote) erscheint solltest du besser den Zahlenwert aus der Tabelle lesen und um 1 erhöhen.
Beim Autowert ergibt sich das Problem mit der unterbrochenen Reihenfolge wenn ein DS gelöscht wird.

Mit untenstehender kleinen Funktion in einem Standardmodul KÖNNTEST du das Hochzählen bewerkstelligen


Public Function Hochzaehlen() As Long
    dim nummer as Long
    'Fortlaufende Nummer erzeugen
    If DCount("DeinZahlenfeld", "DeineTabelle") = 0 Then
       nummer= 1
    Else
       nummer= DMax("DeinZahlenfeld", "DeineTabelle") + 1
    End If

    'Fortlaufgende Nummer in der Tabelle speichern
    DoCmd.RunSQL ("INSERT INTO DeineTabelle(DeinZahlenfeld)Values(" & nummer & ")")  
    'Rückgabe
    Hochzaehlen = nummer
End Function


Aufrufen:

Dim lfdNummer as long
lfdNummer = Hochzaehlen

Alles natürlich noch ohne Fehlerbehandlung!

HTH
Peter

macrodiverm

Hallo Peter!

vorerst herzlichen dank für deine hilfe. sieht ganz toll aus. da ich meine db nur im entwurfsmodus schreibe, kann ich mit diesen zeilen leider nichts anfangen. wie kann ich diese einbauen??? in einem makro? oder im quellcode der datenbank? schreibe leider keinen quellcode und daher mein "nichtwissen". wäre toll, wenn du mir wieder helfen könntest. DANKE

macrodiverm

@ DF6GL:

Danke für die Hilfe für das Datum! Funktioniert einwandfrei!!! SUPER!! Dachte ich mir doch gleich, kann nur eine einfache Lösung sein. Habe viele kompl. Sachen probiert - ging aber nix!! haha!! Danke nochmal. Das mit dem Autowert gefällt mir nicht so, da ich ja dann immer einen neuen Datensatz schreiben muss, was ich eigentlich nicht will. soll ein Datensatz sein mit eben dem einen feld!

database

Hallo,

wenn du mir verrätst, mit welcher Version von Access du das bewerkstelligen willst, erstelle ich dir ein kleines Beispiel.

Grüße

macrodiverm

access 2007

habe das modul geschrieben und in meiner db gespeichert. wie kann ich aber nun das modul aufrufen - mit einem makro? habe die befehle in den makros gesucht - kann hier kein "öffnenmodul" finden?!?!?

wäre super wenn du mir da weiterhelfen könntest. danke

database

#9
Hallo,

es gibt einen Makrobefehl dazu ...  'AusführenCode'

Makros sind grauslich!  ;D

Beispiel mit VBA folgt am Abend!
Beispiel ist im Anhang zu finden.

Das frmEingabe erzeugt beim Laden einen neuen Datensatz.
Es gibt ein Feld in dem du das Datum erfassen kannst - angezeigt wird Monat und Jahr.
Es gibt ein Kombifeld, aus dem kannst du einen Artikel auswählen.
Klickst du auf den Button wirst du gefragt ob du die Honorarnote erstellen wisst - JA, dann wird die Nummer erzeugt und im Formular angezeigt.
Eine weitere Frage ... möchtest du die Honorarnote anzeigen - JA öffnet den Bericht rptHonorar.

Alles gaaaaanz einfach aufgebaut - dient ausschließlich der Demonstration

HTH

Peter

Grüße
Peter



[Anhang gelöscht durch Administrator]

macrodiverm

hallo Peter!

Danke für deine Antwort. Nur, den Anhang kann ich nicht finden??? Also, nur kurz zu meiner DB. Ich rufe über ein Steuerelement einen Bericht auf. Dieser Bericht ist bereits fertig und in diesem Bericht möchte ua die Honorarnummer entnehmen. Also müsste ich in Zukunft ein Makro bzw. Modul aufrufen, dass zuerst die Nummer um 1 erhöht und dann den Bericht aufruft. So sollte es aussehen. Eine Frage ob nun eine neue Nummer vergeben werden soll ist nicht unbedingt erforderlich. Nun wäre es für mich wichtig, wie ich dann dieses Modul aufrufen kann. Ach ja, wie kann ich das Modul aus einen Makro aufrufen? Mit "AusführenCode"? Hab ich versucht, kann hier aber dann keinen weiteren Befehl finden, dass ich das Modul aufrufen kann. Bin ein Laie ... Dein Modul ...
Public Function Hochzaehlen() As Long    dim nummer as Long    'Fortlaufende Nummer erzeugen    If DCount("DeinZahlenfeld", "DeineTabelle") = 0 Then        nummer= 1    Else        nummer= DMax("DeinZahlenfeld", "DeineTabelle") + 1    End If    'Fortlaufgende Nummer in der Tabelle speichern    DoCmd.RunSQL ("INSERT INTO DeineTabelle(DeinZahlenfeld)Values(" & nummer & ")")      'Rückgabe     Hochzaehlen = nummerEnd Function
... sieht super aus und das möchte ich probieren!!! Habe das Modul geschrieben, in meiner DB gespeichert und möchte es eben nun aufrufen ... aber wie?? haha???
Wäre super wenn du mir da wieder weiterhelfen könntest.
DANKE!!!
Hans Peter

database

#11
Hallo,
das angefügte Beispiel siehst du unter meinem Beitrag, wenn du angemeldet bist!

siehe Bild im Anhang !

[Anhang gelöscht durch Administrator]

macrodiverm

hi peter,

also dein beispiel funktioniert nicht ganz. es wird zwar die zahl addiert, aber leider in einem neuen datensatz. d.h. es wird immer ein neuer datensatz erstellt, das was ich eben nicht möchte. wäre super wenn du das lösen könntest.
habe dann noch eine frage zum aufruf... das aber dann am abend, da ich jetzt schnell fort muss.

danke aber nochmals

database

Hallo,

es ist ein Unterschied ob etwas nicht funktioniert oder ob es nicht den Vorstellungen entspricht - von der Warte aus gesehen funktioniert mein Beispiel sehr gut :)

Ich habe dir jetzt eine neue Lösung erstellt - in 2 möglichen Varianten.
Wenn du nämlich in der Nummerntabelle keine neuen Datensätze haben willst, dann brauchst du ja die ganze Tabelle nicht!
Du kannst die letzte (höchste) Nummer ja auch aus der Tabelle 'tblHonorare' herauslesen, diese um 1 erhöhen und dann mit dem neuen Honorardatensatz in die Tabelle schreiben.
Dieses ist die Variante 2

Bei der Variante 1 habe ich jetzt die Lösung so angelegt, dass der allererste Honorardatensatz einen Eintrag in der Tabelle 'tblNummern' veranlasst, jeder weitere Honorardatensatz löst lediglich ein Update auf die Nummer aus, wobei diese um 1 erhöht wird.

Wie aber schon erwähnt brauchst du die Tabelle 'tblNummern' nicht wenn es ausschließlich darum geht, die Honorardatensätze zu nummerieren!
Beide Beispiele findest du im Anhang.

Hoffe nun haben wir alle Belange für's Erste abgedeckt ?  ;D

Grüße
Peter

[Anhang gelöscht durch Administrator]

macrodiverm

hallo Peter,

vorerst vielen dank für dein bemühen.

werde im laufe des tages deine vorschläge probieren. hoffentlich klappen sie dann in meiner db.

aber nun noch etwas anderes.

bei läuft das derzeit so ab.
ich rufe mit einem "schaltfläche" einen bericht (die honorarnote) auf. in diesem bericht werden eben ua die honrarnummer geschrieben und div. datensätze werden addiert für das honorar.

so, nun, mit deiner hilfe, sollte es ungefähr so aussehen.
aufruf des moduls mit - vermutlich - einer "schaltfläche" welche die honorarnummer um eines addiert und zurückspeichert. dann sollte das modul meinen oa bericht aufrufen. das wärs. klingt einfach, ist einfach, aber für mich zu schwer - haha.
ich werde es heute versuchen zu lösen, denke aber, ich werde es nicht schaffen. na mal sehen.
aber vielleicht könntest du mir dabei helfen.

zur info für dieses modul:
tabellenname: fortlaufendeNummer
feld:                 fortlnr
berichtname:   klientenstamm bericht - honorarnote

also würde es so benötigen, dass ich eben auf eine "schaltfläche" drücke und im endefekt für dann der bericht aufgerufen werden. der bericht benötigt die abfrage "klientenstamm bericht - honorarnote".

so, hoffe du verstehst das?? haha

danke nochmals für deine hilfe, werde mich dann auch irgendwie erkenntlich zeigen!!?? wenn möglich??? wohne nähe wiener neustadt!

hans peter