Fehlermeldung Objekt erforderlich My obwohl es da ist
Hallo,
ich habe hier ein Script und bekomme die Fehlermeldung aus dem Titel.
Das Script soll eine Zahl aus einer Datei lesen dawas zurechnen die datei dann löschen und neie neue erstellen wo dann die neue zahl eingetrahen wird, das soll für einen Ticketzähler sein.
hier mein code:
Dim fileReader
fileReader = My.Computer.FileSystem.ReadAllText("C:\Ticket\nummer.txt")
fileReader = fileReader +1
MsgBox "Ticket#: " & fileReader
My.Computer.FileSystem.DeleteFile("C:\Ticket\nummer.txt")
Dim file As System.IO.FileStream
file = System.IO.File.Create("C:\Ticket\nummer.txt")
My.Computer.FileSystem.WriteAllText("C:\Ticket\nummer.txt", fileReader ,True)
kann mir da jemand helfen?
mfg corpse2001
ich habe hier ein Script und bekomme die Fehlermeldung aus dem Titel.
Das Script soll eine Zahl aus einer Datei lesen dawas zurechnen die datei dann löschen und neie neue erstellen wo dann die neue zahl eingetrahen wird, das soll für einen Ticketzähler sein.
hier mein code:
Dim fileReader
fileReader = My.Computer.FileSystem.ReadAllText("C:\Ticket\nummer.txt")
fileReader = fileReader +1
MsgBox "Ticket#: " & fileReader
My.Computer.FileSystem.DeleteFile("C:\Ticket\nummer.txt")
Dim file As System.IO.FileStream
file = System.IO.File.Create("C:\Ticket\nummer.txt")
My.Computer.FileSystem.WriteAllText("C:\Ticket\nummer.txt", fileReader ,True)
kann mir da jemand helfen?
mfg corpse2001
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 63970
Url: https://administrator.de/forum/fehlermeldung-objekt-erforderlich-my-obwohl-es-da-ist-63970.html
Ausgedruckt am: 19.05.2025 um 05:05 Uhr
19 Kommentare
Neuester Kommentar
Hallo corpse2001!
Eigentlich wäre für das Schreiben in eine Textdatei ein "StreamWriter"-Objekt zu empfehlen. Außerdem kannst Du mit dem Einlesen des Inhaltes der "nummer.txt" in einen String und nachfolgender Konvertierung zB in einen Integer Fehler wie etwa eine leere "nummer.txt" abfangen.
Unter diesen Gesichtspunkten könnte der Code etwa so aussehen:
Grüße
bastla
Eigentlich wäre für das Schreiben in eine Textdatei ein "StreamWriter"-Objekt zu empfehlen. Außerdem kannst Du mit dem Einlesen des Inhaltes der "nummer.txt" in einen String und nachfolgender Konvertierung zB in einen Integer Fehler wie etwa eine leere "nummer.txt" abfangen.
Unter diesen Gesichtspunkten könnte der Code etwa so aussehen:
Dim TicketFile As String = "C:\Ticket\nummer.txt"
Dim NewNumber As Integer
Dim fileReader = My.Computer.FileSystem.ReadAllText(TicketFile)
If IsNumeric(fileReader) Then
NewNumber = CInt(fileReader) + 1
MsgBox("Ticket#: " & NewNumber)
My.Computer.FileSystem.DeleteFile(TicketFile)
Dim file As New System.IO.StreamWriter(TicketFile)
file.Write(NewNumber)
file.Close()
Else
MsgBox("Ungültiger Inhalt der " & TicketFile)
End If
Grüße
bastla
Hallo corpse2001!
Magst Du trotzdem verraten (beim nächsten Mal bitte gleich von Anfang an), unter welcher VB-Version Du das ausführen willst - falls es nämlich (wie mir scheint) VBScript sein sollte, wäre eher etwas in der Art angebracht:
Grüße
bastla
Magst Du trotzdem verraten (beim nächsten Mal bitte gleich von Anfang an), unter welcher VB-Version Du das ausführen willst - falls es nämlich (wie mir scheint) VBScript sein sollte, wäre eher etwas in der Art angebracht:
Set fso = CreateObject("Scripting.FileSystemObject")
TicketFile = "C:\Ticket\nummer.txt"
If fso.FileExists(TicketFile) Then
Set file = fso.OpenTextFile(TicketFile, 1)
If Not file.AtEndOfStream Then
fileReader = file.ReadLine
If IsNumeric(fileReader) Then
NewNumber = CInt(fileReader) + 1
MsgBox "Ticket#: " & NewNumber
fso.CreateTextFile(TicketFile, True).Write(NewNumber)
Else
MsgBox "Ungültiger Inhalt der " & TicketFile
End If
Else
MsgBox TicketFile & " enthält keine Daten."
End If
Else
MsgBox TicketFile & " nicht gefunden."
End If
Grüße
bastla
Hallo corpse2001!
Am sinnvollsten wäre es, eine Function daraus zu machen, also
Für die Zuweisung zum Feld kannst Du dann zur Sicherheit abfragen, ob die Nummer negativ ist (Kennzeichnung für einen aufgetretenen Fehler) und dann die Nummer zuweisen:
Bitte beachten: Bei jedem Aufruf der Function wird die Ticket-Nummer in der Datei erhöht, daher, wie oben dargestellt, nur einmal aufrufen und das Ergebnis zwischenspeichern (Variable "NewNum"), um es dann auswerten zu können.
Zu ergänzen wäre noch ein verbessertes Errorhandling (fall zB kein Zugriffs- oder Schreibrecht auf die "nummer.txt" besteht, etc).
Grüße
bastla
Am sinnvollsten wäre es, eine Function daraus zu machen, also
Function GetNextTicketNo() As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
TicketFile = "C:\Ticket\nummer.txt"
If fso.FileExists(TicketFile) Then
Set file = fso.OpenTextFile(TicketFile, 1)
If Not file.AtEndOfStream Then
fileReader = file.ReadLine
If IsNumeric(fileReader) Then
NewNumber = CInt(fileReader) + 1
fso.CreateTextFile(TicketFile, True).Write(NewNumber)
Else
NewNumber = -1
End If
Else
NewNumber = -2
End If
Else
NewNumber = -3
End If
GetNextTicketNo = NewNumber
End Function
NewNum = GetNextTicketNo()
If NewNum < 0 Then
MsgBox "Fehler " & Abs(NewNum) & " aufgetreten!"
Else
Feld.Text = NewNum
End If
Zu ergänzen wäre noch ein verbessertes Errorhandling (fall zB kein Zugriffs- oder Schreibrecht auf die "nummer.txt" besteht, etc).
Grüße
bastla
Hallo corpse2001!
Der Fehler "Objekt erwartet" bei einer einfachen Zuweisung eines Textes zu einer TextBox ist für mich nicht nachvollziehbar. Du könntest zwar noch genauer sein und
schreiben, was aber auch nichts bringen dürfte ...
Funktioniert denn zB ein
Grüße
bastla
Der Fehler "Objekt erwartet" bei einer einfachen Zuweisung eines Textes zu einer TextBox ist für mich nicht nachvollziehbar. Du könntest zwar noch genauer sein und
TextBox17.Text = CStr(NewNum)
Funktioniert denn zB ein
TextBox17.Text = "25"
Grüße
bastla
Hallo corpse2001!
Bezieht sich "geht nicht" auch auf die Zuweisung eines konstanten Wertes, also
In diesem Fall wäre das Problem auf der linken Seite des "=" zu suchen ...
Zu Deinem Code: Der richtige Platz für die Zuweisung wäre zwar so wie unten dargestellt, aber auch das wird am Fehler 424 nichts ändern.
Grüße
bastla
P.S.: Beim Posten von Code bitte die entsprechenden Tags < code> und < /code> (jeweils ohne Leerzeichen) verwenden.
Bezieht sich "geht nicht" auch auf die Zuweisung eines konstanten Wertes, also
TextBox17.Text = "26"
Zu Deinem Code: Der richtige Platz für die Zuweisung wäre zwar so wie unten dargestellt, aber auch das wird am Fehler 424 nichts ändern.
Sub NewTicket()
Set fso = CreateObject("Scripting.FileSystemObject")
TicketFile = "V:\nummer.txt"
If fso.FileExists(TicketFile) Then
Set file = fso.OpenTextFile(TicketFile, 1)
If Not file.AtEndOfStream Then
fileReader = file.ReadLine
If IsNumeric(fileReader) Then
NewNumber = CInt(fileReader) + 1
fso.CreateTextFile(TicketFile, True).Write(NewNumber)
MsgBox "Ticket#: " & NewNumber
<b>TextBox17.Text = CStr(NewNumber)</b>
Else
MsgBox "Ungültiger Inhalt der " & TicketFile
End If
Else
MsgBox TicketFile & " enthält keine Daten."
End If
Else
MsgBox TicketFile & " nicht gefunden."
End If
End Sub
Grüße
bastla
P.S.: Beim Posten von Code bitte die entsprechenden Tags < code> und < /code> (jeweils ohne Leerzeichen) verwenden.
Hallo corpse2001!
An sich wäre die nächste Frage schon einen neuen Beitrag Wert (wenn ich's mir recht überlege, auch schon die vorige
), aber vielleicht noch kurz eine andere Strategie: Falls die Nummer nicht für mehrere Benutzer verfügbar sein muss, könntest Du Dir einmal "SaveSetting" und "GetSetting" ansehen - damit kannst Du den Wert in der Registry hinterlegen ...
Grüße
bastla
An sich wäre die nächste Frage schon einen neuen Beitrag Wert (wenn ich's mir recht überlege, auch schon die vorige
Grüße
bastla