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

Wie binde ich ein Recordset ein?

Frage Entwicklung VB for Applications

Mitglied: Cyberkey

Cyberkey (Level 1) - Jetzt verbinden

31.03.2010, aktualisiert 13:24 Uhr, 3877 Aufrufe, 7 Kommentare

Ich habe leider nur begrenztes VBA/VBS wissen..

Hallo,

auf der Seite: http://www.office-loesung.de/ftopic59453_0_0_asc.php

habe ich ein paar Dinge dazu gelesen. Aber verstehe nicht wie ich das in meine Projekt mit einbinden soll.

Ich habe einen Button in jeder Zeile eines Endlosformulars, dieser ist mit einem Code verbunden.

Bisher musste ich für jede Zeile diesen Button klicken damit einzeln für jede zeile der Code ausgeführt wird.
Es handelt sich um eine IP Liste... Jede IP hat einen Button "Ping" mit je Variablen die auf das jeweilige Feld IP verweisen.


Wie kann ich es anstellen das alle, ich sag mal "Buttons" hintereinander gedrückt werden... bzw. der Button Code je Zeile 1mal ausgeführt wird? (Hintereinander)

Habe gelesen das es mit dem im Link beschriebenen verfahren möglich sien soll.. habe nur leider kein verständnis dafür :/

Über Anregungen/Hilfe wär ich sehr Dankbar.
gruß Cyberkey



Im Anhang der Code und Bild:

01.
Private Sub IPall_Click() 
02.
Dim strTarget, strPingResults, objShell, objExec 
03.
On Error Resume Next 
04.
strTarget = Me.IPall 'IP address or hostname 
05.
Set objShell = CreateObject("WScript.Shell") 
06.
Set objExec = objShell.Exec("ping -n 1 -w 5 " & strTarget) 
07.
strPingResults = LCase(objExec.StdOut.ReadAll) 
08.
If InStr(strPingResults, "Antwort von") > 0 Then 
09.
    'MsgBox ("Geht") 
10.
    'MsgBox "# " & strPingResults & " #", vbCritical, "Ergebnis" 
11.
    'MsgBox "Ergebnis: " & strPingResults 
12.
 
13.
    DoCmd.SetWarnings False 
14.
    DoCmd.RunSQL "UPDATE Ip_adressen SET Status=1 WHERE IPall='" & strTarget & "'" 
15.
    Me.Refresh 
16.
Else 
17.
    'MsgBox ("Geht nicht") 
18.
    DoCmd.SetWarnings False 
19.
    DoCmd.RunSQL "UPDATE Ip_adressen SET Status=0 WHERE IPall='" & strTarget & "'" 
20.
    Me.Refresh 
21.
End If 
22.
DoCmd.SetWarnings True 
23.
Me!Wake.SetFocus 
24.
End Sub
a1ef32c5170f85a8b3c96d93455c8f5e - Klicke auf das Bild, um es zu vergrößern
Mitglied: 76109
31.03.2010 um 15:31 Uhr
Hallo Cyberkey!

Sinngemäß das Ganze in etwa so:
01.
Option Compare Text 
02.
 
03.
Private Sub Button_Click() 
04.
    Dim RS As Object 
05.
     
06.
    Set RS = Application.CurrentDb.OpenRecordset("Select * From [Ip_adressen]") 
07.
     
08.
    With RS 
09.
        Do Until .EOF 
10.
            If Not IsNull(.Fields("IPall")) Then 
11.
                .Edit 
12.
                .Fields("Status") = GetPingStatus(.Fields("IPall").Value) 
13.
                .Update 
14.
            End If 
15.
           .MoveNext 
16.
        Loop 
17.
    End With 
18.
     
19.
    Set RS = Nothing 
20.
 
21.
   'Me.Refresh  
22.
End Sub 
23.
 
24.
Private Function GetPingStatus(ByRef IP) As Long 
25.
    Dim objShell As Object, objExec As Object, Result As String 
26.
     
27.
    On Error Resume Next 
28.
     
29.
    Set objShell = CreateObject("WScript.Shell") 
