Fehler bei Script mit DBF-UDF

  • Hi Leute!

    Habe mir zwei kleine Scripte mit der DBF-UDF von Funkey geschrieben.

    Sinn ist es, in einer DBF in einer Spalte drei Zeichen zu entfernen, bzw hinzuzufügen.

    Tja ... gestern lief das Script noch ... heute nicht mehr ... und vielleicht sehe ich gerade den Wald vor lauter Bäumen nicht ...

    Vielleicht könnt Ihr mir ja ein wenig auf die Sprünge helfen ...

    Hier mal das erste Script ...

    Es öffnet die DBF nicht mehr, die selbstredend existiert und auch nicht beschädigt ist.


    Spoiler anzeigen

    #include-once

    #include <Array.au3>

    #include "DBF.au3"

    #include "StringConstants.au3"

    #include "string.au3"

    #include "FileSelectFolder.au3"

    ; Öffnen eines Ordner-wählen-Dialoges zur Ermittlung des Pfades zur *.dbf

    Global $sPathName = FileSelectFolder2("SHP - Ordner auswählen", "O:\RB\Geoservice\Az")

    If @error Then

    MsgBox(4096, "", "Es wurde kein Ordner ausgewählt.")

    Exit

    EndIf

    ; Zusammensetzen Ordner + Dateiname

    Global $sFileName = $sPathName & "\BLP_FLAECHEN.dbf"

    ; Global $sFileName = "\\geo02\Geograf_64bit\Katalog\_Projekte_Kataloge\6100 - Bebauungsplan 6-61\Test-SHP\BLP_FLAECHEN.dbf"

    ; MsgBox(4096, "Der Dateiname incl. Pfad lautet:", $sFileName )

    ; Öffnen der DBF

    Global $hDBF = _DBF_Open($sFileName, "rb+")

    If $hDBF = 0 Then

    MsgBox(4096, "", "Fehler beim Öffnen der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln der Datensatzanzahl

    Global $iRecordCount = _DBF_GetRecordCount($hDBF)

    If $iRecordcount = 0 Then

    MsgBox(4096, "", "Fehler bei der Ermittlung der Datensätze in der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln des Indexes des Feldes "PLANZ"

    Global $iField = _DBF_GetFieldIndex($hDBF, "PLANZ")

    ; Schleife über alle Datensätze in der DBF, um ".FO" am Ende des Feldes PLANZ zu löschen

    For $i = 0 to $iRecordcount -1

    ; Einlesen der Spalte PLANZ

    Global $sPLANZ = _DBF_ReadStringAttribute($hDBF, $i, $iField)

    If stringright( $sPLANZ, 3 ) <> ".FO" then

    MsgBox(4096, "","Fehler in Datensatz " & $i & ", String endet nicht mit ".FO" ..." & @CRLF)

    else

    $sPLANZ = Stringmid( $sPLANZ, 1 , stringlen($sPLANZ) -3 )

    _DBF_WriteStringAttribute($hDBF, $i, $iField, $sPLANZ)

    Next


    _DBF_Close($hDBF)

    MsgBox(4096, "", "Die Endungen im Schlüsselfeld wurden entfernt!" & @CRLF)


    Vielen Dank im Voraus

    Olaf

  • Tja ... gestern lief das Script noch ... heute nicht mehr

    DAS Skript, das Du hier gepostet hast, lief sicher auch gestern nicht.

    -> ERROR: missing EndIf

    -> ERROR : MsgBox(4096, "", "Fehler in Datensatz " & $i & ", String endet nicht mit ".FO" ..." & @CRLF) ==> "... nicht mit '.FO' ..." & @CRLF)

    EDIT : oberh

    -> Global $sPLANZ besser außerhalb der Schleife deklarieren

    Ich habe auch mal die benötigten Includes angehängt

    Gruß Musashi


  • Hi!

    Erst einmal vielen Dank!

    Doch, doch ... das lief ...

    Danach hatte ich lediglich die Messageboxen eingefügt - und damit den Gänsefüßchenfehler.

    Und das EndIf ist verschwunden, weil ich hier im Forum überschüssige Zeilen entfernt hatte - leider einmal eine zu viel.

    Jo ... die Deklaration steht nun außerhalb der Schleife.

    Danke auch noch mal für die beiden Anhänge. Beide hatte ich gestern erst herunter geladen. :)

    Hmmm ... "Fehler beim Öffnen der dbf ..." heißt es weiterhin ...

    Ich füge den Code jetzt noch mal 1:1 ein ...

    Spoiler anzeigen

    #include-once

    #include <Array.au3>

    #include "DBF.au3"

    #include "StringConstants.au3"

    #include "string.au3"

    #include "FileSelectFolder.au3"

    ; Öffnen eines Ordner-wählen-Dialoges zur Ermittlung des Pfades zur *.dbf

    Global $sPathName = FileSelectFolder2("SHP - Ordner auswählen", "O:\RB\Geoservice\Az")

    If @error Then

    MsgBox(4096, "", "Es wurde kein Ordner ausgewählt.")

    Exit

    EndIf

    ; Zusammensetzen Ordner + Dateiname

    Global $sFileName = $sPathName & "\BLP_FLAECHEN.dbf"

    ; Global $sFilename = "\\geo02\Geograf_64bit\Katalog\_Projekte_Kataloge\6100 - Bebauungsplan 6-61\Test-SHP\BLP_FLAECHEN.dbf"

    ; MsgBox(4096, "Der Dateiname incl. Pfad lautet:", $sFilename )

    ; Öffnen der DBF

    Global $hDBF = _DBF_Open($sFileName, "rb+")

    If $hDBF = 0 Then

    MsgBox(4096, "", "Fehler beim Öffnen der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln der Datensatzanzahl

    Global $iRecordCount = _DBF_GetRecordCount($hDBF)

    If $iRecordcount = 0 Then

    MsgBox(4096, "", "Fehler bei der Ermittlung der Datensätze in der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln des Indexes des Feldes "PLANZ"

    Global $iField = _DBF_GetFieldIndex($hDBF, "PLANZ")

    Global $sPLANZ as string

    ; Schleife über alle Datensätze in der DBF, um '.FO' am Ende des Feldes PLANZ zu löschen

    For $i = 0 to $iRecordcount -1

    ; Einlesen der Spalte PLANZ

    $sPLANZ = _DBF_ReadStringAttribute($hDBF, $i, $iField)

    If stringright( $sPLANZ, 3 ) <> ".FO" then

    MsgBox(4096, "","Fehler in Datensatz " & $i & ", String endet nicht mit ".FO" ..." & @CRLF)

    else

    $sPLANZ = Stringmid( $sPLANZ, 1 , stringlen($sPLANZ) -3 )

    ;MsgBox(4096, "", "Der neue Wert von PLANZ lautet ..." & $sPLANZ & @CRLF)

    endIf

    _DBF_WriteStringAttribute($hDBF, $i, $iField, $sPLANZ)

    Next


    _DBF_Close($hDBF)

    MsgBox(4096, "", "Die Endungen im Schlüsselfeld wurden entfernt!" & @CRLF)


  • Danke auch noch mal für die beiden Anhänge. Beide hatte ich gestern erst herunter geladen. :)

    Hmmm ... "Fehler beim Öffnen der dbf ..." heißt es weiterhin ...

    Könntest Du ggf. eine .DBF Datei posten, damit geneigte Helfer das Skript testen können, oder enthält sie vertrauliche Daten ? (Datei vorher zippen, sonst wird sie hier nicht als Anhang akzeptiert)

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Oberh hast du den Hinweis von Musashi geändert?

    -> ERROR : MsgBox(4096, "", "Fehler in Datensatz " & $i & ", String endet nicht mit ".FO" ..." & @CRLF) ==> "... nicht mit '.FO' ..." & @CRLF)

    In deinem letzten Post ist das immer noch falsch.

    Wobei ich (meine persönliche Meinung) Strings immer in ' anstatt " setze und somit im String " ganz normal verwenden kann ohne darauf achten zu müssen.

    Einmal editiert, zuletzt von Moombas (28. April 2020 um 11:34)

  • Hi!

    Normalerweise bin ich derzeit im Homeoffice ... heute mal nicht. Daher ist hier gerade etwas mehr los ...

    Habe jetzt auch die Hochkommata im Code geändert, und nicht nur in der Kommentarzeile ... <schäm> ;)

    Spoiler anzeigen

    #include-once

    #include <Array.au3>

    #include "DBF.au3"

    #include "StringConstants.au3"

    #include "string.au3"

    #include "FileSelectFolder.au3"

    ; Öffnen eines Ordner-wählen-Dialoges zur Ermittlung des Pfades zur *.dbf

    Global $sPathName = FileSelectFolder2("SHP - Ordner auswählen", "O:\RB\Geoservice\Az")

    If @error Then

    MsgBox(4096, "", "Es wurde kein Ordner ausgewählt.")

    Exit

    EndIf

    ; Zusammensetzen Ordner + Dateiname

    Global $sFileName = $sPathName & "\BLP_FLAECHEN.dbf"

    ; Global $sFilename = "\\geo02\Geograf_64bit\Katalog\_Projekte_Kataloge\6100 - Bebauungsplan 6-61\Test-SHP\BLP_FLAECHEN.dbf"

    ; MsgBox(4096, "Der Dateiname incl. Pfad lautet:", $sFilename )

    ; Öffnen der DBF

    Global $hDBF = _DBF_Open($sFileName, "rb+")

    If $hDBF = 0 Then

    MsgBox(4096, "", "Fehler beim Öffnen der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln der Datensatzanzahl

    Global $iRecordCount = _DBF_GetRecordCount($hDBF)

    If $iRecordcount = 0 Then

    MsgBox(4096, "", "Fehler bei der Ermittlung der Datensätze in der dbf ..." & @CRLF)

    Exit

    EndIf

    ; Ermitteln des Indexes des Feldes "PLANZ"

    Global $iField = _DBF_GetFieldIndex($hDBF, "PLANZ")

    Global $sPLANZ as string

    ; Schleife über alle Datensätze in der DBF, um '.FO' am Ende des Feldes PLANZ zu löschen

    For $i = 0 to $iRecordcount -1

    ; Einlesen der Spalte PLANZ

    $sPLANZ = _DBF_ReadStringAttribute($hDBF, $i, $iField)

    If stringright( $sPLANZ, 3 ) <> ".FO" then

    MsgBox(4096, "","Fehler in Datensatz " & $i & ", String endet nicht mit '.FO' ..." & @CRLF)

    else

    $sPLANZ = Stringmid( $sPLANZ, 1 , stringlen($sPLANZ) -3 )

    ;MsgBox(4096, "", "Der neue Wert von PLANZ lautet ..." & $sPLANZ & @CRLF)

    endIf

    _DBF_WriteStringAttribute($hDBF, $i, $iField, $sPLANZ)

    Next


    _DBF_Close($hDBF)

    MsgBox(4096, "", "Die Endungen im Schlüsselfeld wurden entfernt!" & @CRLF)


  • Du solltest Dein Skript zumindest einmal mit F7 'builden', bevor Du es postest !

    Global $sPLANZ as string ist unzulässig.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hi!

    Komme mir vor, als wäre ich ein Dummy ...

    Sorry ... habe jahrelang in Access programmiert ...

    Habe es jetzt abgeändert in: Global $sPLANZ

    Ich rufe das Script immer über die Autoit3.exe mit der au3-Datei als Parameter auf.

    Als "GUI" nutze ich nur den Notepad++.

    Und natürlich starte ich den Code vorher immer erst einmal, bevor ich ihn hier poste ...

    Die falsche Deklaration hat aber wohl nicht gestört.

    Habe jetzt mal den Code auf das Wesentliche reduziert und durchlaufen lassen ...

    Immer noch kommt die Meldung: "Fehler beim Öffnen der dbf ..."

    Spoiler anzeigen

    Musashi: Habe bitte ein wenig Geduld mit mir ... :)

    EDIT-BugFix: Code formatiert

  • Ich rufe das Script immer über die Autoit3.exe mit der au3-Datei als Parameter auf.

    Als "GUI" nutze ich nur den Notepad++.

    Ich empfehle Dir dringend, AutoIt mit der Vollversion des SciTE-Editors zu verwenden.

    Ich habe mal einige ConsoleWrites eingebaut und den Pfad direkt gesetzt (damit man nicht immer durch den FileSelectFolder-Dialog durch muss ;)).

    (nebenbei : #include-once kannst Du Dir schenken)

    Hier der Console-Output von SciTE beim ersten Durchlauf :

    Spoiler anzeigen

    Öffnen der .dbf OK ...

    Anzahl der Datensätze = 91

    _DBF_GetFieldIndex = 0

    0 $sPLANZ = 01.01ue.FO

    ==> $sPLANZ = 01.01ue

    1 $sPLANZ = 01.01.FO

    ==> $sPLANZ = 01.01

    2 $sPLANZ = 01.01.01.FO

    ==> $sPLANZ = 01.01.01

    3 $sPLANZ = 01.01.01ue.FO

    ==> $sPLANZ = 01.01.01ue

    4 $sPLANZ = 01.01.02.FO

    ==> $sPLANZ = 01.01.02

    5 $sPLANZ = 01.01.02ue.FO

    ==> $sPLANZ = 01.01.02ue

    6 $sPLANZ = 01.01.03.FO

    ==> $sPLANZ = 01.01.03

    7 $sPLANZ = 01.01.03ue.FO

    ==> $sPLANZ = 01.01.03ue

    8 $sPLANZ = 01.01.04.FO

    ==> $sPLANZ = 01.01.04

    9 $sPLANZ = 01.01.04ue.FO

    ==> $sPLANZ = 01.01.04ue

    10 $sPLANZ = 01.02.FO

    ==> $sPLANZ = 01.02

    11 $sPLANZ = 01.02ue.FO

    ==> $sPLANZ = 01.02ue

    12 $sPLANZ = 01.02.01.FO

    ==> $sPLANZ = 01.02.01

    13 $sPLANZ = 01.02.01ue.FO

    ==> $sPLANZ = 01.02.01ue

    14 $sPLANZ = 01.02.02.FO

    ==> $sPLANZ = 01.02.02

    15 $sPLANZ = 01.02.02ue.FO

    ==> $sPLANZ = 01.02.02ue

    16 $sPLANZ = 01.02.03ug.FO

    ==> $sPLANZ = 01.02.03ug

    17 $sPLANZ = 01.02.03ugue.FO

    ==> $sPLANZ = 01.02.03ugue

    18 $sPLANZ = 01.02.03.FO

    ==> $sPLANZ = 01.02.03

    19 $sPLANZ = 01.02.03ue.FO

    ==> $sPLANZ = 01.02.03ue

    20 $sPLANZ = 01.03.FO

    ==> $sPLANZ = 01.03

    21 $sPLANZ = 01.03ue.FO

    ==> $sPLANZ = 01.03ue

    22 $sPLANZ = 01.03.01.FO

    ==> $sPLANZ = 01.03.01

    23 $sPLANZ = 01.03.01ue.FO

    ==> $sPLANZ = 01.03.01ue

    24 $sPLANZ = 01.03.02.FO

    ==> $sPLANZ = 01.03.02

    25 $sPLANZ = 01.03.02ue.FO

    ==> $sPLANZ = 01.03.02ue

    26 $sPLANZ = 01.04.FO

    ==> $sPLANZ = 01.04

    27 $sPLANZ = 01.04ue.FO

    ==> $sPLANZ = 01.04ue

    28 $sPLANZ = 01.04.0.FO

    ==> $sPLANZ = 01.04.0

    29 $sPLANZ = 01.04.0ue.FO

    ==> $sPLANZ = 01.04.0ue

    30 $sPLANZ = 01.04.01.FO

    ==> $sPLANZ = 01.04.01

    31 $sPLANZ = 01.04.01a.FO

    ==> $sPLANZ = 01.04.01a

    32 $sPLANZ = 01.04.01ue.FO

    ==> $sPLANZ = 01.04.01ue

    33 $sPLANZ = 01.04.02.FO

    ==> $sPLANZ = 01.04.02

    34 $sPLANZ = 01.04.02ue.FO

    ==> $sPLANZ = 01.04.02ue

    35 $sPLANZ = 04.01.FO

    ==> $sPLANZ = 04.01

    36 $sPLANZ = 04.01ue.FO

    ==> $sPLANZ = 04.01ue

    37 $sPLANZ = 04.02.FO

    ==> $sPLANZ = 04.02

    38 $sPLANZ = 04.02ue.FO

    ==> $sPLANZ = 04.02ue

    39 $sPLANZ = 05.01.FO

    ==> $sPLANZ = 05.01

    40 $sPLANZ = 05.01.01.FO

    ==> $sPLANZ = 05.01.01

    41 $sPLANZ = 05.01.02.FO

    ==> $sPLANZ = 05.01.02

    42 $sPLANZ = 05.02.01.FO

    ==> $sPLANZ = 05.02.01

    43 $sPLANZ = 05.04.FO

    ==> $sPLANZ = 05.04

    44 $sPLANZ = 06.01.FO

    ==> $sPLANZ = 06.01

    45 $sPLANZ = 06.03.FO

    ==> $sPLANZ = 06.03

    46 $sPLANZ = 06.05.01.FO

    ==> $sPLANZ = 06.05.01

    47 $sPLANZ = 06.FO

    ==> $sPLANZ = 06

    48 $sPLANZ = 06.06.FO

    ==> $sPLANZ = 06.06

    49 $sPLANZ = 06.03a.FO

    ==> $sPLANZ = 06.03a

    50 $sPLANZ = 05.01.03.FO

    ==> $sPLANZ = 05.01.03

    51 $sPLANZ = 07.FO

    ==> $sPLANZ = 07

    52 $sPLANZ = 09.FO

    ==> $sPLANZ = 09

    53 $sPLANZ = 09oe.FO

    ==> $sPLANZ = 09oe

    54 $sPLANZ = 09pr.FO

    ==> $sPLANZ = 09pr

    55 $sPLANZ = 09a.FO

    ==> $sPLANZ = 09a

    56 $sPLANZ = 09b.FO

    ==> $sPLANZ = 09b

    57 $sPLANZ = 09c.FO

    ==> $sPLANZ = 09c

    58 $sPLANZ = 09g.FO

    ==> $sPLANZ = 09g

    59 $sPLANZ = 10.03.FO

    ==> $sPLANZ = 10.03

    60 $sPLANZ = 10.02.FO

    ==> $sPLANZ = 10.02

    61 $sPLANZ = 10.01.FO

    ==> $sPLANZ = 10.01

    62 $sPLANZ = 11.02.FO

    ==> $sPLANZ = 11.02

    63 $sPLANZ = 11.01.FO

    ==> $sPLANZ = 11.01

    64 $sPLANZ = 12.01.FO

    ==> $sPLANZ = 12.01

    65 $sPLANZ = 12.02.FO

    ==> $sPLANZ = 12.02

    66 $sPLANZ = 13.01.FO

    ==> $sPLANZ = 13.01

    67 $sPLANZ = 13.01a.FO

    ==> $sPLANZ = 13.01a

    68 $sPLANZ = 13.01b.FO

    ==> $sPLANZ = 13.01b

    69 $sPLANZ = 13.02.01.FO

    ==> $sPLANZ = 13.02.01

    70 $sPLANZ = 13.02.02.FO

    ==> $sPLANZ = 13.02.02

    71 $sPLANZ = 13.03.FO

    ==> $sPLANZ = 13.03

    72 $sPLANZ = 14.FO

    ==> $sPLANZ = 14

    73 $sPLANZ = 14.01.FO

    ==> $sPLANZ = 14.01

    74 $sPLANZ = 14.02.FO

    ==> $sPLANZ = 14.02

    75 $sPLANZ = 15.01.FO

    ==> $sPLANZ = 15.01

    76 $sPLANZ = 15.03.FO

    ==> $sPLANZ = 15.03

    77 $sPLANZ = 15.04.FO

    ==> $sPLANZ = 15.04

    78 $sPLANZ = 15.05.FO

    ==> $sPLANZ = 15.05

    79 $sPLANZ = 15.05a.FO

    ==> $sPLANZ = 15.05a

    80 $sPLANZ = 15.05b.FO

    ==> $sPLANZ = 15.05b

    81 $sPLANZ = 15.06.FO

    ==> $sPLANZ = 15.06

    82 $sPLANZ = 15.07.FO

    ==> $sPLANZ = 15.07

    83 $sPLANZ = 15.08.FO

    ==> $sPLANZ = 15.08

    84 $sPLANZ = 15.09a.FO

    ==> $sPLANZ = 15.09a

    85 $sPLANZ = 15.09b.FO

    ==> $sPLANZ = 15.09b

    86 $sPLANZ = 15.11.FO

    ==> $sPLANZ = 15.11

    87 $sPLANZ = 15.12.FO

    ==> $sPLANZ = 15.12

    88 $sPLANZ = 15.13.FO

    ==> $sPLANZ = 15.13

    89 $sPLANZ = 15.13FNP.FO

    ==> $sPLANZ = 15.13FNP

    90 $sPLANZ = 15z34.FO

    ==> $sPLANZ = 15z34

    +>13:33:28 AutoIt3.exe ended.rc:0

    Öffnen der DB funktioniert (auch das Ändern).

    Ein erneuter Durchlauf zeigt :

    Spoiler anzeigen

    Öffnen der .dbf OK ...

    Anzahl der Datensätze = 91

    _DBF_GetFieldIndex = 0

    0 $sPLANZ = 01.01ue

    ==> Fehler in Datensatz 0, String endet nicht mit '.FO' ...

    1 $sPLANZ = 01.01

    ==> Fehler in Datensatz 1, String endet nicht mit '.FO' ...

    2 $sPLANZ = 01.01.01

    ==> Fehler in Datensatz 2, String endet nicht mit '.FO' ...

    3 $sPLANZ = 01.01.01ue

    ==> Fehler in Datensatz 3, String endet nicht mit '.FO' ...

    4 $sPLANZ = 01.01.02

    ==> Fehler in Datensatz 4, String endet nicht mit '.FO' ...

    5 $sPLANZ = 01.01.02ue

    ==> Fehler in Datensatz 5, String endet nicht mit '.FO' ...

    6 $sPLANZ = 01.01.03

    ==> Fehler in Datensatz 6, String endet nicht mit '.FO' ...

    7 $sPLANZ = 01.01.03ue

    ==> Fehler in Datensatz 7, String endet nicht mit '.FO' ...

    8 $sPLANZ = 01.01.04

    ==> Fehler in Datensatz 8, String endet nicht mit '.FO' ...

    9 $sPLANZ = 01.01.04ue

    ==> Fehler in Datensatz 9, String endet nicht mit '.FO' ...

    10 $sPLANZ = 01.02

    ==> Fehler in Datensatz 10, String endet nicht mit '.FO' ...

    11 $sPLANZ = 01.02ue

    ==> Fehler in Datensatz 11, String endet nicht mit '.FO' ...

    12 $sPLANZ = 01.02.01

    ==> Fehler in Datensatz 12, String endet nicht mit '.FO' ...

    13 $sPLANZ = 01.02.01ue

    ==> Fehler in Datensatz 13, String endet nicht mit '.FO' ...

    14 $sPLANZ = 01.02.02

    ==> Fehler in Datensatz 14, String endet nicht mit '.FO' ...

    15 $sPLANZ = 01.02.02ue

    ==> Fehler in Datensatz 15, String endet nicht mit '.FO' ...

    16 $sPLANZ = 01.02.03ug

    ==> Fehler in Datensatz 16, String endet nicht mit '.FO' ...

    17 $sPLANZ = 01.02.03ugue

    ==> Fehler in Datensatz 17, String endet nicht mit '.FO' ...

    18 $sPLANZ = 01.02.03

    ==> Fehler in Datensatz 18, String endet nicht mit '.FO' ...

    19 $sPLANZ = 01.02.03ue

    ==> Fehler in Datensatz 19, String endet nicht mit '.FO' ...

    20 $sPLANZ = 01.03

    ==> Fehler in Datensatz 20, String endet nicht mit '.FO' ...

    21 $sPLANZ = 01.03ue

    ==> Fehler in Datensatz 21, String endet nicht mit '.FO' ...

    22 $sPLANZ = 01.03.01

    ==> Fehler in Datensatz 22, String endet nicht mit '.FO' ...

    23 $sPLANZ = 01.03.01ue

    ==> Fehler in Datensatz 23, String endet nicht mit '.FO' ...

    24 $sPLANZ = 01.03.02

    ==> Fehler in Datensatz 24, String endet nicht mit '.FO' ...

    25 $sPLANZ = 01.03.02ue

    ==> Fehler in Datensatz 25, String endet nicht mit '.FO' ...

    26 $sPLANZ = 01.04

    ==> Fehler in Datensatz 26, String endet nicht mit '.FO' ...

    27 $sPLANZ = 01.04ue

    ==> Fehler in Datensatz 27, String endet nicht mit '.FO' ...

    28 $sPLANZ = 01.04.0

    ==> Fehler in Datensatz 28, String endet nicht mit '.FO' ...

    29 $sPLANZ = 01.04.0ue

    ==> Fehler in Datensatz 29, String endet nicht mit '.FO' ...

    30 $sPLANZ = 01.04.01

    ==> Fehler in Datensatz 30, String endet nicht mit '.FO' ...

    31 $sPLANZ = 01.04.01a

    ==> Fehler in Datensatz 31, String endet nicht mit '.FO' ...

    32 $sPLANZ = 01.04.01ue

    ==> Fehler in Datensatz 32, String endet nicht mit '.FO' ...

    33 $sPLANZ = 01.04.02

    ==> Fehler in Datensatz 33, String endet nicht mit '.FO' ...

    34 $sPLANZ = 01.04.02ue

    ==> Fehler in Datensatz 34, String endet nicht mit '.FO' ...

    35 $sPLANZ = 04.01

    ==> Fehler in Datensatz 35, String endet nicht mit '.FO' ...

    36 $sPLANZ = 04.01ue

    ==> Fehler in Datensatz 36, String endet nicht mit '.FO' ...

    37 $sPLANZ = 04.02

    ==> Fehler in Datensatz 37, String endet nicht mit '.FO' ...

    38 $sPLANZ = 04.02ue

    ==> Fehler in Datensatz 38, String endet nicht mit '.FO' ...

    39 $sPLANZ = 05.01

    ==> Fehler in Datensatz 39, String endet nicht mit '.FO' ...

    40 $sPLANZ = 05.01.01

    ==> Fehler in Datensatz 40, String endet nicht mit '.FO' ...

    41 $sPLANZ = 05.01.02

    ==> Fehler in Datensatz 41, String endet nicht mit '.FO' ...

    42 $sPLANZ = 05.02.01

    ==> Fehler in Datensatz 42, String endet nicht mit '.FO' ...

    43 $sPLANZ = 05.04

    ==> Fehler in Datensatz 43, String endet nicht mit '.FO' ...

    44 $sPLANZ = 06.01

    ==> Fehler in Datensatz 44, String endet nicht mit '.FO' ...

    45 $sPLANZ = 06.03

    ==> Fehler in Datensatz 45, String endet nicht mit '.FO' ...

    46 $sPLANZ = 06.05.01

    ==> Fehler in Datensatz 46, String endet nicht mit '.FO' ...

    47 $sPLANZ = 06

    ==> Fehler in Datensatz 47, String endet nicht mit '.FO' ...

    48 $sPLANZ = 06.06

    ==> Fehler in Datensatz 48, String endet nicht mit '.FO' ...

    49 $sPLANZ = 06.03a

    ==> Fehler in Datensatz 49, String endet nicht mit '.FO' ...

    50 $sPLANZ = 05.01.03

    ==> Fehler in Datensatz 50, String endet nicht mit '.FO' ...

    51 $sPLANZ = 07

    ==> Fehler in Datensatz 51, String endet nicht mit '.FO' ...

    52 $sPLANZ = 09

    ==> Fehler in Datensatz 52, String endet nicht mit '.FO' ...

    53 $sPLANZ = 09oe

    ==> Fehler in Datensatz 53, String endet nicht mit '.FO' ...

    54 $sPLANZ = 09pr

    ==> Fehler in Datensatz 54, String endet nicht mit '.FO' ...

    55 $sPLANZ = 09a

    ==> Fehler in Datensatz 55, String endet nicht mit '.FO' ...

    56 $sPLANZ = 09b

    ==> Fehler in Datensatz 56, String endet nicht mit '.FO' ...

    57 $sPLANZ = 09c

    ==> Fehler in Datensatz 57, String endet nicht mit '.FO' ...

    58 $sPLANZ = 09g

    ==> Fehler in Datensatz 58, String endet nicht mit '.FO' ...

    59 $sPLANZ = 10.03

    ==> Fehler in Datensatz 59, String endet nicht mit '.FO' ...

    60 $sPLANZ = 10.02

    ==> Fehler in Datensatz 60, String endet nicht mit '.FO' ...

    61 $sPLANZ = 10.01

    ==> Fehler in Datensatz 61, String endet nicht mit '.FO' ...

    62 $sPLANZ = 11.02

    ==> Fehler in Datensatz 62, String endet nicht mit '.FO' ...

    63 $sPLANZ = 11.01

    ==> Fehler in Datensatz 63, String endet nicht mit '.FO' ...

    64 $sPLANZ = 12.01

    ==> Fehler in Datensatz 64, String endet nicht mit '.FO' ...

    65 $sPLANZ = 12.02

    ==> Fehler in Datensatz 65, String endet nicht mit '.FO' ...

    66 $sPLANZ = 13.01

    ==> Fehler in Datensatz 66, String endet nicht mit '.FO' ...

    67 $sPLANZ = 13.01a

    ==> Fehler in Datensatz 67, String endet nicht mit '.FO' ...

    68 $sPLANZ = 13.01b

    ==> Fehler in Datensatz 68, String endet nicht mit '.FO' ...

    69 $sPLANZ = 13.02.01

    ==> Fehler in Datensatz 69, String endet nicht mit '.FO' ...

    70 $sPLANZ = 13.02.02

    ==> Fehler in Datensatz 70, String endet nicht mit '.FO' ...

    71 $sPLANZ = 13.03

    ==> Fehler in Datensatz 71, String endet nicht mit '.FO' ...

    72 $sPLANZ = 14

    ==> Fehler in Datensatz 72, String endet nicht mit '.FO' ...

    73 $sPLANZ = 14.01

    ==> Fehler in Datensatz 73, String endet nicht mit '.FO' ...

    74 $sPLANZ = 14.02

    ==> Fehler in Datensatz 74, String endet nicht mit '.FO' ...

    75 $sPLANZ = 15.01

    ==> Fehler in Datensatz 75, String endet nicht mit '.FO' ...

    76 $sPLANZ = 15.03

    ==> Fehler in Datensatz 76, String endet nicht mit '.FO' ...

    77 $sPLANZ = 15.04

    ==> Fehler in Datensatz 77, String endet nicht mit '.FO' ...

    78 $sPLANZ = 15.05

    ==> Fehler in Datensatz 78, String endet nicht mit '.FO' ...

    79 $sPLANZ = 15.05a

    ==> Fehler in Datensatz 79, String endet nicht mit '.FO' ...

    80 $sPLANZ = 15.05b

    ==> Fehler in Datensatz 80, String endet nicht mit '.FO' ...

    81 $sPLANZ = 15.06

    ==> Fehler in Datensatz 81, String endet nicht mit '.FO' ...

    82 $sPLANZ = 15.07

    ==> Fehler in Datensatz 82, String endet nicht mit '.FO' ...

    83 $sPLANZ = 15.08

    ==> Fehler in Datensatz 83, String endet nicht mit '.FO' ...

    84 $sPLANZ = 15.09a

    ==> Fehler in Datensatz 84, String endet nicht mit '.FO' ...

    85 $sPLANZ = 15.09b

    ==> Fehler in Datensatz 85, String endet nicht mit '.FO' ...

    86 $sPLANZ = 15.11

    ==> Fehler in Datensatz 86, String endet nicht mit '.FO' ...

    87 $sPLANZ = 15.12

    ==> Fehler in Datensatz 87, String endet nicht mit '.FO' ...

    88 $sPLANZ = 15.13

    ==> Fehler in Datensatz 88, String endet nicht mit '.FO' ...

    89 $sPLANZ = 15.13FNP

    ==> Fehler in Datensatz 89, String endet nicht mit '.FO' ...

    90 $sPLANZ = 15z34

    ==> Fehler in Datensatz 90, String endet nicht mit '.FO' ...

    +>13:36:54 AutoIt3.exe ended.rc:0

    Es wurden alle .FO entfernt.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Wie sieht es denn in der DBF.au3 aus? Der Fehler kommt ja von dort.

    Hi Moombas !

    Hast Du mein Skript (aus Beitrag #10) mal ausgeführt und bekommst Du eine Fehlermeldung ?

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hab erst jetzt gesehen das die DBF.au3 ja "fremd" Ware ist^^

    Aber bei mir läuft deins durch, hab nur keine dbf-Datei zum testen.

    Edit: Mit der DBF von oben läuft es einwandfrei durch.

    Einmal editiert, zuletzt von Moombas (28. April 2020 um 14:18)

  • Hi!

    Die hatte ich oben schon eingestellt.

    Musashi

    Dein Script habe ich auch mal abgespeichert und in den selben Ordner meine dbf gelegt.

    Dann habe ich noch mal den Inhalt Deiner dbf.zip verglichen mit dem Stand, der mir von gestern vorlag - bis auf die Minute identisch.

    Die dll und die au3 habe ich dann trotzdem noch einmal in den include-Ordner von AutoIt verschoben.

    Habe es durchlaufen lassen ... immer noch öffnet er die dbf nicht. >Grrrr....>

    Den SciTE kann ich hier nicht installieren ... dazu habe ich keine Rechte.

    Programmiere ja nicht mehr in Access, da es von unserer EDV nicht gewollt ist, dass hier programmiert wird.

    Daher habe ich mich ja nun für AutoIt entschieden, um wenigstens kleinere Tools schreiben zu können.

  • oberh: Ggf. solltet ihr dann eine Anforderung zur Arbeitserleichterung an die EDV stellen mit entsprechenden Begründungen (Zeitersparnis von X Stunden/Woche etc.). Wenn sich das summiert wird sie eventuell entwickeln müssen oder euch es doch erlauben.

  • Den SciTE kann ich hier nicht installieren ... dazu habe ich keine Rechte.

    Programmiere ja nicht mehr in Access, da es von unserer EDV nicht gewollt ist, dass hier programmiert wird. Daher habe ich mich ja nun für AutoIt entschieden, um wenigstens kleinere Tools schreiben zu können.

    Zu den Entscheidungen eurer EDV kann ich natürlich nichts sagen. Was machst Du denn mit den 'kleineren Tools', die Du mit AutoIt erstellen möchtest. Wenn die im Rahmen eures Firmennetzes laufen sollen, dann dürfte das die EDV sicher auch nicht begeistern, zumal AutoIt .exe gerne die Virenscanner triggern;).

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hi!

    Keine Chance ...

    Sie lassen nur noch Fremdsoftware zu.

    Für solch ein kleines Tool ist es aber doch Blödsinn eine Fremdfirma zu beauftragen.

    Leider sehen sie nur als Beispiel ein Projekt, wo der Programmierer die Stelle gewechselt hatte und niemand nun mehr die Datenbank betreuen konnte.

    Ich selbst habe hingegen schon Daten gerettet, wo die Kaufsoftware nicht mehr lief und die Firma und damit ein Support nicht mehr existierte.

    Ich habe zwar noch eine Access-Lizenz, jedoch kann ich die Programme nicht mehr verteilen.

    Bei diesem Projekt hier wollen wir eine andere Abteilung bei der Digitalisierung von Bebauungsplänen helfen.

    Die dort vorrätige Software arbeitet mit alphanumerischen Schlüsseln (siehe Feld PLANZ), die je Geometrietyp eindeutig sind.

    Wir hier arbeiten aber mit Geograf, wo die Konstruktionswerkzeuge einfach besser sind.

    Allerding kollidieren hier die Schlüssel bei Linien- und Flächenobjekten,

    Daher habe ich jedem flächenförmigen Objekt ein ".FO" an den Schlüssel gehangen.

    Wenn wir die Daten also abgeben wollen (per SHP-Schnittstelle), dann muss diese Zeichenkette entfernt werden - erhalten wir Daten und wollen diese bei uns einlesen, muss die Zeichenkette ergänzt werden.

    Schlüsselkonflikt gelöst ...

    Keiner konnte ahnen, dass aus diesem "ich programmiere mal eben was in AutoIt" solch ein Problem entsteht ... :)

    Musashi

    Darauf lasse ich es ankommen ... :)

    AutoIt habe ich schon im Netzwerk liegen. In Geograf habe ich eine Symbolleiste mit den beiden Befehlen erzeugt, sodass sie jeder nutzen kann.

  • (Da haben sich unsere Beiträge wohl gerade überschnitten)

    Klingt alles sehr stark nach Behörde ^^.

    Darauf lasse ich es ankommen ... :)

    AutoIt habe ich schon im Netzwerk liegen. In Geograf habe ich eine Symbolleiste mit den beiden Befehlen erzeugt, sodass sie jeder nutzen kann.

    Zur Not installiere Dir AutoIt und Scite4AutoIt3 (Vollversion von SciTE) halt auf Deinem privaten PC. Dort kannst Du die Skripte vernünftig entwickeln und , sobald sie laufen, in euer Netzwerk übernehmen :P.

    Alternativ kannst Du die Skripte auch als .a3x Dateien kompilieren und sie über die AutoIt3.exe (als Interpreter) starten.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Jepp ... Behördenwahn pur ... :)

    Immerhin sollen wir, was die Sicherheit angeht, mit zu den führenden Behörden in D gehören ...

    Ja, werde es mal auf meinem privaten Rechner testen, wenn ich morgen wieder im Homeoffice bin.

    Allerdings muss ich auch da aufpassen, was ich installiere ...

    Kürzlich habe ich Zoom für private Zwecke installiert. Prompt kam eine Meldung: Jeder, der die Software auf seinem privaten Rechner nutzt (mit dem ja auch Homeoffice gemacht wird), fliegt aus dem Netz ...

    Also musste ich es wieder deinstallieren ...

    Moombas

    Danke Dir ... Schaue ich mir gleich mal an ... Da war ich zwar schon, hatte aber SciTe nicht gesehen ...

  • Müsste in der Zip eigentlich enthalten sein. Kann sie selber aber gerade nicht runter laden, Chrome zickt aktuell ein wenig.

    Edit: Mit Firefox ging es: Scite ist enthalten.

  • Ich hatte dieselben Probleme mit dem Skript:

    Zitat


    "Fehler beim Öffnen der dbf ..."

    Ein einfügen von:

    Code
    #AutoIt3Wrapper_UseX64=n

    im Kopf des Skriptes und Problem ist verschwunden. Mein Consolenoutput von Musashi 's Skript (mit obigem Zusatz):