Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1556to1560
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Falsche Datensatzlänge...mal wieder...

Falsche Datensatzlänge...mal wieder...
12.05.2017 13:37:10
Brüggmann
Hallo,
ich wende mich an dieses forum, weil ich im Internet nichts passendes gefunden habe. Es geht um Excel 2016 (32-Bit) - sowie z. T. auch um Excel 2013 (64 Bit), beide unter Win10.
Ich selber nutze die 2016er-Version. Ich habe eine "Datenbank" angelegt. Hier der Type dazu:
Type MitarbeiterDaten
PersNr As String * 10
Vorname As String * 20
Nachname As String * 40
Eintritt As Date
Austritt As Date
Tätigkeiten As String * 33
Wochenstunden As Integer
MonatsStunden As Integer
TagStunden As Integer
Abteilung As String * 30
PrimEinsatz As String * 30
Bereich As String * 20
Status As String * 25
Jahresurlaub As Integer
Sonderurlaub As Integer
VorjahresUrlaub As Integer
VerplanterUrlaub As Integer
Resturlaub As Integer
Stundenkonto As Integer
VerplanteStunden As Integer
Kranktage As Integer
EinsatzTage As String * 7
GebDat As Date
Telefon1 As String * 30
Telefon2 As String * 30
Bemerkung As String * 200
Strasse As String * 50
Zusatz As String * 50
PLZ As String * 10
Ort As String * 50
BereitsHier As Boolean
Schichtmodell As Integer
WinUser As String * 20
LX1User As String * 20
TL As String * 60
End Type
Der Fehler ist folgender: Bei mir läuft diese Datei problemlos. Bei Excel 2013 gibt es beim ersten GET ein "Falsche Datensatzlänge" (der Code ist identisch zu meinem, OPTION EXPLICIT usw. ist alles dabei, alles ist mit DIM/PUBLIC angelegt). Das kuriose ist: Speichere ich die Tabelle bei mir ab, dann klappt GET unter 2013 ohne Probleme.
Es wird noch besser: Aus Excel 2013 heraus wurde eine andere Datei angelegt
Type Schulung
PersNr2 As String * 10
Vorname2 As String * 20
Nachname2 As String * 40
Datum2 As Date
AnwNr2 As Integer
AnwTitel2 As String * 100
End Type
Möchte ich auf diese mit 2016 zugreifen, kommt "Falsche Datensatzlänge" beim ersten GET. Füge ich in meinem Code eine Leerzeile ein, oder entferne irgendwo irgendeine Anweisung - auch wenn es im Code einer Userform ist, oder in einem ganz anderen SUB, dann verschwindet der Fehler 59 und GET liest die Datei.
Aber eben nur, bis man wieder was am Code ändert. Dann geht das Ausprobieren wieder los.
Ich halte fest:
- Alle Vars im kompletten Code sind mit DIM name AS typ angelegt, zur Sicherheit steht überall OPTION EXPLICIT. Der Kompiler meckert nicht.
- Die TYPEs sind wie oben aufgeführt. Es werden keine Variants verwendet.
- Beim Untersuchen der Dateien mit einem Hex-Editor stehen in den Strings keine "komischen" Zeichen, die ggf. Probleme verursachen könnten.
- Wenn der Fehler 59 auftritt, dann bleibt er - bis man den Code willkürlich ändert.
Woran liegt das und was kann ich tun?
Selbst ein einfaches
DIM dn as INTEGER
DIM Datensatz as MitarbeiterDaten
dn = FREEFILE
OPEN "Datei" FOR RANDOM AS DN LEN=LEN(datensatz)
GET DN,1,Datensatz
führt bereits zum Error 59 - aber nur, bis man z. B. DN in DN2 umbenennt (oder irgendetwas anderes macht, z. B. eine MSGBOX einbaut).

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Falsche Datensatzlänge...mal wieder...
12.05.2017 14:49:35
Nepumuk
Hallo,
hast du UNICODE-Zeichen im Text? Wenn ja, dann versuch es mal mit LenB an Stelle von Len.
Gruß
Nepumuk
AW: Falsche Datensatzlänge...mal wieder...
12.05.2017 14:54:04
Brüggmann
Nein, keine Unicode-Zeichen.
Davor hatte ich auch LENB drin (weil es auf der MS-Seite als Beispiel angegeben wurde). Allerdings ging es mit LENB und Excel 2013 gar nicht - als ich es dann in LEN geändert habe, war nicht nur die Datenbank um 50% kleiner (nur noch ein Byte pro Zeichen), es verträgt sich auch eher mit Excel 2013 (wenn man das so sagen darf).
Aktuell habe ich gerade wieder das Problem, ich habe bei
GET Datei,SatzNr,DatenSatz
die IF-Abfrage danach von IF DatenSatz.SchulDat CDate("01.01.2000") geändert - und zwar nur das Datum selbst - sofort kam wieder ein Fehler 59.... Irgendwie erscheint dieser Fehler total willkürlich - es gibt auch keinerlei klare Regeln, nach deren Befolgung es läuft. Es scheint alles zufällig zu laufen.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige