Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Stoppelhopser am Januar 04, 2016, 12:16:10

Titel: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 12:16:10
Hallo liebe Forenmitglieder,
habe da ein kleines Problem mit der Übergabe von Daten aus einem Formular in eine Tabelle.

Kurz erklärt:
- Mittels VBA soll der Wert aus einem Feld in einem Formular ausgelesen und in eine Tabelle geschrieben werden.
- Das Feld wird berechnet und es wird ein Wert in Währung ausgegeben
- dieser Wert wird in einer Variablen gespeichert
Zitatverf_GM = Forms("frm_kontenansicht").txt_verfuegbare_GM"
- diese wurde vorher deklariert mit
ZitatDim verf_GM As Variant
- anschliessend wird dieser Wert in einer Tabelle gespeichert
Zitatdb.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_GM & ")"

Solange die Variable als Integer deklariert wird läuft der Code durch. Es wird aber gerundet (klar wegen Integer). Ändere ich die Deklaration wie ober beschrieben, wird der Code nicht ausgeführt.

Habe mehrere Deklarationsvarianten ausprobiert... Single, Double, Variant

Eventuell habt ihr ja eine Idee.
Vielen Dank schon mal für die Hilfe.

Michael Freitag
Titel: Re: Deklaration von Variablen
Beitrag von: MzKlMu am Januar 04, 2016, 12:24:34
Hallo,
welcher Datentyp hat denn das Feld in der Zieltabelle?

Aber, in einer Datenbank speichert man keine berechneten Werte. Diese werden immer bei Bedarf erneut berechnet. Nur so ist sichergestellt, dass die berechneten Werte immer aktuell sind.
Wahrscheinlich kann man auch ganz einfach in einer Abfrage berechnen.

Was wird denn wie berechnet ?
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 12:32:22
Moin MzKlMu,
der Datentyp ist identisch ... Währung. In dem Datentyp liegt wahrscheinlich auch das Problem.

Mit dem Speichern von berechneten Werten hast du grundsätzlich ja recht... doch hier geht es um eine Art Kassenbuch... und nach dem Jahresabschluss werden Datensätze aus dem Vorjahr gelöscht. Dann würde das Ergebniss der Berechnung nicht mehr stimmen.
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 12:35:05
Hallo,

neben den Ausführungen von Klaus sollte dies funktionieren, sofern "Betrag" den Datentyp "Double" ("Single" ist zu vermeiden) in der Tabelle aufweist:

Dim verf_GM As Double
'verf_GM = Forms("frm_kontenansicht").txt_verfuegbare_GM
'allerdings besser:
verf_GM = Me!txt_verfuegbare_GM
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & Str(verf_GM) & ")"


PS:
Zitatund nach dem Jahresabschluss werden Datensätze aus dem Vorjahr gelöscht.

Das ist falscher/unvollständiger Ansatz:

a) grundsätzlich darf nicht gelöscht werden (oder sind auf Deinem Bankkonto die Ein-/Auszahlungen aus Jahr 2015 gelöscht worden?)

b) Wenn schon Löschen, dann muss die Summe aus den Bewegungen  als "Übertragsbuchung" (Geldzugang, bzw. Geldabgang) mit Datum/Jahreszahl von akt. Jahr gebucht werden.
Titel: Re: Deklaration von Variablen
Beitrag von: MzKlMu am Januar 04, 2016, 12:37:13
Hallo,
Zitatund nach dem Jahresabschluss werden Datensätze aus dem Vorjahr gelöscht.
das halte ich auch für einen grundsätzlichen Fehler. In einer Datenbank löscht man keine Daten die mal gültig waren. Einen Jahresabschluss kannst Du auch jederzeit aus den vollständigen Daten erzeugen.
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 12:43:20
Stimmt Klaus,
auch da gebe ich dir uneingeschränkt recht.
Nur hier ist das leider (noch) nicht anders zu realisieren.
Ich weiß... es ist etwas schwer zu verstehen, aber leider zum jetzigen Zeitpunkt nicht anders machbar (es wäre dann auch für mich zu einfach  ;) ).
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 12:53:54
Genau Franz... das ist es auch.
Eine Übertragsbuchung.
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 13:01:01
Hallo,
Zitat
das ist es auch.
Und warum wird das manuell(?) und mit einem Formular realisiert. Die Berechnung könnte gleich im Insert-Statement erfolgen.


