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

Beiträge von autoiter

  • Alinas_SQLite_BuchVw

    • autoiter
    • 7. November 2018 um 09:42

    Hallo Code-Jack

    Zitat von Code-Jack

    Wie gesagt: Der (von mir so betrachtete) Bug machte sich bisher nie bemerkbar. Vermutlich weil die als Integer erzeugte ID von SQLite als Zahl verdaut wurde und daher keine Einfassung in Hochkommas benötigte.

    Ich hingegen, verwende nun neuerdings keinen Integer mehr als ID, sondern einen String. Und dann klemmt es, ohne die Einfassung.

    Daher ist es kein Bug, sondern war so wie es angelegt war völlig korrekt. Wenn man daran Änderungen vornimmt, muss man eben wissen, was man warum ändern muss. Du machst es nun natürlich besser. Bulletproof finde ich es aber auch noch nicht. Du solltest am besten allgemein die Funktion _SQLite_Escape benutzen (dann sparst du es dir auch eventuelle Steuerzeichen im Text escapen zu müssen).

  • Datenbank dezentral erweitern [gelöst]

    • autoiter
    • 7. November 2018 um 09:30

    Hallo Code-Jack

    Ich wollte doch nur den Unterschied zwischen Autoincrement und RowID deutlich machen. (imdb war doch ein hätte-wenn-wäre-Beispiel ;) ).

  • Datenbank dezentral erweitern [gelöst]

    • autoiter
    • 7. November 2018 um 00:58

    Ja, das ist eine schöne Sache.

    RowIDs sind immer eindeutig aber dennoch veränderlich. Wenn es also nur um Eindeutigkeit geht und nicht um dauerhaft bestehenden Werte - wie das meistens auch der Fall ist - sind sie ausreichend. Das ist jedoch ein Punkt, den man im Blick behalten muss. Manchmal will man das eben doch nicht. (Wäre doof, wenn das bei imdb eine RowID die Film-ID wäre und ein Film gelöscht würde und damit alle nachfolgenden IDs verschoben würden).

  • Datenbank dezentral erweitern [gelöst]

    • autoiter
    • 6. November 2018 um 18:24

    Hallo Code-Jack

    meine naiven Gedanken.

    -Ich kenne keine andere Möglichkeit als einen zentralen Server.

    -Ich würde die Daten in verschiedene Tabellen aufteilen. Lokal hätte jeder Tabellen für die vom Nutzer erstellten Daten und Tabellen für die "synchronisierten" Daten vom gemeinsamen Server. (Im Hintergrund. Mit der Anzeige der Daten hat das ja nichts zu tun).

    -Nach Export und Download der neuen Daten, können dann die User-Tabellen gelehrt werden.

    -Die Namens-ID würde ich von der Datensatz-ID getrennt halten.

    (Wahrscheinlich wäre es am besten, deine Clients würden immer sofort versuchen, alle noch nicht "synchroniesierten" Datensätze mit dem zentralen Server zu tauschen. Wenn er mal nicht erreichbar wäre, würde eben die Liste etwas wachsen. Keine Ahnung, ob das zu deinem Spendengedanken passt).

    -Du könntest die Adresse des zentralen Servers editierbar machen oder Domain Weiterleitung nutzen, um die Möglichkeit zu haben den zentralen Server schnell zu wechseln.

  • StdinWrite / -Read ohne Child Process möglich?

    • autoiter
    • 2. November 2018 um 13:27

    borsTiHD

    Lagere doch einfach die Arbeit mit dieser ominösen PythonApp.exe in ein anderes Skript / eine andere Anwendung aus. Wenn sie noch nicht gestartet ist, startest du sie aus deinem Hauptskript heraus. Ansonsten stellst du eben an diese Anwendung all deine Anfragen, die du allgemein bearbeitet haben möchtest.

  • Mit Uhrzeiten rechnen

    • autoiter
    • 2. November 2018 um 09:50

    Das aktuelle Datum kannst du etwas schneller mit StringRegExpReplace bearbeiten, wie die Hilfe zeigt:

    $nowDate_new = StringRegExpReplace(_NowDate(), '(\d{2}).(\d{2}).(\d{4})', ' $3/$2/$1 ')

  • Mit Uhrzeiten rechnen

    • autoiter
    • 2. November 2018 um 09:39

    Hallo Mikki

    schau dir doch einfach mal die Hilfe zu _DateDiff an. Da steht doch genau, wie die Parameter $sStartDate und $sEndDate auszusehen haben.

  • Alinas_SQLite_BuchVw

    • autoiter
    • 25. Oktober 2018 um 00:38

    Hallo Code-Jack

    Ich habe mir das Skript noch nicht angesehen. Allerdings scheint mir das auch keine Frage zu diesem Skript, sondern zu SQL bzw. SQLite zu sein.

    Zitat von Code-Jack

    Frage also: Wie kriege ich einen einzelnen Feldinhalt der Datenbank (definiert anhand der ID des in der ListView selektierten Datensatzes) ausgelesen, um ihn einer InputBox zuzuweisen?

    Lass uns behaupten, dass Feld würde ID heißen. Dann könnte der Befehl lauten: SELECT * FROM TABELLENNAME WHERE ID = Whatever

    Ich bin sicher, dein Problem ist gar nicht so groß- Schau dir einfach mal SQLite-Tutorials an.

  • Excel Datei auslesen und Daten kopieren.

    • autoiter
    • 24. Oktober 2018 um 17:21

    lsc

    Ja, du hast ein eindimensionales Array, weil du nur eine Spalte ausliest.

    Local $aResult = _Excel_RangeRead($oWorkbook, Default, $oWorkbook.ActiveSheet.Usedrange.Columns("A:A"), 2)

    Das hatte ich übersehen.

    Wenn du folgendes gemacht hättest, hättest du deine ganze Tabelle ausgelesen (davon bin ich ausgegangen).

    Local $aResult = _Excel_RangeRead($oWorkbook, Default, Default, 2)


    Zitat von lsc

    Das bedeutet das [$i] die Elemente so lange weiter nach unten führt bis keine mehr da sind bzw das letzte erreicht ist. Und [1] bedeutet in dem Falle das er immer den Wert aus der Spalte 1 nehmen soll richtig soweit ?

    Nein. Arrays sind nullbasiert (Also der erste Wert steht nicht in Feldnummer 1 sondern 0). Das Feld A1 aus Excel wäre bei einem zweidimensionalen Array $aResult das Element $aResult[0][0].

    Daher kommt auch der Fehler. Du versuchst Werte aus der Array(spalte) auszulesen, die es nicht gibt.

    Du kannst hier überall die zweite eckige Klammer löschen, da es ein eindimensionales Array ist. Also statt

    $aResult[$i][1] einfach $aResult[$i].

  • Excel Datei auslesen und Daten kopieren.

    • autoiter
    • 24. Oktober 2018 um 15:29

    Hallo lsc

    Das sind ja wirklich nur aneinandergefügte Beispiele. :D

    Funktioniert es denn? Siehst du am Ende ein Fenster, dass dir Die Inhalte deiner Excel-Datei anzeigt?

    Die Variable $aResult die du da hast, ist ein Array. Wenn du auf einzelne Werte zugreifen möchtest, musst du sie angeben, wie du sie da in dem Fenster siehst (Feld A1 wäre $aResult[0][0])

    Du kannst dieses Array in einer Schleife durchgehen. Schau dir dazu vielleicht auch noch die Hilfe an. Bsp. wenn die Nummern in der zweiten Spalte stehen:

    Code
    For $i = 0 To Ubound($aResult) - 1
        FileCopy($BilderPfadA & $aResult[$i][1] & ".png", $BilderPfadB & $aResult[$i][1] & ".png")
    Next
  • COM error 80020009

    • autoiter
    • 24. Oktober 2018 um 15:14

    Bitnugger

    Zitat von Bitnugger

    Ich denke, er möchte wissen, ob die Datei überschrieben wird (ja)

    Die Datei wird aber nicht gelöscht, oder?

    AutoIt
        If FileExists('api-response.xml') Then
            ConsoleWrite('! api-response.xml war bereits vorhanden' & @CRLF)
        Else
            If Not InetGet($sURL, 'api-response.xml', 1) Then Return False
            ConsoleWrite('! api-response.xml wurde soeben gespeichert' & @CRLF)
        EndIf
  • NTFS ACL Berechtigungen Anzeigen/Setzen

    • autoiter
    • 24. Oktober 2018 um 12:46

    Ganz ehrlich GerhardSchr Wenn du die Idee auch hattest, aber es anders haben möchtest, dann schreib das doch bitte direkt im Eingangspost.. ;)

  • NTFS ACL Berechtigungen Anzeigen/Setzen

    • autoiter
    • 24. Oktober 2018 um 12:37

    Hallo GerhardSchr

    Ich weiß nicht, wäre das etwas für dich?

    AutoIt
    #include <Array.au3>
    
    Local $sPath = @DesktopDir
    Local $sFile = StringTrimLeft($sPath, StringInStr($sPath, "\", 0, -1))
    ConsoleWrite($sFile & @CRLF)
    
    Local $sPSScript = "Get-Acl " & $sPath
    Local $iPid = Run("PowerShell.exe " & $sPSScript, @ScriptDir, @SW_HIDE, 2)
    ProcessWaitClose($iPid)
    Local $sRet = StdoutRead($iPid)
    ConsoleWrite($sRet & @CRLF)
    Local $aArray = StringSplit(StringRegExp($sRet, "(?s)Path    Owner   Access(.*?)" & $sFile, 3)[0], @CRLF, 1)
    _ArrayDisplay($aArray)
    Alles anzeigen

    Path, Owner und Access sind hier nicht weiter aufgedröselt. Aber ich kann das nicht elegant mit StringRegExp lösen und will mich hier nicht völlig entblößen.

  • COM error 80020009

    • autoiter
    • 24. Oktober 2018 um 11:28

    Hallo bigeasy76

    Nein, hier wird nichts überschrieben. Siehst du nicht, dass Bitnugger eine Prüfung eingebaut hat, ob die Datei bereits vorhanden ist, und sie nur lädt, wenn das nicht der Fall ist?

    (Wenn du keine Datei brauchst könntest du den ganzen Inetget und FileRead Block auch entfernen und Local $sXML = BinaryToString(InetRead($sURL, 1)) schreiben.

  • _Excel_RangeRead $vRange

    • autoiter
    • 22. Oktober 2018 um 17:58

    Hallo wuff100

    Prinzipiell kann die Zeile "A3" & ":" & "G" & $zeile funktionieren. Wenigstens, wenn du vorher alles richtig gemacht hast, um eine Range auszulesen und die Variable $zeile eine positive Ganzzahl enthält..

    Wenn du also ein Problem hast, hast du eine der Bedingungen nicht erfüllt.

    PS: Als Fortgeschrittener solltest du eigentlich unaufgefordert ein Minimalskript posten, das dein Problem veranschaulicht.

  • [GDI+] Bild aus anderem Bild zusammensetzen

    • autoiter
    • 20. Oktober 2018 um 14:26

    Ist zwar OT aber @Musashi 

    Auf chip.de findest du unter diesem "Installer" immer den irreführenden Punkt "manuelle Installation". Das ist dann das übliche Herunterladen. ;)

  • _FileListToArray unter Windows 10 1803

    • autoiter
    • 18. Oktober 2018 um 16:50

    Du kannst jedem einzelnen Array-Element einen Wert zuweisen, wie auch einer Variable.

    $aArray[0] = 15 schreibt den Wert 15 in das Array-Element mit dem Index 0.

  • SQL DELETE Befehl funktioniert nicht

    • autoiter
    • 17. Oktober 2018 um 14:47

    Das war ja eine sehr gute Frage von autoBert. :D

    Die SQLite-UDF mit allen Befehlen ist für SQLite-Datenbanken. Du kannst die UDF nicht auf MSSQL anwenden. Suche in deiner _sql.au3 nach der Funktion, mit der du allgemeine Queries absetzen kannst.

  • SQL DELETE Befehl funktioniert nicht

    • autoiter
    • 17. Oktober 2018 um 13:27

    Nein Kanashius

    der (Haupt-)Fehler liegt hier nicht im Befehl. (Auch wenn die Angabe der Datenbank in der Logik der UDF wegfallen würde (die ist ja der erste Parameter..). Das Problem ist wirklich, dass ValleAIT nie die Datenbank per SQlite3.dll geöffnet hat, sondern ADODB verwendet.

    Es ist wie autobert und ich geschrieben haben.


    @ValleAIT

    Zitat von ValleAIT

    Ich bin offen für bessere oder einfachere Vorschläge, da ich noch relativ am Anfang bin und ich natürlich hierbei dann ein Verbesserungspotential habe

    Benutzt du SciTE4AutoIt als IDE? Dann kannst du einfach den Textcursor auf das Wort _SQLite_Exec setzen (etwa in dem du es anklickst) und dann F1 drücken. Schon öffnet sich die Hilfe zur Funktion _SQLite_Exec. Andernfalls kannst du ihn dir ja auch manuell suchen. Zu jedem der _SQLite_*-Befehle findest du in der Hilfe auch Beispiele. Da siehst du, was du wie machen musst.

    Im Grunde ist es genau so kurz, wie das was du bisher machst:

    _SQLite_Startup

    _SQLite_Open

    _SQLite_Exec

    _SQLite_GetTable2d

    _SQLite_Close

    _SQLite_Shutdown

  • SQL DELETE Befehl funktioniert nicht

    • autoiter
    • 17. Oktober 2018 um 11:09

    Hallo @ValleAIT

    Du mischst hier verschiedenes. Ich kenne einerseits deine _sql.au3 nicht. Also kann ich dir jetzt auch nicht den passenden Befehl nennen..

    Damit verbindest du dich zur Datenbank und damit liest du auch aus. Löschen willst du jedoch mit einem Befehl aus der sqlite.au3.

    Allerdings kannst du nicht _SQLite_Exec nutzen ohne zuvor _SQLite_Startup zu benutzen. Damit will ich dich nicht motivieren, das auch noch einzufügen. Du solltest aufhören zu mischen. Wenn es um sqlite geht, dann nimm nur die Befehle aus der SQLite.au3.

    PS: Wenn du mal eine @error-Prüfung nach der _SQLite_Exec-Zeile einfügen würdest, würdest du auch einen Fehlerwert erhalten. Das sollte immer der erste Test sein ;)

    EDIT: Wobei es hier wohl einfacher ist, den äquivalenten Befehl zu _SQLite_Exec aus deiner _sql.au3 zu suchen und zu nutzen und stattdessen _SQLite rauszuschmeißen. Immerhin hast du ja schon alles andere damit umgesetzt.

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™