martenk
Goto Top

Rechnungschreiben mit Access und Word

Hallo,

habe eine Access Datenbank und möchte nun folgendes

aus einem Kundendatensatz sollen die Daten an Word übergeben werden, die rechnungsnummer hole ich mir aus einer Tabelle mit Dmax - nun möchte ich in Word die Rechnung Schreiben - nun meine Frage , wie komme ich an die Rechnungssumme in Word, denn die würde ich gerne wieder in eine Tabelle tbl_Rechnung schreiben mit der Rechnungsnummer

Content-ID: 1199768424

Url: https://administrator.de/contentid/1199768424

Ausgedruckt am: 25.11.2024 um 07:11 Uhr

149062
149062 27.08.2021 aktualisiert um 08:23:32 Uhr
Goto Top
Falsche Vorgehensweise.
Erstelle ein Formular in Access für die Positionserfassung der Rechnungsposten und erstelle daraus dann entweder vorzugsweise einen Access-Bericht oder erzeuge aus den Positionsdaten via Word-Serienbrief Funktion mittels VBA Word COM Object dein Dokument. Bei beiden Varianten hast du die Summe der Posten schon in Access parat, ein extra Rück-Auslesen ist somit vollkommen überflüssig!

Btw. Access heutzutage noch für Rechnungen?? Als Frontend OK, aber für zuverlässige Datenhaltung ungeeignet.
martenk
martenk 27.08.2021 um 08:23:15 Uhr
Goto Top
ich brauche bei der Positionserfassung aber einen Fliesstext

kann durchaus auch 20 Zeilen umfassen
149062
149062 27.08.2021 aktualisiert um 08:26:30 Uhr
Goto Top
Zitat von @martenk:

ich brauche bei der Positionserfassung aber einen Fliesstext

kann durchaus auch 20 Zeilen umfassen

Den kann man auch Problemlos als Position erfassen .

Beschäftige die mal mit dem Word VBA Objektmodell.
https://docs.microsoft.com/de-de/office/vba/api/overview/word/object-mod ...
Und zum Auslesen von Feldern in Word.
https://docs.microsoft.com/de-de/office/vba/api/word.formfield
martenk
martenk 27.08.2021 um 08:26:26 Uhr
Goto Top
wie würdest du es denn machen mit den grossen Fliesstextetfeldern?
martenk
martenk 27.08.2021 aktualisiert um 08:29:18 Uhr
Goto Top
ich habe dazu dieses Script gefunden - bekomme es leider niicht zum Laufen

bricht ab bei Application.cursor = xlWait

bekomme die Meldung Methode oder Datenobjekt nicht gefunden
Sub MWDatenInAccessDBschreiben()
   Dim oADODBConnection As Object
   
   Dim oRecordSet As Object
   Dim sTableName As String
   Dim sFilterKlausel As String
   Dim sDataBaseFile, xlWait
    
     'Welcher Datensatz in welcher Tabelle?  
     sTableName = "MeineTabelle"  
     sFilterKlausel = "ID=1"  
    
     'Datenbankdatei (hier Access DB)  
     sDataBaseFile = "C:\Rechnung\Database7.accdb" 'wo liegt die Datei?  
     If Trim(CStr(Dir(sDataBaseFile))) = "" Then  
         MsgBox "Die Datenbank-Datei: " & sDataBaseFile & _  
             " wurde nicht gefunden.", vbCritical + vbOKOnly, "FEHLER!"  
         Exit Sub
     End If
    
     Application.cursor = xlWait
    
     'Verbindung zur Datenbank  
     Set oADODBConnection = CreateObject("ADODB.Connection") 'LateBinding daher ohne Verweis  
     With oADODBConnection
         .Provider = "Microsoft.ACE.OLEDB.12.0" 'für Access 2013  
         .Properties("Persist Security Info") = "False"  
         .Properties("Data Source") = sDataBaseFile  
         .Open
     End With
    
     'RecordSet öffnen  
     Set oRecordSet = CreateObject("ADODB.RecordSet") 'LateBinding daher ohne Verweis  
     With oRecordSet
         .CursorLocation = 2 'adUseClient  
         .CursorType = 2 'adOpenDynamic  
         .LockType = 3 'adLockOptimistic  
         .Open sTableName, oADODBConnection
         .Filter = sFilterKlausel 'Filter setzen, ID muss 1 sein!  
     End With
    
     'Daten schreiben  
     If Not oRecordSet.EOF Then 'Nur wenn der Datensatz gefunden wurde ID=1  
         'Wertzuweisung: MeinFeld bekommt "Neuer Wert!"  
         'Bei Zahlen entsprechend: oRecordSet.Fields("MeinFeld") = 12  
         oRecordSet.Fields("MeinFeld") = "Neuer Wert!"  
         'Speichern / Aktualisieren  
         oRecordSet.Update
     End If
    
     'RecordSet schließen  
     oRecordSet.Close
    
     'Datenbankverbindung schließen  
     oADODBConnection.Close
        
     Application.cursor = xlDefault
    
     Set oRecordSet = Nothing
     Set oADODBConnection = Nothing
End Sub
149062
149062 27.08.2021 um 08:28:48 Uhr
Goto Top
Zitat von @martenk:

wie würdest du es denn machen mit den grossen Fliesstextetfeldern?
Im Formular in nem DropDown als Auswahl des Positionstyps eine "Fließtext" Variante anbieten und dann via Code entsprechend behandeln.
149062
149062 27.08.2021 aktualisiert um 08:37:52 Uhr
Goto Top
Btw. Ich würde dir dringend davon abraten Rechnungserstellung mit Access als Datenbackend zu machen. Das fällt dir früher oder später gewaltig auf die Füße! Das hat man vielleicht 1995 mal so gemacht aber heutzutage eigentlich ein NoGo, schon weil Access DBs immer mal wieder sporadisch dazu neigen das zeitliche zu segnen. Man vertrödelt mit solchen Frickel-Lösungen viel zu viel Zeit, und gerade wenn es Brenzlich wird und du was nicht bedacht hast, drehst du noch schneller am Rad.
Besorg dir eine vernünftige FIBU, gibt es auch diverse OpenSource und auch kostenlos.
wiesi200
wiesi200 27.08.2021 um 08:56:21 Uhr
Goto Top
Zumal solche Software auch gesetzlichen Bestimmungen entsprechen und auch Zertifizierung vorweisen muss.

Ich muss die jedes mal unserem Wirtschaftsprüfer zeigen.
Vision2015
Vision2015 27.08.2021 um 09:59:55 Uhr
Goto Top
Moin...
Zitat von @martenk:

Hallo,

habe eine Access Datenbank und möchte nun folgendes

aus einem Kundendatensatz sollen die Daten an Word übergeben werden, die rechnungsnummer hole ich mir aus einer Tabelle mit Dmax - nun möchte ich in Word die Rechnung Schreiben - nun meine Frage , wie komme ich an die Rechnungssumme in Word, denn die würde ich gerne wieder in eine Tabelle tbl_Rechnung schreiben mit der Rechnungsnummer
ich kann auch nur sagen, lass das sein- wie willst du den die Rechnungen Festschreiben? Manipulationsschutz!
Festschreiben bedeutet in dem Fall unveränderlich machen und muss vom Buchhaltungsprogramm durchgeführt werden. Dadurch können festgeschriebene Buchungen danach nicht mehr geändert werden, sondern höchstens durch eine Gegenbuchung nachvollziehbar korrigiert werden. das Finanzamt legt da viel wert drauf face-smile
Frank