30.
    Set objExec = objShell.Exec("ping -n 1 -w 5 " & IP) 
31.
     
32.
    Do Until objExec.Status:  Loop  'Warten 
33.
    
34.
    Result = objExec.StdOut.ReadAll 
35.
     
36.
    If InStr(Result, "Antwort von") > 0 Then GetPingStatus = 1 
37.
End Function
Gruß Dieter

[edit] Codezeile 32 hinzugefügt, warten bis Ping ausgeführt wurde [/edit]
Bitte warten ..
Mitglied: Cyberkey
01.04.2010 um 09:12 Uhr
Wunderbar !! ^^
Danke Dieter !
läuft 1a ;)
Bitte warten ..
Mitglied: 76109
01.04.2010 um 09:16 Uhr
Hallo Cyberkey!

Zitat von Cyberkey:
Wunderbar !! ^^
Danke Dieter !
läuft 1a ;)
Prima! Hast Du die Änderung in Codezeile 32 auch schon mit übernommen?

Gruß Dieter
Bitte warten ..
Mitglied: 76109
02.04.2010 um 09:48 Uhr
Hallo Cyberkey!

Im Gegensatz zu VBA-Shell gibt WScript-Shell ja einen Fehlercode zurück, wodurch sich das Ganze etwas optimieren ließe und die DOS-Fenster auch wegfallen.
01.
Private Const PingCmd = "ping -n 1 -w 5 " 
02.
 
03.
Private Sub Button_Click() 
04.
    Dim RS As Object, WshShell As Object 
05.
     
06.
    Set WshShell = CreateObject("WScript.Shell") 
07.
 
08.
    Set RS = Application.CurrentDb.OpenRecordset("Select * From [Ip_adressen]") 
09.
     
10.
    With RS 
11.
        Do Until .EOF 
12.
            If Not IsNull(.Fields("IPall")) Then 
13.
                .Edit 
14.
                .Fields("Status") = WshShell.Run(PingCmd & .Fields("IPall").Value, 0, True) Xor 1 
15.
                .Update 
16.
            End If 
17.
           .MoveNext 
18.
        Loop 
19.
    End With 
20.
     
21.
    Set RS = Nothing:  Set WshShell = Nothing 
22.
End Sub
Wobei sich der Rückgabewert 0=True und 1=False durch ein XOR in 1=True und 0=False umkehren läßt

Gruß Dieter
Bitte warten ..
Mitglied: Cyberkey
02.04.2010 um 17:06 Uhr
Hallo Dieter,
das stimmt!
Die Dos Fenster waren wirklich eine sehr unschöne Lösung!

Der Code sieht etwas kompliziert aus @ VBS CODE .. hab ich so nochnie gemacht.

Aber es ist eine gute Lösung!

Danke für die fleißige extra Arbeit^^
gruß Cyberkey

Werde das so bald wie möglich ins Projekt einfügen.
Bitte warten ..
Mitglied: Cyberkey
06.04.2010 um 11:53 Uhr
Hallo Dieter,
ich habe noch ein Problem erkannt.
Es wird nicht nach jeder Zeile aktualisiert sondern erst nach dem "Job". vll. bischen buggy.
Desweiteren sieht man nur unten "Berechnung läuft" das etwas passiert.. Ungedultige Nutzer könnten so X mal auf den Button klicken.
Werde den beim Job wohl Deaktivieren müssen.




Gruß Cyberkey

EDIT: das mit dem Button ist gelöst.. blos das ".Update" funktioniert nicht so richtig
Bitte warten ..
Mitglied: 76109
06.04.2010 um 15:19 Uhr
Hallo Cyberkey!

Zitat von Cyberkey:
EDIT: das mit dem Button ist gelöst.. blos das ".Update" funktioniert nicht so richtig
Das Update sollte schon funktionieren. Ansonsten fällt mir leider nichts dazu ein
Eventuell das Me.Refesh irgendwie mit einfügen?

Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst VBA Excel Recordset - Abfrage auf SQL-Server (4)

Frage von Aximand zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...