Klappt das mit Str()-Funktion?
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 13:17:55
@Franz,
das Formular ist bereits vorhanden damit der Benutzer seine Kontostände auf einem Blick sieht.

Mit der str Funktion geht es auch nicht  :'(
Schade
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 13:26:29
Hallo,

kommt eine Fehlermeldung?
Was genau geht nicht?

Setz einen Haltepunkt an den Anfang des Codes und durchfahre ihn im Einzelschritt. Prüfe dabei den Inhalt der Variablen.
Am Anfang eines JEDEN Modules sollte   Option Explicit stehen.

Zeige mal mit Copy&Paste
--den Textfeld-Inhalt
--einen Screenshot vom Tabellenentwurf, bei dem man das Feld Betrag und dessen Eigenschaften sieht.
--den jetzt akt. verwendeten vollständigen Code (einschließlich des Prozedur-Rumpfes)



Bei Datentyp "Währung" könnte es auch heißen:

db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & CCur(verf_GM) & ")"
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 13:46:38
Es kommt die Fehlermeldung
ZitatLaufzeitfehler "3346" Anzahl der Abfragewerte und Zielfelder stimmen nicht überein
.
Wie gesagt mit der Deklaration Integer funktioniert der Code. Es wird lediglich hinter dem Komma gerundet. Aber das ist ja auch klar weil es sich um Integer handelt. Variable als Double oder sonst wie deklariert geht nicht. Dann wird mit obriger Meldung abgebrochen. Das Problem wird wohl in dem Feldwert Währung liegen. Dieser ist aber sowohl in den Tabellen als auch im Formular gleich.

Zitathier mal der gesamte Quelltext:
Private Sub cmd_Jahresabschluss_Click()
Dim verf_GM As Double
Dim verf_Bar As Double
Dim verf_unBar As Double
Dim verf_Spar As Double
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim rs4 As DAO.Recordset
Dim intAntwort As String
Set db = CurrentDb()
Set rs = db.OpenRecordset("tbl_dienststelle", dbOpenDynaset)
Dim varJahr As String
Dim BuJahr As String
Dim jahr As Date


If IsNull(rs!buchungsjahr.Value) Then
    db.Execute "update tbl_dienststelle set Buchungsjahr = 2015"
End If


jahr = "31.12." & rs!buchungsjahr.Value

If Date <= jahr Then
    MsgBox "Sie können den Jahresabschluss nicht vor dem " & jahr & " machen!", vbOKOnly, "Hinweis!"
    Exit Sub
Else:

' blendet die Systemmeldungen aus
DoCmd.SetWarnings False

'Hinweis erster Schritt
MsgBox "Der Jahresabschluss wird durchgeführt, das Journal wird bereinigt.", vbOKOnly, "Jahresabschluss - 1. Schritt"

'ab hier Bereinigung der Datensätze
CurrentDb.Execute "DELETE FROM tbl_buchungen WHERE Buchungsnummer Is Null"
CurrentDb.Execute "DELETE FROM tbl_buchungen WHERE verbucht Is Null"
CurrentDb.Execute "DELETE FROM tbl_UA_DG WHERE Nummer Is Null"
'Neues Kassenjahr anlegen

'das nächste Buchungsjahr angeben und sichern
BuJahr = InputBox("Bitte geben Sie das NÄCHSTE Buchungsjahr ein:")
intAntwort = MsgBox("Das nächste Buchungsjahr ist " & BuJahr & "." & vbCrLf & "Stimmt Ihre Eingabe?", vbYesNo, "Jahresabschluss - 2. Schritt")
Select Case intAntwort
         Case vbYes
            db.Execute "update tbl_dienststelle set Buchungsjahr = (" & BuJahr & ")"
         Case vbNo
             'aktion abbrechen
            MsgBox "Der Jahresabschluss wird abgebrochen!", vbOKOnly, "Jahresabschluss - abgebrochen"
            Exit Sub
End Select

'anzeigen des Formular Kontenansicht abgleich der Werte und auslesen
DoCmd.OpenForm "frm_kontenansicht"
Wait (2000)

