charly2005 Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 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 ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 wie viele Elemente hat dein Array? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
charly2005 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 Ist variabel - im aktuelen Beispiel ca. 200 Felder. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 wenn du debuggst, welchen Inhalt hat da MyArray(100)? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
charly2005 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 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 - .... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
charly2005 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 Diese Spalte hat den selben Datentyp wie alle anderen - wie kommst Du darauf ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
charly2005 Geschrieben 3. August 2009 Autor Teilen Geschrieben 3. August 2009 Nein, bei einem Wert >100 wird daß SQl-Statement nicht ausgeführt - soweit kommt er nicht.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
diemah Geschrieben 3. August 2009 Teilen Geschrieben 3. August 2009 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.