Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fehlermeldung Objekt erforderlich My obwohl es da ist

Frage Entwicklung VB for Applications

Mitglied: corpse2001

corpse2001 (Level 1) - Jetzt verbinden

17.07.2007, aktualisiert 23.07.2007, 9587 Aufrufe, 19 Kommentare

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?

Mit freundlichen Grüßen corpse2001
Mitglied: bastla
17.07.2007 um 10:01 Uhr
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:
01.
Dim TicketFile As String = "C:\Ticket\nummer.txt" 
02.
Dim NewNumber As Integer 
03.
 
04.
Dim fileReader = My.Computer.FileSystem.ReadAllText(TicketFile) 
05.
If IsNumeric(fileReader) Then 
06.
	NewNumber = CInt(fileReader) + 1 
07.
 
08.
	MsgBox("Ticket#: " & NewNumber) 
09.
 
10.
	My.Computer.FileSystem.DeleteFile(TicketFile) 
11.
 
12.
	Dim file As New System.IO.StreamWriter(TicketFile) 
13.
	file.Write(NewNumber) 
14.
	file.Close() 
15.
Else 
16.
	MsgBox("Ungültiger Inhalt der " & TicketFile) 
17.
End If
Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
17.07.2007 um 10:09 Uhr
Hallo,

danke für die schnelle antwort wenn ich das so benutze bekomme ich den fehler
Anweisungsende erwartet in Zeile 1 Zeichen 16

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
17.07.2007 um 10:15 Uhr
Hallo corpse2001!

Dann vermute ich, dass Du kein VB2005 nutzt ...

Teile einfach die Zeile auf in
01.
Dim TicketFile As String 
02.
TicketFile = "C:\Ticket\nummer.txt"
Analog dazu auch die Vorgangsweise beim "Dim fileReader ..."

Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
17.07.2007 um 10:47 Uhr
ja das stimmt ich schreibe ds einfach mit dem editor.
wenn ich das nun teile bekomme ich leider den selben fehler.

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
17.07.2007 um 10:59 Uhr
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:
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
TicketFile = "C:\Ticket\nummer.txt" 
03.
 
04.
If fso.FileExists(TicketFile) Then 
05.
	Set file = fso.OpenTextFile(TicketFile, 1) 
06.
	If Not file.AtEndOfStream Then 
07.
		fileReader = file.ReadLine 
08.
		If IsNumeric(fileReader) Then 
09.
			NewNumber = CInt(fileReader) + 1 
10.
			MsgBox "Ticket#: " & NewNumber 
11.
			fso.CreateTextFile(TicketFile, True).Write(NewNumber) 
12.
		Else 
13.
			MsgBox "Ungültiger Inhalt der " & TicketFile 
14.
		End If 
15.
	Else 
16.
		MsgBox TicketFile & " enthält keine Daten." 
17.
	End If 
18.
Else 
19.
	MsgBox TicketFile & " nicht gefunden." 
20.
End If
Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
17.07.2007 um 13:57 Uhr
Vielen dank das funktioniert wunderbar

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: corpse2001
17.07.2007 um 14:10 Uhr
Hallo,

eine frage habe ich doch noch.
kann ich das auch so machen das ichd as nicht über die MsgBox ausgebe sondern in ein Feld in einem Formual in Outlook 2003?

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
17.07.2007 um 14:46 Uhr
Hallo corpse2001!

Der Code sollte so auch in VBA zu verwenden sein, daher müsstest Du nur den Variableninhalt von "NewNumber" in das Outlook-Formularfeld schreiben.

Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
17.07.2007 um 15:17 Uhr
Hallo,

ich habe des jetzt als Makro in das Formular eingebau ich weiss nun nur nicht wo ich das NewNumber eintragen muss damit das in einem Textfeld im Formular angezeigt wird

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
17.07.2007 um 15:57 Uhr
Hallo corpse2001!

Am sinnvollsten wäre es, eine Function daraus zu machen, also
01.
Function GetNextTicketNo() As Integer 
02.
Set fso = CreateObject("Scripting.FileSystemObject") 
03.
TicketFile = "C:\Ticket\nummer.txt" 
04.
 
05.
If fso.FileExists(TicketFile) Then 
06.
    Set file = fso.OpenTextFile(TicketFile, 1) 
07.
    If Not file.AtEndOfStream Then 
08.
        fileReader = file.ReadLine 
09.
        If IsNumeric(fileReader) Then 
10.
            NewNumber = CInt(fileReader) + 1 
11.
            fso.CreateTextFile(TicketFile, True).Write(NewNumber) 
12.
        Else 
13.
            NewNumber = -1 
14.
        End If 
15.
    Else 
16.
        NewNumber = -2 
17.
    End If 
18.
Else 
19.
    NewNumber = -3 
20.
End If 
21.
GetNextTicketNo = NewNumber 
22.
End Function
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:
01.
NewNum = GetNextTicketNo() 
02.
If NewNum < 0 Then 
03.
    MsgBox "Fehler " & Abs(NewNum) & " aufgetreten!"  
04.
Else 
05.
    Feld.Text = NewNum 
06.
End If
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
Bitte warten ..
Mitglied: corpse2001
18.07.2007 um 10:14 Uhr
Hallo ich habe nun noch ein Problem und zwar mit dem Teil:

