1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. lloid

Beiträge von lloid

  • delete query funktioniert in der workbench, aber nicht in Autoit

    • lloid
    • 14. April 2018 um 17:02

    alpines
    Yjuq

    Juhu, es funktioniert!!

    Allerdings lag es gar nicht an der Formatierung des Datums. Vielmehr waren es die Kombinationen von Gänsefüßchen :Face:
    Hier also die funktionierende Version:

    $query = "DELETE FROM `" & $MySQLDbName & "`.`" & $MySQLTimeTable & "` WHERE `" & $MySQLTableUser & "`='" & $ListViewArr[$ArrLine][1] & _ "' and`" & $MySQLTableTimeIndex & "`='" & $ListViewArr[$ArrLine][0] & "'"

    Vielen Dank euch beiden für's "Miträtseln" :theke:

  • delete query funktioniert in der workbench, aber nicht in Autoit

    • lloid
    • 14. April 2018 um 16:33

    Yjuq

    Zitat von Yjuq

    den Datentyp in der Datenbank ja mal nach DATETIME ändern.

    Das geht leider nicht, da die Option "CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP" gesetzt ist...

    Den Tipp mit den Ticks habe ich nicht ganz verstanden.. Gibt es eine Funktion dafür?

    Ach ja.. die DELETE Funktion lief bereits, aber mit der UDF mit ODBC Connector. Da diese aber kein SSL unterstützt, habe ich umgeschwenkt..

  • delete query funktioniert in der workbench, aber nicht in Autoit

    • lloid
    • 14. April 2018 um 15:29

    Hier nochmal die Konsolenausgabe des query:


    >Command executed: "DELETE FROM arbeitszeit WHERE Benutzer = 'Lloid' AND ZeitIndex = '2018-04-14 12:53:40' LIMIT 1"

    error: [failed] _MySQL_Real_Query Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"DELETE FROM stundenplan WHERE Benutzer = 'Lloid' AND ZeitIndex = '2018-04-14' at line 1

  • delete query funktioniert in der workbench, aber nicht in Autoit

    • lloid
    • 14. April 2018 um 15:26

    alpines

    ja, der Originalcode sieht so aus:

    Code
    $query = '"DELETE FROM ' & $MySQLTimeTable & ' WHERE ' & $MySQLTableUser & " = '" & $ListViewArr[$ArrLine][1] & _
                        "' AND " & $MySQLTableTimeIndex & " = '" & $ListViewArr[$ArrLine][0] & "'" & _
                        ' LIMIT 1"'

    Die Fehlermeldung hängt sich immer an der Zeitangabe des TimeStamps auf.. Egal wie ich den String formatiere.

    Probiert habe ich folgende Varianten:
    'YYYY-MM-DD', 'YYYY/MM/DD', 'DD.MM.YYYY', 'YYYY/MM/DD hh:mm:ss', 'YYYY-MM-DD hh:mm:ss', 'YYYYMMDDhhmmss', 'YYYY-MM-DDThh:mm:ss'

  • delete query funktioniert in der workbench, aber nicht in Autoit

    • lloid
    • 14. April 2018 um 15:18

    Hallo liebes Forum,

    Das Anlegen und Abrufen von Einträgen klappt wunderbar, das Ändern und Löschen allerdings nicht.

    Der folgende Befehl funktioniert über die MySQL Workbench wunderbar:

    DELETE FROM `zeiterfassung`.`stundenplan` WHERE `Benutzer`='Lloid' and`ZeitIndex`='2018-04-14 12:53:40' LIMIT 1;

    Allerdings bekomme ich den Befehl über Autoit nicht abgesetzt.

    Ich benutze die UDF aus fogendem Thread: mysql-udfs-without-odbc

    C
    #include-once
    #include 'mysql.au3'
    
    _MySQL_InitLibrary($MySqlDll)
    $MysqlConn = _MySQL_Init()
    _MySQL_SSL_Set($MySqlConn, $MySqlCaKey, $MySqlCaCert, '', '', '')
    _MySQL_Real_Connect($MySqlConn, $MySqlDynDNS, $MySqlRootUserName, $MySqlRootPass, $MySqlDbName, $MySqlPort)
    $MySQLping = _MySQL_Ping($MysqlConn)
    If $MySQLping = 1 Or $MySQLping = 3 Then
        TrayTip('Error', 'Verbindung zur Datenbank konnte nicht hergestellt werden', 10, 3)
        Sleep(10000)
        Exit
    EndIf
    
    $query = "DELETE FROM `zeiterfassung`.`stundenplan` WHERE `Benutzer`='Lloid' and`ZeitIndex`='2018-04-14 12:53:40' LIMIT 1"
    _MySQL_Real_Query($MySqlConn,$query)
    If _MySQL_Affected_Rows($MySqlConn) <> 1 Then
        MsgBox (16, 'Fehler', 'Der Datenbankeintrag konnte nicht gelöscht werden: ' & _MySQL_Error($MySqlConn))
    EndIf
    Alles anzeigen

    Ich bekomme folgende Fehlermeldung:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"DELETE FROM `zeiterfassung`.`stundenplan` WHERE `Benutzer`='Lloid' and`ZeitIndex`='2018-04-14' at line 1

    Das Feld ZeitIndex ist vom Datentyp TimeStamp. Ich habe auch schon verschiedene Datumsformatierungen ausprobiert, immer mit dem gleichen Ergebnis..

    Kann mir bitte jemand erklären, wie ich das absetzen soll, damit es greift?
    Vielen Dank

  • SpeedTest

    • lloid
    • 1. März 2018 um 23:36

    alpines

    Ah. daran habe ich garnicht gedacht..
    OK..
    Ist gekauft :part:

    Bleibt der Upload. Da setzte ich mich jetzt mal ran.
    alpines, Danke für Deine Hilfe!! Ich wertschätze das!

    Sobald das Script vollendet ist, poste ich das Ergebnis.
    Viele Grüße

  • SpeedTest

    • lloid
    • 1. März 2018 um 23:25

    alpines

    Ja, das habe ich auch gedacht. Habe daher gerade mal den Praxistest gemacht.
    $ALTaverage_download_speed ist der über die Zeitmessung ermittelte Wert
    $average_download_speed kommt über die Abfrage der Netzwerkkarte

    [Blockierte Grafik: https://ibin.co/3tQBnUxSHsqX]

    Die Differenz ist mir ehrlichgesagt etwas hoch....
    Auf der anderen Seite dient das Script zur Aufdeckung von Instabilitäten. Daher wäre der Wert, wenn auch ungenau, dennoch aussagekräftig.

    Was hältst Du davon?

    #Edit
    Ich lade die 10MB datei herunter. Da das Messintervall auf 1 Minute angelegt ist, möchte ich den Traffic nicht überstrapazieren.
    Die Downloadrate ist eh sehr gering, die Messung soll den Zugang daher nur kurz belasten..

  • SpeedTest

    • lloid
    • 1. März 2018 um 22:59

    Hehe, ich suche schonmal meine Stoppuhr :)

    *Ironie aus*

    Prinzipiell ist das ja recht einfach umzusetzen.. Zeitpunkt merken, Download starten, nach Beenden die Zeitdifferenz loggen und in kbps umrechnen. Fraglich, dass ich so einen adäquaten, präzisen Messwert bekomme. Was ist Deine Meinung?

  • SpeedTest

    • lloid
    • 1. März 2018 um 22:30

    alpines

    Danke für den Tip, da hatte ich auch schon drüber nachgedacht. Allerdings müsste ich bei jedem neuen System erst den Portforward machen. Da viele Router UPnP aus Sicherheitsgründen nicht aktiviert haben, wäre das jedesmal manuell zu konfigurieren.. Da hab ich keine Lust drauf.

    Ich schwanke zwischen zwei Möglichkeiten: Einerseits habe ich die Möglichkeit einen ftp-Server an einer Leitung mit fester IP einzurichten, andererseits habe ich die Möglichkeit, den ftp-Server meines Providers / Hosting-Anbieters für den Upload einer 1MB großen Datei zu nutzen, wobei ich mich erst schlau machen muss, ob es bei diesem eine Drosselung gibt oder nicht.

    Leider gibt es ein weiteres Problem, bei dem ich einen Tip brauche:
    Die Messung der Download-Rate mit dem in Post #1 gezeigten Code funktioniert nicht bei allen Netzwerkkarten. Vor allem bei Modellen aus dem Hause Intel habe ich Probleme. Es wird trotz erfolgreichem Download der TestDatei ein Wert von 0 kbitps ausgegeben. Daher die Frage:

    Gibt es noch eine andere Möglichkeit, die Downloadgeschwindigkeit zu erfassen, ausser der Abfrage der Netzwerkkarte?

  • SpeedTest

    • lloid
    • 1. März 2018 um 00:57

    alpines

    Nein, alles in DE. Probier ich morgen.. Mal sehen, wie es mit Beschränkungen aussieht.

    Danke für Deine Hilfe, ich berichte, ob es funktioniert. Sofern mir ein "neutrales" UploadZiel unterkommt, verwende ich es und uploade ich den den vollständigen Code in den nächsten Tagen für die Community.
    VG lloid

  • SpeedTest

    • lloid
    • 28. Februar 2018 um 23:46

    alpines

    Wenn ich einen FTP-Server aufsetzte an einer Leitung die einen 50MBitps Download hat und dann eine Datei von extern dahin uploade von einer Stelle aus, die einen Upload weit unterhalb der 50MBitps hat, geschieht das dann mit der vollen mir von dort zur Verfügung stehenden Bandbreite? Was denkst Du?

  • SpeedTest

    • lloid
    • 28. Februar 2018 um 23:22
    Zitat von alpines

    So nebenbei: Warum willst du denn ein Speedtestprogramm schreiben? Es gibt doch genug Seiten im Netz die das anbieten (inkl. Server).

    Naja, es geht dabei um einen instabilen Internetzugang. Ich möchte gerne ping-Zeiten, Upload- sowie Download-Raten loggen, um Störungen zu belegen.
    Ping und Download warenrecht unkompliziert umzusetzen, aber die Upload-Raten zu erfassen war gar nicht so einfach.
    google-Ergebnisse wie https://www.autoitscript.com/forum/topic/149083-netinfo-udf/ waren auch nicht besonders hilfreich. Warum auch immer, unterschieden sich die Ergebnisse der Upload-Messung deutlich von denen der Speedtest-Seiten, weshalb ich diese Methode nicht verwenden möchte.

    Gibt es eine Möglichkeit, via AutoIt direkt auf WebDAV Schnittstellen zu schreiben?

  • SpeedTest

    • lloid
    • 28. Februar 2018 um 23:04

    Hallo alpines, Danke für Deine schnelle Antwort. Die Lichtgeschwindigkeit ist ja ein Witz dagegen!! :)

    Zuerst hatte ich gedacht, eine Seite wie http://www.fotos-hochladen.net/ zu nehmen und dort einfach irgendein Foto abzulegen. Allerdings weiss ich nicht, wie man das umsetzt. Die filehoster, die ich kenne, sind eher allergisch auf Ablagen per Script. Hast Du einen Vorschlag?

    Zitat von alpines

    Ansonsten kannst du testweise mal versuchen große Seiten abzurufen und dann die Geschwindigkeit zu mitteln.

    Diese Aussage verstehe ich nicht.. Wäre das dann nicht ein Download aus meiner Sicht??

  • SpeedTest

    • lloid
    • 28. Februar 2018 um 22:53

    Hallo zusammen :)
    Ich möchte einen Internet SpeedTest machen und habe den DownloadSpeedTest schon umgesetzt. Allerdings fehlt mir noch eine Idee für den Upload-Test. Hier ist der bisherige Code als Minimal-Beispiel:

    C
    #include <InetConstants.au3>
    #include <File.au3>
    
    $threshhold_download = 450
    $threshhold_upload = 30
    $RemoteTestFile = 'http://ipv4.download.thinkbroadband.com/10MB.zip'
    $TempFile = _TempFile()
    $average_download_speed = 0
    $average_upload_speed = 0
    $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
    $oSelect_active_network_cards = $objWMIService.ExecQuery('SELECT ProductName FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2 OR NetConnectionStatus = 9', "WQL")
    For $oSelect_active_network_card In $oSelect_active_network_cards
        $active_network_card = stringright($oSelect_active_network_card.ProductName, 10)
    Next
    
    $hDownload = InetGet ($RemoteTestFile, $TempFile, $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
    Do
        CaptureDownloadSpeed ()
        sleep(1)
    Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
    
    MsgBox (0, '', 'Average download speed = ' & $average_download_speed * 8 & " kbit/s")
    
    Func CaptureDownloadSpeed ()
        $oNetwork_cards = $objWMIService.ExecQuery("SELECT BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface WHERE name LIKE '%" & $active_network_card & "%'", "WQL")
        For $oNetwork_card In $oNetwork_cards
            $current_download_speed = Round($oNetwork_card.BytesReceivedPerSec / 1024)
            If $average_download_speed = 0 Then $average_download_speed = $current_download_speed
            If $current_download_speed > $threshhold_download Then $average_download_speed = Round(($current_download_speed + $average_download_speed) / 2)
        Next
    EndFunc
    
    Func CaptureUploadSpeed ()
        $oNetwork_cards = $objWMIService.ExecQuery("SELECT BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface WHERE name LIKE '%" & $active_network_card & "%'", "WQL")
        For $oNetwork_card In $oNetwork_cards
            $current_upload_speed = Round($oNetwork_card.BytesSentPerSec / 1024)
            If $average_upload_speed = 0 Then $average_upload_speed = $current_upload_speed
            If $current_upload_speed > $threshhold_upload Then $average_upload_speed = Round(($current_upload_speed + $average_upload_speed) / 2)
        Next
    EndFunc
    Alles anzeigen


    Meine Frage ist: Wie mache ich denn den eigentlichen Upload? Wohin lade ich denn hoch? :/ Schön wäre die Möglichkeit, an einen "neutralen" Ort eine Datei von 10MB hochzuladen. Bin für Ideen dankbar!

    Viele Grüße

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 15:23
    Zitat von timee000

    Einfach mal #AutoIt3Wrapper_UseX64=yin die Kopfzeile packen.

    Jaa! Danke timee000

    Hatte Deinen Post gerade erst gesehen. So funktioniert es bei mir auch. Super! Vielen Dank!

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 15:19

    Workaround:

    Anstatt das AutoIt-Script zu starten und mit diesem dann das "Windows-Fax und -Scan" zu öffnen, starte ich via Batch (2-Zeiler) zuerst das "Windows-Fax und -Scan" und danach auch mein kompiliertes Script.

    Trotzdem würde mich brennend interessieren, ob es irgendwie möglich ist, die WFS.exe direkt über AutoIt auszuführen.

    Vielen Dank alpines und BugFix für eure Hilfe :thumbup:

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 14:24

    Hallo BugFix

    Danke für Deine Erklärung.
    Leider verstehe ich trotzdem nicht, was ich machen muss, um das Scan-Fenster aufzurufen.

    Die 3 Ordner aus Deinem Post #16 habe ich auch, es sind auch WFS.exe Dateien darin enthalten. Leider lässt sich Das Scan-Fenster nicht mit einem Doppelklick auf diese Dateien öffnen.

    Hast Du einen Tipp für mich?

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 13:46

    Ich suche mal meinen KNOPPIX Stick...

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 13:39

    Mache ich doch (siehe Code Zeile 9 in Post #11)
    ShellExecute führt zur gleichen Fehlermeldung...

  • Windows-Fax und -Scan aufrufen

    • lloid
    • 27. Februar 2018 um 13:26

    Danke alpines! Gute Idee


    Batchfile anlegen mit folgendem Inhalt:
    start C:\Windows\System32\WFS.exe

    Doppelklick funktioniert

    Dann über AutoIt:

    Code
    $WFSBatch = 'start C:\Windows\System32\WFS.exe'
    _BatchRun ($WFSBatch)
    
    Func _BatchRun ($Batch)
        Local $BRIntErr = 0
        Local $Path = @ScriptDir & '\WFS.bat'
        If FileExists ($Path) Then FileDelete ($Path)
        If Not FileWrite ($Path, $Batch) Then Return SetError (1, '', 0)
        $PID = Run ($Path,"",@SW_HIDE)
        If $PID <> 0 Then
            Return SetError(0, 0, $PID)
        Else
            $BRIntErr = @error
            Return SetError (2, $BRIntErr, 0)
        EndIf
    EndFunc
    Alles anzeigen

    Bekomme ich folgende Fehlermeldung:

    [Blockierte Grafik: https://ibin.co/3t9EjyLn85wm]

    Ein Doppelklick auf die erzeugte Batchdatei öffnet das Scan-Fenster allerdings zuverlässig!

    Es wird irgendwie kurios ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™