' Frage Kassensoll und Kassenist
intAntwort = MsgBox("Stimmt das Kassen-Soll und das Kassen-Ist überein?", vbYesNo, "Jahresabschluß - 3. Schritt")
    Select Case intAntwort
         Case vbYes
            MsgBox "Die Kontenansicht und Journalansicht wird jetzt ausgedruckt", vbOKOnly, "Jahresabschluss - 4. Schritt"
            DoCmd.OpenReport "rpt_Kontenansicht", acViewNormal
            DoCmd.OpenReport "rpt_journalansicht", acViewNormal
         Case vbNo
            'aktion abbrechen
            MsgBox "Der Jahresabschluss wird abgebrochen!", vbOKOnly, "Jahresabschluss - abgebrochen"
            Exit Sub
     End Select
     
'ab hier die Tabellen Buchungen und Durchlaufende Gelder sichern
DoCmd.OpenQuery "qry_UA_DG_Vorjahr"
DoCmd.OpenQuery "qry_buchungen_vorjahr"

MsgBox "Der Jahresabschluss wird durchgeführt, die Eröffnungsbuchungen " & vbCrLf & "werden angelegt und sofort ausgedruckt.", vbOKOnly, "Jahresabschluss - 4. Schritt"

'anlegen der Übernahmebeträge in die ersten Buchungen

'Deklaration der Variablen
varJahr = CStr(1) & Chr(47) & CStr(rs!buchungsjahr.Value)
verf_GM = Forms("frm_kontenansicht").txt_verfuegbare_GM
verf_Bar = Forms("frm_kontenansicht").txt_bar
verf_unBar = Forms("frm_kontenansicht").txt_giro
verf_Spar = Forms("frm_kontenansicht").txt_spar

'anlegen der ersten Buchung Gemeindemittel aus dem Vorjahr
'db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_GM & ")"
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & Str(verf_GM) & ")"
Set rs1 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs1.MoveFirst
rs1.Edit
rs1!Buchungsnummer = varJahr
rs1!lst_kategorie = "Gemeindemittel"
rs1!lst_saldo = "Einnahme"
rs1!Abschnitt = "Einnahmen Gemeindemittel"
rs1!Unterabschnitt = "Übertrag aus dem Vorjahr"
rs1!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs1!verbucht = -1
rs1.Update

'anlegen der zweiten Buchung Barkasse aus dem Vorjahr
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_Bar & ")"
Set rs2 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs2.MoveLast
rs2.Edit
rs2!Buchungsnummer = CStr(2) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs2!lst_saldo = "Einnahme"
rs2!lst_kassen = "Barkasse"
rs2!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs2!verbucht = -1
rs2.Update

'anlegen der dritten Buchung Girokonto aus dem Vorjahr
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_unBar & ")"
Set rs3 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs3.MoveLast
rs3.Edit
rs3!Buchungsnummer = CStr(3) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs3!lst_saldo = "Einnahme"
rs3!lst_kassen = "Girokonto"
rs3!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs3!verbucht = -1
rs3.Update

'anlegen der vierten Buchung Sparkonto aus dem Vorjahr
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_Spar & ")"
Set rs4 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs4.MoveLast
rs4.Edit
rs4!Buchungsnummer = CStr(4) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs4!lst_saldo = "Einnahme"
rs4!lst_kassen = "Sparkonto"
rs4!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs4!verbucht = -1
rs4.Update

'schliessen der Kontenansicht
DoCmd.Close acForm, "frm_kontenansicht", acSaveNo


'ab hier löschen der Daten aus den Tabellen
'Buchungen Gemeindemittel aus der Tabelle löschen
DoCmd.OpenQuery "qry_GM_loeschen"
'Buchungen und Durchlaufende Gelder/Maßnahmen löschen
DoCmd.OpenQuery "qry_loeschen_UA_DG_abgerechnet"
'restliche Buchungen bereinigen und den Eintrag in den Feldern Kasse löschen
db.Execute "update tbl_buchungen set lst_kassen = null"

'ab hier Übernahme der Daten in die Tabelle Buchungen aus der Tabelle Buchungen hilfe
DoCmd.OpenQuery "qry_buchungen_anfuegen_aus_hilfe"

'drucken der angelegten Datensätze nicht vergessen
'ab hier drucken
    stDocName = "rpt_buchungen_drucken_jahresabschluss"
    DoCmd.OpenReport stDocName, acViewNormal
    'bis hier drucken

'Datensätze aus der Tabelle Buchungen hilfe löschen
DoCmd.OpenQuery "qry_loeschen_buchungen_hilfe"
End If