Feld.Text = NewNum

Da bekomme ich einen Laufzeitfehler 424 und Objekt erwartet
Feld ist bei mir TextBox17

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
18.07.2007 um 10:26 Uhr
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
01.
TextBox17.Text = CStr(NewNum)
schreiben, was aber auch nichts bringen dürfte ...

Funktioniert denn zB ein
01.
TextBox17.Text = "25"
Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
18.07.2007 um 10:32 Uhr
Hallo,

nein das geht leider nicht. ich habe übrigens auch den alten code behalten weil ich das besser nachvollziehen kann also so sieht das aus bei mir:

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
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
TextBox17.Text = CStr(NewNumber)
End Sub


Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
18.07.2007 um 10:45 Uhr
Hallo corpse2001!

Bezieht sich "geht nicht" auch auf die Zuweisung eines konstanten Wertes, also
01.
TextBox17.Text = "26"
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.
01.
Sub NewTicket() 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
TicketFile = "V:\nummer.txt" 
05.
 
06.
If fso.FileExists(TicketFile) Then 
07.
	Set file = fso.OpenTextFile(TicketFile, 1) 
08.
	If Not file.AtEndOfStream Then 
09.
		fileReader = file.ReadLine 
10.
		If IsNumeric(fileReader) Then 
11.
			NewNumber = CInt(fileReader) + 1 
12.
			fso.CreateTextFile(TicketFile, True).Write(NewNumber) 
13.
			MsgBox "Ticket#: " & NewNumber 
14.
			<b>TextBox17.Text = CStr(NewNumber)</b> 
15.
		Else 
16.
			MsgBox "Ungültiger Inhalt der " & TicketFile 
17.
		End If 
18.
	Else 
19.
		MsgBox TicketFile & " enthält keine Daten." 
20.
	End If 
21.
Else 
22.
	MsgBox TicketFile & " nicht gefunden." 
23.
End If 
24.
End Sub
Grüße
bastla

P.S.: Beim Posten von Code bitte die entsprechenden Tags < code> und < /code> (jeweils ohne Leerzeichen) verwenden.
Bitte warten ..
Mitglied: corpse2001
18.07.2007 um 10:48 Uhr
Hallo,

"geht nicht" bezieht sich auf beides also TextBox17.Text = "26" und TextBox17.Text = "CStr(New...)

ich hatte das auch schon unter die MsgBox ausgabe gepackt hat aber auch nicht geholfen.

Mit freundlichen Grüßen corpse2001
Bitte warten ..
Mitglied: bastla
18.07.2007 um 10:57 Uhr
Hallo corpse2001!

In diesem Fall versuche es mit einer neuen TextBox, da, wie erwähnt, der Fehler auf dieser Seite liegen muss (erklären kann ich ihn mir trotzdem nicht).

Lass ev auch einmal das ".Text" weg ...

Grüße
bastla
Bitte warten ..
Mitglied: corpse2001
19.07.2007 um 15:05 Uhr
Hallo,

ich habe mir da nun was anderes überlegt und zwar schreibe ich die NewNumber einfach in den Betreff
codeauszug:

Set objOL = New Outlook.Application
Set objNS = objOL.GetNamespace("MAPI")
Set objFolder = objNS.GetDefaultFolder(olFolderContacts)

Dim objOLApp As Outlook.Application
Dim NewTask As Outlook.TaskItem
Set objOLApp = New Outlook.Application
Set NewTask = objOLApp.CreateItem(olTaskItem)
NewTask.Subject = "Ticket#: " & NewNumber
NewTask.Display

und dann habe ich noch ne frage und zwar wenn ich nun die Nummer nciht mehr aus ner *.txt datei haben will sondern aus ner datenbank wie kann ich das machen ich habe da schon ne ganze weile nach gegoogelt aber nichts gefunden ich habe mit Access 2003 eine db1.mdb angelegt wodrin eine Tabelle ist und mit wenigen Feldern ID 1 Ticketnummer 10000
im prinzip will ich nun mit der datenbank das gleich machen wie mit der textdatei vorher falls das möglich ist

Mit freundlichen Grüßen
corpse2001
Bitte warten ..
Mitglied: bastla
19.07.2007 um 15:17 Uhr
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
Bitte warten ..
Mitglied: corpse2001
23.07.2007 um 08:59 Uhr
hallo,

ich mach mal nen neuen auf das soll für mehrere Benutzer sein.

gruß
corpse2001

[Edit Biber]
Thx, @corpse2001.
Finde ich nett und das macht es einfacher, später mal Antworten wiederzufinden.
Ich schließe diesen Beitrag hier dann.

Gruß Biber
[/Edit]
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
Fehlermeldung "DotNet Memory Management Global " (5)

Frage von xXEddiXx zum Thema Windows Server ...

Windows Server
Windows-Update für Secure-Boot-Fehler macht BIOS-Updates erforderlich (2)

Link von Penny.Cilin zum Thema Windows Server ...

Outlook & Mail
Fehlermeldung beim schließen von Outlook 2016 auf Terminalserver (7)

Frage von Tommy1983 zum Thema Outlook & Mail ...

Python
gelöst Python requests JSON Objekt + Bild versenden (4)

Frage von nullacht15 zum Thema Python ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...