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