MsgBox "Der Jahresabschluss wurde erfolgreich durchgeführt.", vbOKOnly, "Der Jahresabschluss ist beendet!!!"

DoCmd.OpenForm "frm_hauptmenue", acNormal

End Sub
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 04, 2016, 13:50:20
Zitat
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & CCur(verf_GM) & ")"

geht leider auch nicht.
Titel: Re: Deklaration von Variablen
Beitrag von: MaggieMay am Januar 04, 2016, 14:08:22
Hi,

aber dir ist schon klar, dass du sämtliche Double-Werte mit der Str-Funktion behandeln musst?!

BTW:
Code bitte immer in Code-Tags packen, dann lässt er sich u.a. mit einem Klick kopieren.

PS:
Die unschöne Kombination aus INSERT und EDIT wurde vermutlich bereits kommentiert...?
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 15:29:54
Hallo,

1) hast Du den Code mal im Einzelschritt durchfahren?

2) da gibt es mehr als ein Schlagloch in der ganzen Konstruktion.. 

3)  das Editieren nach dem Insert ist mit diesem Code mehr als fehlerträchtig.

4) Der Screenshot vom Tabellenentwurf  ("tbl_buchungen_hilfe") fehlt.

Versuch einer Korrektur  (Luftcode und unchecked):

Private Sub cmd_Jahresabschluss_Click()
Dim verf_GM As Currency   'Nur, wenn die korrespondierenden Tabellenfelder den Datentyp "Währung" aufweisen!
Dim verf_Bar As Currency  '  ""
Dim verf_unBar As Currency  '  ""
Dim verf_Spar As Currency  '  ""
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim rs3 As DAO.Recordset
Dim rs4 As DAO.Recordset
Dim intAntwort As Long
Set db = CurrentDb()
Set rs = db.OpenRecordset("tbl_dienststelle", dbOpenSnapShot)  ' gibt es nur einen DS in der Tabelle? Ansonsten nach ID-Feld filtern (Where-Condition)
Dim varJahr As String
Dim BuJahr As Long
Dim datDatum As Date


If IsNull(rs!buchungsjahr) Then   'Daten von ersten DS aus der Tabelle ?!
    db.Execute "update tbl_dienststelle set Buchungsjahr = 2015"   'Was passiert im nächsten Jahr??
End If

rs.Requery

datDatum =DateSerial ( rs!buchungsjahr,12,31)
varJahr = "1/" & rs!buchungsjahr

rs.Close
Set rs =Nothing

If Date <= datDatum Then
    MsgBox "Sie können den Jahresabschluss nicht vor dem " & datDatum & " machen!", vbOKOnly, "Hinweis!"
    Exit Sub
Else:

' blendet die Systemmeldungen aus
'DoCmd.SetWarnings False

'Hinweis erster Schritt
MsgBox "Der Jahresabschluss wird durchgeführt, das Journal wird bereinigt.", vbOKOnly, "Jahresabschluss - 1. Schritt"

'ab hier Bereinigung der Datensätze
db.Execute "DELETE FROM tbl_buchungen WHERE Buchungsnummer Is Null  or verbucht Is Null",  dbFailOnError
'CurrentDb.Execute "DELETE FROM tbl_buchungen WHERE verbucht Is Null"
db.Execute "DELETE FROM tbl_UA_DG WHERE Nummer Is Null",  dbFailOnError
'Neues Kassenjahr anlegen

'das nächste Buchungsjahr angeben und sichern
BuJahr = InputBox("Bitte geben Sie das NÄCHSTE Buchungsjahr ein:")   ' Bei Inputbox gibt es hier Probleme bei "Abbrechen"
intAntwort = MsgBox("Das nächste Buchungsjahr ist " & BuJahr & "." & vbCrLf & "Stimmt Ihre Eingabe?", vbYesNo, "Jahresabschluss - 2. Schritt")
Select Case intAntwort
         Case vbYes
            db.Execute "update tbl_dienststelle set Buchungsjahr = (" & BuJahr & ")"  ' Tabelle darf nur EINEN DS beinhalten!...
         Case vbNo
             'aktion abbrechen
            MsgBox "Der Jahresabschluss wird abgebrochen!", vbOKOnly, "Jahresabschluss - abgebrochen"
           

           Exit Sub   
