time
Goto Top

Problem bei automatischem Ping

Erstma einen schönen Guten Mittag! face-smile

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...

Content-Key: 46981

Url: https://administrator.de/contentid/46981

Printed on: April 19, 2024 at 06:04 o'clock

Member: DaSam
DaSam Dec 18, 2006 at 14:36:23 (UTC)
Goto Top
Hi,

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 face-wink
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
Member: Time
Time Dec 18, 2006 at 14:47:06 (UTC)
Goto Top
Hi,

> 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 face-wink
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

Schon klar, dass er nur die erste Zeile ausliest, weil da Row(0) steht ^^ Wollte ne alternative Lösung, die alle Zeilen durchgeht :-P

Das is warscheinlich alles etwas umständlich, da ich erst seit knapp 3Wochen VB.NET schreibe und mich mit Datenbanken noch nich so beschäftigt hab face-wink

Was is RC? Unter welchem Namespace find ich das?

Aber danke schonma für die Antwort face-smile
Member: DaSam
DaSam Dec 18, 2006 at 17:17:52 (UTC)
Goto Top
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
Member: Time
Time Dec 19, 2006 at 08:34:20 (UTC)
Goto Top
Danke für den Tipp, aber ich muss dir da was sagen:

Bei ADO werden die Daten im Speicher als Recordset dargestellt, bei ADO.NET als Dataset... face-smile

Ich mache das ganze ja mit DataSets face-wink

Ich muss nur rausfinden, wie ich mich mit dem Ding durch die Zeilen bewege :P
Member: DaSam
DaSam Dec 19, 2006 at 19:39:50 (UTC)
Goto Top
Hi,

prinzipiell sollte es ja mit "foreach" gehen:

foreach sRow in DataSet.Rows
...
DoPing sRow.Field("RechnerName")
next

sRow müsste halt in der Art OleDB.DataSet.Row deklariert werden

(Ist jetzt alles nur zusammengestöpselt, ich habe keine Ahnung, ob die Objekte und Klassen so passen).

cu,
Alex