Problem bei automatischem Ping
Erstma einen schönen Guten Mittag!
Ich schreibe zur Zeit in VB.NET eine Anwendung, die in bestimmten Abständen verschiedene PCs pingen soll. Diese PCs sind alle in einer Access-Tabelle vorhanden und können über das Adminpanel auch hinzugefügt, gelöscht oder editiert werden. Das Problem ist, dass ich nicht weiß, wie ich den automatischen Ping realisieren soll, da ich die Auslesung der Daten nicht so hinbekomme, wie ich sie brauche und die Ping-Intervalle beim PC erstellen/editieren geändert werden können.
Ich habe zur Zeit folgenden Code:
Imports System.Data
Imports System.Data.OleDb
Public Class pc_int
Private con As New OleDb.OleDbConnection
Private strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Freibage\WatchGuard.mdb;" & "Jet OLEDB:database Password=xy;"
Private pcID As String
Dim WithEvents tm As Timer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim x
Dim ueberwachung_bis
Dim ueberwachung_von
Dim Nextp
Try
ueberwachung_bis = "23:59"
ueberwachung_von = "00:01"
Nextp = "12:00"
Try
Dim DSPC As New DataSet
con.ConnectionString = strCon
Dim oledbadapter As OleDb.OleDbDataAdapter
oledbadapter = New OleDb.OleDbDataAdapter("SELECT * FROM pcping", con)
con.Open()
oledbadapter.Fill(DSPC, "ID")
ueberwachung_von = DSPC.Tables("ID").Rows(0).Item(2)
ueberwachung_bis = DSPC.Tables("ID").Rows(0).Item(3)
Nextp = DSPC.Tables("ID").Rows(0).Item(6)
MsgBox("Von: " + ueberwachung_von.ToString)
MsgBox("Bis: " + ueberwachung_bis.ToString)
MsgBox("Nächster: " + Nextp.ToString)
Catch ex As Exception
MsgBox("Fehler: " + ex.ToString)
Finally
con.Close()
End Try
x = Now.ToString("HH:mm")
MsgBox("Zeit: " + x.ToString)
If Nextp = x Then
MsgBox("Richtig: Nextp = x")
If ueberwachung_von <= x And ueberwachung_bis >= x Then
MsgBox("Richtig: Von <= x UND Bis >= x")
'Ping
'Schreibe History
Else
MsgBox("Falsch: Von > x ODER Bis < x")
End If
MsgBox("Falsch: Nextp <> x")
Else
End If
x = ""
Catch ex As Exception
MsgBox("Fehler: " + ex.ToString)
End Try
End Sub
End Class
Timer1_Tick wird alle 45000ms, also alle 45s ausgeführt.
Mein Problem ist, dass er mit diesem Code nur die Zeile 0 überprüft und nicht die restlichen Zeilen... Hat da wer ne Idee? Das ist so mehr oder weniger das einzige was noch fehlt, dann ist das Programm fertig...
Ich schreibe zur Zeit in VB.NET eine Anwendung, die in bestimmten Abständen verschiedene PCs pingen soll. Diese PCs sind alle in einer Access-Tabelle vorhanden und können über das Adminpanel auch hinzugefügt, gelöscht oder editiert werden. Das Problem ist, dass ich nicht weiß, wie ich den automatischen Ping realisieren soll, da ich die Auslesung der Daten nicht so hinbekomme, wie ich sie brauche und die Ping-Intervalle beim PC erstellen/editieren geändert werden können.
Ich habe zur Zeit folgenden Code:
Imports System.Data
Imports System.Data.OleDb
Public Class pc_int
Private con As New OleDb.OleDbConnection
Private strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Freibage\WatchGuard.mdb;" & "Jet OLEDB:database Password=xy;"
Private pcID As String
Dim WithEvents tm As Timer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim x
Dim ueberwachung_bis
Dim ueberwachung_von
Dim Nextp
Try
ueberwachung_bis = "23:59"
ueberwachung_von = "00:01"
Nextp = "12:00"
Try
Dim DSPC As New DataSet
con.ConnectionString = strCon
Dim oledbadapter As OleDb.OleDbDataAdapter
oledbadapter = New OleDb.OleDbDataAdapter("SELECT * FROM pcping", con)
con.Open()
oledbadapter.Fill(DSPC, "ID")
ueberwachung_von = DSPC.Tables("ID").Rows(0).Item(2)
ueberwachung_bis = DSPC.Tables("ID").Rows(0).Item(3)
Nextp = DSPC.Tables("ID").Rows(0).Item(6)
MsgBox("Von: " + ueberwachung_von.ToString)
MsgBox("Bis: " + ueberwachung_bis.ToString)
MsgBox("Nächster: " + Nextp.ToString)
Catch ex As Exception
MsgBox("Fehler: " + ex.ToString)
Finally
con.Close()
End Try
x = Now.ToString("HH:mm")
MsgBox("Zeit: " + x.ToString)
If Nextp = x Then
MsgBox("Richtig: Nextp = x")
If ueberwachung_von <= x And ueberwachung_bis >= x Then
MsgBox("Richtig: Von <= x UND Bis >= x")
'Ping
'Schreibe History
Else
MsgBox("Falsch: Von > x ODER Bis < x")
End If
MsgBox("Falsch: Nextp <> x")
Else
End If
x = ""
Catch ex As Exception
MsgBox("Fehler: " + ex.ToString)
End Try
End Sub
End Class
Timer1_Tick wird alle 45000ms, also alle 45s ausgeführt.
Mein Problem ist, dass er mit diesem Code nur die Zeile 0 überprüft und nicht die restlichen Zeilen... Hat da wer ne Idee? Das ist so mehr oder weniger das einzige was noch fehlt, dann ist das Programm fertig...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 46981
Url: https://administrator.de/contentid/46981
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
Schau Dir Deinen Code an und sag mir, warum er nur die Daten der ersten Zeile nimmt
Hint: Was heist Row auf deustch und warum steht die 0 in der Klammer *g*
Das ganze DB-rumprogrammiere hast ja auch super umständlich gemacht, warum gehst Du nicht ganz normal mit einem Cursor von oben nach unten durch den Ergebnissatz, Also zuerst einen Select, dann die Werte auslesen mit RC.Fields("Feldname") und dann einen RC.MoveNext ...
cu,
Alex
ueberwachung_von = DSPC.Tables("ID").Rows(0).Item(2)
ueberwachung_bis = DSPC.Tables("ID").Rows(0).Item(3)
Nextp = DSPC.Tables("ID").Rows(0).Item(6)
Schau Dir Deinen Code an und sag mir, warum er nur die Daten der ersten Zeile nimmt
Hint: Was heist Row auf deustch und warum steht die 0 in der Klammer *g*
Das ganze DB-rumprogrammiere hast ja auch super umständlich gemacht, warum gehst Du nicht ganz normal mit einem Cursor von oben nach unten durch den Ergebnissatz, Also zuerst einen Select, dann die Werte auslesen mit RC.Fields("Feldname") und dann einen RC.MoveNext ...
cu,
Alex
Hi,
RC ist eine Abkürzung für Recordset. Ich mache das immer so:
- Einen Connect zur Datenbank
- auf diese DB kann man dann mittels des Select-Statements einen Recordset öffnen
- und dann mittels while not Recordset.eof ... die Elemente durchlaufen lassen.
Ob das so ganz in VB geht, weis ich jetzt nicht auswenig, in VBScript mache ich das mit ADODB.
cu,
Alex
RC ist eine Abkürzung für Recordset. Ich mache das immer so:
- Einen Connect zur Datenbank
- auf diese DB kann man dann mittels des Select-Statements einen Recordset öffnen
- und dann mittels while not Recordset.eof ... die Elemente durchlaufen lassen.
Ob das so ganz in VB geht, weis ich jetzt nicht auswenig, in VBScript mache ich das mit ADODB.
cu,
Alex