Dateiverarbeitung: Betrag auslesen & neuberechnen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von bi0nic.

    Dateiverarbeitung: Betrag auslesen & neuberechnen

    Hallo VB-Fans!

    Ich bin in VB noch nicht so fit und mit Dateiverarbeitung habe ich prinzipiell noch keine Erfahrung. Ich möchte ein Programm schreiben, welches aus Textdateien einen Betrag (Anteil) raus liest und dann davon 16% (MWST) errechnet und dann den Betrag. Kurz das Programm soll die MWST neu berechnen, da dort ein Fehler aufgetreten ist. Ich zeig am besten wie den Vorher-Nachher-Vergleich.

    Vorher:

    VB.NET-Quellcode

    1. Ihr Anteil wie vereinbart 10,0000 % 1.460,82 EUR
    2. zuzüglich MWST 16,0000 % 277,56 EUR
    3. Gesamtbetrag 1.738,38 EUR


    Nachher:

    VB.NET-Quellcode

    1. Ihr Anteil wie vereinbart 10,0000 % 1.460,82 EUR
    2. zuzüglich MWST 16,0000 % 233,73 EUR
    3. Gesamtbetrag 1694,55 EUR


    Ich hoffe ihr könnt mir helfen einen Lösungsansatz zu finden.

    Gruß, bi0nic
    Hi!

    Dateiverarbeitung wird irgendwo im Galileo Openbook erläutert.
    Noch eine Info: um %-Rechnungen durchzuführen, musst du / 100 * x verwenden. Es gab schon leute, die das mit dem % versucht haben und daran gescheitert sind ;)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mad Andy“ ()

    Im übrigen würde es sich anbieten, mit 19% zu rechnen. Sonst kannst Du bald nochmal was neues schreiben... :)

    *g* bei uns in Österreich ist das anders...
    Die Steuern werden nicht erhöht sondern einfach das Schulbudget gesenkt XD


    @ Agent: Sorry für diese OT-Meldung, das war aber einfach nötig...
    Nene 16% ist schon richtig ich, da die Rechnungen von Dezember sind.

    Nachtrag:
    Ein Kollege hat das Problem in VBS gelöst.

    VB.NET-Quellcode

    1. option explicit
    2. Const ForReading = 1
    3. Const ForWriting = 2
    4. const StartDir = "D:\DatenJT\020_Work\XML16%MWST\Original"
    5. const OldDir = "D:\DatenJT\020_Work\XML16%MWST\Old"
    6. const BadDir = "D:\DatenJT\020_Work\XML16%MWST\Bad"
    7. const ChangedDir = "D:\DatenJT\020_Work\XML16%MWST\Changed"
    8. const SuchNetto = "vereinnahmte Gebühren *[0-9.,]+ EUR"
    9. const FindNetto = "vereinnahmte Gebühren *([0-9.,]+) EUR"
    10. const SuchMWST = "zuzüglich MWST [0-9,. %]* EUR"
    11. const SuchBrutto = "Gesamtbetrag [0-9,. %]* EUR"
    12. const MwSt = 0.16
    13. '
    14. ' Variablen festlegen
    15. '
    16. dim cTEXT
    17. dim oDIR
    18. dim oCONV
    19. dim aFILES
    20. dim cFILE
    21. dim cNAME
    22. dim cREPLACE
    23. '
    24. ' Objecte definieren
    25. '
    26. '
    27. ' Dateiliste einlesen
    28. '
    29. aFILES = GetFileList(StartDir)
    30. '
    31. ' Verzeichnisse anlegen
    32. '
    33. MkDir OldDir
    34. MkDir BadDir
    35. MkDir ChangedDir
    36. '
    37. ' Hauptschleife
    38. '
    39. dim cNETTO
    40. dim nNETTO
    41. dim nMWST
    42. dim nBRUTTO
    43. for each cFILE in aFILES
    44. cTEXT = ReadTextFile(StartDir & "\" & cFILE)
    45. if FindText(SuchNetto, cTEXT, true) then
    46. cNETTO = GetSubMatch(FindNetto, cTEXT, true)
    47. nNETTO = CDbl(cNETTO)
    48. nMWST = nNETTO * MwSt
    49. nBRUTTO = nNETTO + nMWST
    50. cREPLACE = "zuzüglich MWST " & left(FormatNumber(MwSt * 100, 4) & " %" & space(100),20) & right(space(100) & FormatNumber(nMWST, 2, 0, 0, -1) & " EUR", 30)
    51. ReplaceText SuchMWST, cREPLACE, cTEXT, true, false
    52. cREPLACE = "Gesamtbetrag " & right(space(100) & FormatNumber(nBRUTTO, 2, 0, 0, -1) & " EUR", 52)
    53. ReplaceText SuchBrutto, cREPLACE, cTEXT, true, false
    54. WriteTextFile ChangedDir & "\" & BaseName(cFILE), cTEXT
    55. ''MoveFile StartDir & "\" & cFILE, OldDir & "\" & BaseName(cFILE)
    56. else
    57. wscript.echo "INFO: Keine Gebühren in der Datei " & cFILE
    58. end if
    59. next
    60. '
    61. ' EOP
    62. '
    63. sub MkDir(byref cDIR)
    64. dim oFSO
    65. set oFSO = CreateObject("Scripting.FileSystemObject")
    66. if not oFSO.FolderExists(cDIR) then
    67. oFSO.CreateFolder(cDIR)
    68. end if
    69. set oFSO = nothing
    70. end sub
    71. function BaseName(byref cFILE)
    72. dim oFSO
    73. set oFSO = CreateObject("Scripting.FileSystemObject")
    74. BaseName = oFSO.GetFileName(cFILE)
    75. set oFSO = nothing
    76. end function
    77. sub MoveFile(byref cFILE, byref cDIR)
    78. dim oFSO
    79. set oFSO = CreateObject("Scripting.FileSystemObject")
    80. oFSO.MoveFile cFILE, cDIR
    81. set oFSO = nothing
    82. end sub
    83. function GetFileList(byref cDIR)
    84. dim oFSO
    85. dim dDIR
    86. dim fFIL
    87. dim cTEXT
    88. dim aFILES()
    89. dim oFILES
    90. dim nCOUNT
    91. cTEXT = ""
    92. set oFSO = CreateObject("Scripting.FileSystemObject")
    93. Set dDIR = oFSO.GetFolder(cDIR)
    94. set oFILES = dDIR.Files
    95. redim aFILES(oFILES.count -1)
    96. nCOUNT = 0
    97. for each fFIL in oFILES
    98. aFILES(nCOUNT) = fFIL.Name
    99. nCOUNT = nCOUNT + 1
    100. next
    101. GetFileList = aFILES
    102. end function
    103. sub ReadTextFile2Directory(byval cFILE, byref oDIR)
    104. dim oFSO
    105. dim fFIL
    106. dim cTEXT
    107. dim aTEXT
    108. set oFSO = CreateObject("Scripting.FileSystemObject")
    109. set fFIL = oFSO.OpenTextFile(cFILE, ForReading)
    110. while not fFIL.AtEndOfStream
    111. aTEXT = split(fFIL.Readline, "|")
    112. if not oDIR.exists(aTEXT(0)) then
    113. oDIR.add aTEXT(0), aTEXT(1)
    114. end if
    115. wend
    116. fFIL.Close
    117. set fFIL = nothing
    118. set oFSO = nothing
    119. end sub
    120. function ReadTextFile(byval cFILE)
    121. dim oFSO
    122. dim fFIL
    123. set oFSO = CreateObject("Scripting.FileSystemObject")
    124. set fFIL = oFSO.OpenTextFile(cFILE, ForReading)
    125. ReadTextFile = fFIL.ReadAll
    126. fFIL.Close
    127. set fFIL = nothing
    128. set oFSO = nothing
    129. end function
    130. sub WriteTextFile(byval cFILE, byref cTEXT)
    131. dim oFSO
    132. dim fFIL
    133. set oFSO = CreateObject("Scripting.FileSystemObject")
    134. set fFIL = oFSO.OpenTextFile(cFILE, ForWriting, True)
    135. fFIL.Write(cTEXT)
    136. fFIL.Close
    137. set fFIL = nothing
    138. set oFSO = nothing
    139. end sub
    140. sub ReplaceText(byval cPATT, byval cREPL, byref cTEXT, byval bIGCA, byval bGLOB)
    141. dim oREG
    142. set oREG = New RegExp
    143. oREG.Pattern = cPATT
    144. oREG.IgnoreCase = bIGCA
    145. oREG.Global = bGLOB
    146. cTEXT = oREG.Replace(cTEXT, cREPL)
    147. set oREG = nothing
    148. end sub
    149. function FindText(byval cPATT, byref cTEXT, byval bIGCA)
    150. dim oREG
    151. set oREG = New RegExp
    152. oREG.Pattern = cPATT
    153. oREG.IgnoreCase = bIGCA
    154. FindText = oREG.Test(cTEXT)
    155. set oREG = nothing
    156. end function
    157. function GetSubMatch(byval cPATT, byref cTEXT, byval bIGCA)
    158. dim oREG
    159. dim oMATCHES
    160. dim oMATCH
    161. set oREG = New RegExp
    162. oREG.Pattern = cPATT
    163. oREG.IgnoreCase = bIGCA
    164. set oMATCHES = oREG.Execute(cTEXT)
    165. set oMATCH = oMATCHES(0)
    166. GetSubMatch = oMATCH.SubMatches(0)
    167. set oREG = nothing
    168. set oMATCHES = nothing
    169. set oMATCH = nothing
    170. end function

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bi0nic“ ()