Veröffentlicht 3. August 200916 j Hallo zusammen, ich habe beim Auslesen und Schreiben des Inhaltes einer Textdatei in ein Array daß Problem, daß bis zum Feld 99 des Arrays alles klappt - beim Abfragen von Feldern größer/gleich 100 passiert nichts - es erscheint weder eine Fehlermeldung noch werden die Feldinhalte abgelegt: Daß Problem liegt an dieser Zeile: Select Case MyArray(61) Sobald hier ein Wert >99 steht, funktioniert nichts mehr ! Dim MyArray() As String Dim Temptabelle As Variant Dim Tempstring As String Dim Freie_Datei As Integer Dim AnzahlZeichenInString, AnzahlZeichenInArray As Integer Dim i, k, j As Integer Dim sql As String Dim Konservennummer_Var As String Dim GGT_Var As Integer Dim GOT_Var As Integer Dim GPT_Var As Integer Dim CHOL_Var As Integer Dim TRIG_Var As Integer Dim ALB_Var As Integer Dim KREA_Var As Integer Dim GLUC_Var As Integer Freie_Datei = FreeFile AnzahlZeichenInArray = 0 k = 0 Open "C:\MODULAR\MODULAR_05544.txt" For Input As #Freie_Datei While Not EOF(Freie_Datei) 'Schreibt alles was in eine Zeile steht (Datei) in variable (Tempstring) Input #Freie_Datei, Tempstring 'Speichert in Variant (Temptabelle) von variable (Tempstring) ohne Trennzeichen Temptabelle = Split(Tempstring, "|") 'Zählt die Anzahl von Zeichen in Variant (Temptabelle) AnzahlZeichenInString = UBound(Temptabelle) 'Endwert (die letzte Position im Array) AnzahlZeichenInArray = k + AnzahlZeichenInString 'Position von Daten in Temptabelle (jeden Schleifengang fähngt von 0) j = 0 ReDim Preserve MyArray(AnzahlZeichenInArray) For i = k To AnzahlZeichenInArray 'Schreibt Element an die richtige Position im Array MyArray(i) = Temptabelle(j) j = j + 1 Next i 'Startwert (die erste Position im Array) k = AnzahlZeichenInArray + 1 Wend Close Freie_Datei Konservennummer_Var = MyArray(30) ' Abfrage des ersten Ergebnisses Select Case MyArray(61) Case "^^^219/": GGT_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET GGT = " & GGT_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^684/": GPT_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET GPT = " & GPT_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^686/": GOT_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET GOT = " & GOT_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^413/": ALB_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET Albumin = " & ALB_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^433/": CHOL_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET Cholesterin = " & CHOL_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^773/": KREA_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET Kreatinin = " & KREA_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^668/": GLUC_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET Gesamteiweiß = " & GLUC_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Case "^^^781/": TRIG_Var = Val(MyArray(62)) sql = "UPDATE dbo.SpendenTestergeb SET Triglyceride = " & TRIG_Var & " " sql = sql & " WHERE (Konservennummer = " & Konservennummer_Var & ");" DoCmd.RunSQL sql Besten Dank im Vorfeld für Eure Unterstützung !
3. August 200916 j Genau den Inhalt, den er haben sollte (in diesem Fall die Zahl 25.6) - ich lasse mir parallel zum Tabellenupdate den Inhalt auch in einer MsgBox anzeigen - daher weiß ich es. Vielleicht nochmal kurz zum Verständnis: Die entsprechenden case-Fälle tragen bestimmte Werte in eine SQL-Tabelle ein - solange daß Array-element unter 100 liegt, werden sie auch korrekt eingetragen - ....
3. August 200916 j dann vermute ich, dass die Spalte "Triglyceride" nur einen falschen Datentyp hat. Lasse dir das SQL-Statement ausgeben und führe diesen manuell im DMS aus.
3. August 200916 j Sorry, hab da was verwechselt. Wenn du das Programm bei >100 debuggst, wird das SQL-Statement ausgeführt? Hast du mal probiert das Statement im Debug-modus dir auszugeben und über DMS auszuführen?
3. August 200916 j Nein, bei einem Wert >100 wird daß SQl-Statement nicht ausgeführt - soweit kommt er nicht..
3. August 200916 j dann trifft für die Variable MyArray(100) keins der Case-Bedingungen zu. Der Wert ist ja 25.6 und in deinen Bedingung, die du gepostet hast sehe ich keine passende Case-Bedingung dafür.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.