End Select

'anzeigen des Formular Kontenansicht abgleich der Werte und auslesen
DoCmd.OpenForm "frm_kontenansicht"
Wait (2000)

' Frage Kassensoll und Kassenist
intAntwort = MsgBox("Stimmt das Kassen-Soll und das Kassen-Ist überein?", vbYesNo, "Jahresabschluß - 3. Schritt")
    Select Case intAntwort
         Case vbYes
            MsgBox "Die Kontenansicht und Journalansicht wird jetzt ausgedruckt", vbOKOnly, "Jahresabschluss - 4. Schritt"
            DoCmd.OpenReport "rpt_Kontenansicht", acViewNormal
            DoCmd.OpenReport "rpt_journalansicht", acViewNormal
         Case vbNo
            'aktion abbrechen
            MsgBox "Der Jahresabschluss wird abgebrochen!", vbOKOnly, "Jahresabschluss - abgebrochen"
            Exit Sub
     End Select
     
'ab hier die Tabellen Buchungen und Durchlaufende Gelder sichern
db.Execute  "qry_UA_DG_Vorjahr", dbFailOnError   'falls das Aktionsabfragen sind
db.Execute  "qry_buchungen_vorjahr" , dbFailOnError 

MsgBox "Der Jahresabschluss wird durchgeführt, die Eröffnungsbuchungen " & vbCrLf & "werden angelegt und sofort ausgedruckt.", vbOKOnly, "Jahresabschluss - 4. Schritt"

'anlegen der Übernahmebeträge in die ersten Buchungen



verf_GM = nz(Forms("frm_kontenansicht").txt_verfuegbare_GM,0)
verf_Bar = nz(Forms("frm_kontenansicht").txt_bar,0)
verf_unBar = nz(Forms("frm_kontenansicht").txt_giro,0)
verf_Spar = nz(Forms("frm_kontenansicht").txt_spar,0)

'anlegen der ersten Buchung Gemeindemittel aus dem Vorjahr

db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag,Buchungsnummer,lst_kategorie ,lst_saldo , Abschnitt, Unterabschnitt,Bemerkungen,verbucht) VALUES ("  & _
Str(verf_GM) & ",'" & varJahr  & "','Gemeindemittel','Einnahme','Einnahmen Gemeindemittel','Übertrag aus dem Vorjahr','Übernahme aus dem Jahresabschluss',-1)", dbFailOnError

Set rs1 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs1.MoveFirst
rs1.Edit
rs1!Buchungsnummer = varJahr
rs1!lst_kategorie = "Gemeindemittel"
rs1!lst_saldo = "Einnahme"
rs1!Abschnitt = "Einnahmen Gemeindemittel"
rs1!Unterabschnitt = "Übertrag aus dem Vorjahr"
rs1!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs1!verbucht = -1
rs1.Update


'anlegen der zweiten Buchung Barkasse aus dem Vorjahr  entspr. der ersten Insert-Anweisung

db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_Bar & ")"
Set rs2 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs2.MoveLast
rs2.Edit
rs2!Buchungsnummer = CStr(2) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs2!lst_saldo = "Einnahme"
rs2!lst_kassen = "Barkasse"
rs2!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs2!verbucht = -1
rs2.Update

'anlegen der dritten Buchung Girokonto aus dem Vorjahr    dito
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_unBar & ")"
Set rs3 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs3.MoveLast
rs3.Edit
rs3!Buchungsnummer = CStr(3) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs3!lst_saldo = "Einnahme"
rs3!lst_kassen = "Girokonto"
rs3!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs3!verbucht = -1
rs3.Update

'anlegen der vierten Buchung Sparkonto aus dem Vorjahr    'dito
db.Execute "INSERT INTO tbl_buchungen_hilfe (Betrag) VALUES (" & verf_Spar & ")"
Set rs4 = db.OpenRecordset("tbl_buchungen_hilfe", dbOpenDynaset)
rs4.MoveLast
rs4.Edit
rs4!Buchungsnummer = CStr(4) & Chr(47) & CStr(rs!buchungsjahr.Value)
rs4!lst_saldo = "Einnahme"
rs4!lst_kassen = "Sparkonto"
rs4!Bemerkungen = "Übernahme aus dem Jahresabschluss."
rs4!verbucht = -1
rs4.Update


'schliessen der Kontenansicht
DoCmd.Close acForm, "frm_kontenansicht", acSaveNo


'ab hier löschen der Daten aus den Tabellen
'Buchungen Gemeindemittel aus der Tabelle löschen
db.Execute "qry_GM_loeschen"
'Buchungen und Durchlaufende Gelder/Maßnahmen löschen
DoCmd.OpenQuery "qry_loeschen_UA_DG_abgerechnet"
'restliche Buchungen bereinigen und den Eintrag in den Feldern Kasse löschen
db.Execute "update tbl_buchungen set lst_kassen = null"

'ab hier Übernahme der Daten in die Tabelle Buchungen aus der Tabelle Buchungen hilfe
db.Execute"qry_buchungen_anfuegen_aus_hilfe"

'drucken der angelegten Datensätze nicht vergessen
'ab hier drucken
      DoCmd.OpenReport "rpt_buchungen_drucken_jahresabschluss", acViewNormal
    'bis hier drucken

'Datensätze aus der Tabelle Buchungen hilfe löschen
db.Execute "qry_loeschen_buchungen_hilfe"
End If

MsgBox "Der Jahresabschluss wurde erfolgreich durchgeführt.", vbOKOnly, "Der Jahresabschluss ist beendet!!!"

DoCmd.OpenForm "frm_hauptmenue", acNormal

End Sub
Titel: Re: Deklaration von Variablen
Beitrag von: MaggieMay am Januar 04, 2016, 15:46:06
Hi,

ich möchte mal behaupten, dass unabhängig davon wie die Variable deklariert wird in der Abfrage die STR-Funktion zum Einsatz kommen muss, um das Dezimalkomma in einen Punkt umzuwandeln.
Somit ist auch die Verwendung von Variablen in diesem Zusammenhang völlig überflüssig und es kann ebensogut der Bezug auf das Steuerelement direkt eingesetzt werden.
Titel: Re: Deklaration von Variablen
Beitrag von: Beaker s.a. am Januar 04, 2016, 15:52:02
Hallo,
Zitatin der Abfrage die STR-Funktion zum Einsatz kommen muss, um das Dezimalkomma in einen Punkt umzuwandeln.
Oder, falls das nicht funzen sollte, ein
Replace(verf_xxxx,",",".")
versuchen.
gruss ekkehard
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 16:24:45
Hallo,

natürlich wäre der direkte Einsatz möglich, hier sorgen die Variablen aber für bessere Übersicht und kürzere Schreibweise, derweil Referenzen auf ein externes Formular verwendet sind. Das Ganze ist auch nur als Übung/Korrektur  an der Basis zu sehen..   ;)


Die Str()-Funktion IST in der Insert-Abfrage eingebaut.

Replace()-Funktion:  Warum einfach, wenn's auch kompliziert geht?   ;)  Wenn die Str-Funktion nicht geht, geht auch die Replace-Funktion nicht....


Zusätzlich befürchte ich fehlerhafte Normalisierung und Fehlen von Primärschlüsseln.
Titel: Re: Deklaration von Variablen
Beitrag von: MaggieMay am Januar 04, 2016, 16:32:01
Zitat von: DF6GL am Januar 04, 2016, 16:24:45
Die Str()-Funktion IST in der Insert-Abfrage eingebaut.
Ja, und zwar genau einmal, ich gehe aber davon aus, dass das für alle Betragsfelder gelten sollte.
Titel: Re: Deklaration von Variablen
Beitrag von: DF6GL am Januar 04, 2016, 17:10:29
Hallo,

mhmm,  da kommt etwas nicht klar rüber, denke ich...


Ich meinte das so:

Das rote Insert-Statement ist als Vorlage zu sehen, die anderen folgenden sind im Originalzustand (und eben ohne die Str-Funktion). Diese  müssen entspr. der roten angepasst und  damit auch die Str-Funktion eingesetzt werden....

Titel: Re: Deklaration von Variablen
Beitrag von: MaggieMay am Januar 04, 2016, 17:12:04
OK, das war tatsächlich so nicht angekommen. :-)
Titel: Re: Deklaration von Variablen
Beitrag von: Stoppelhopser am Januar 05, 2016, 09:26:19
Vielen Dank erst einmal für die Hilfe... werde mich dann mal an die Arbeit machen und den Code korrigieren.. gebe dann Feedback.