Listenverarbeitung

  • Hi Leute,

    mein Chef hat langsam einen an der Waffel, können Sie mal schnell die Liste bearbeiten, na klar.

    "Liste öffne, vom Stuhl Fall" 1000 Datensätzer verbessern ohne SQL zugang nur mit nem Webinterface ARG:

    Soviel zum Thema also ich hab ne Excel - Liste vor mir mit Datensätzen:

    121
    122
    123
    124
    125
    126

    wie bekomme ich das hin das Autoit die nacheinander rauskopiert.

    Grüße

    Einmal editiert, zuletzt von 3l1te (4. November 2010 um 10:28)

  • Sind die Datensätze nur untereinander stehende Zahlen? Und wohin sollen sie denn kopiert werden?

  • Also hab das jetzt schonmal soweit hinbekommen wie ich es brauche:

    könnte da mal einer drüberschauen bin mir nicht ganz sicher es soll immer eine Arraystelle nach der anderen abgearbeitet werden bis keine mehr da ist.

  • Wait gibt es garnicht, wenn dann Sleep. Und alles mit MouseClicks zumachen ist ziemlich unsinnig. Sag mal genau was du machen musst. Wenn es um Excel geht, da gibts genug Funktionen.

  • Zuerst mal... wenn du eine Pause machen willst solltest du Sleep() benutzen, wait kennt autoit nicht^^
    //edit: schon wieder war m-obi schneller ... ^^


    Wenn du die Array bilfen willst, würde ich den Text in Strings einteilen und daraus die Array bestimmen. Und das mit Mausklick, wie schon gesagt, ist unsinn.
    Wenn du nur das auslesen willst was hinter den Zahlen steht und das in eine Array abgespeichert werden soll, solltest du _stringbetween benutzen, wenn dahinter noch was stehen sollte also die zahl als anfang und das am Ende als Ende.
    Ich kenn mich leider noch nicht so gut mit den String befehlen aus, es gibt bestimmt einen Passenderen.

  • Danke für die schnelle Antwort ^^ aus Excel bin ich schon raus, sry hatte ich vergessen zu sagen. Alle daten die ich brauche sind nun im Array durch die xxxx gekenzeichnet. Ich muss die daten ausbessern bzw die Datumer (datümer) WTF. anpassen in einem Programm leider hab ich keine Datenbankzugriff. Die MouseClicks passen so wie sie sind ^^ es geht nur darum ob ich mit Send auch die daten die in der Variable gespeichert sind auch dann in das Programmschreiben, bzw das Array durchläuft.

  • Ist der Plural nicht Daten?^^

    Jetzt mal so aus dem Kopf denke ich du meinst dashier:

    [autoit]


    For $i = 0 to Ubound ($deinearray) -1
    Send ($deinearray[$i])
    Next

    [/autoit]


    UNGETESTET^^

  • Ok dank dir soweit geht jetzt alles bis auf einen Fehler bei der Ausführung:

    Autoit Error

    Line -1:

    Error: Error parsing function call.

    [autoit]


    #include <Array.au3>

    Global $ArrayAlles[173] = ["1", "2", "3"]
    'das dann 174 mal mit &_ umgebrochen weil er sonnst beim Compilen spinnt, es sind keine einfachen zahlen sondern Ketten aus Zahlen und Buchstaben wie etwa: 1740WB73178071106145739
    For $i = 0 To UBound($ArrayAlles) - 1
    Send ($ArrayAlles[$i])
    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    Einmal editiert, zuletzt von 3l1te (4. November 2010 um 08:58)

  • du kannst nicht einer Array Zelle 3 verschiedene Werte auf einmal zuweißen. entweder:

    [autoit]

    Global $ArrayAlles[173]
    $ArrayAlles[0] = 1
    $ArrayAlles[1] = 2
    $ArrayAlles[2] = 3

    [/autoit]


    oder

    [autoit]

    Global $ArrayAlles[173]
    $ArrayAlles[0] = 123

    [/autoit]


    oder

    [autoit]

    Global $ArrayAlles[173] = ["1", "2", "3"]

    [/autoit]

    Edit: jetzt hastes ja schon selbst gesehen :P

  • Jup hab ich im Autoit Wiki gesehen hab hier nur die doofe Portabelversion deswegen hab ich den Syntax übersehen.

    Jetzt kommt

    Autoit Error

    Line -1:

    Error: Error parsing function call.

  • ich gehe jetzt mal davon aus, dass du das hier nicht in deinem Code als Kommentar hast, oder?

    [autoit]

    'das dann 174 mal mit &_ umgebrochen weil er sonnst beim Compilen spinnt, es sind keine einfachen zahlen sondern Ketten aus Zahlen und Buchstaben wie etwa: 1740WB73178071106145739

    [/autoit]
  • Richtig warum sollte ich meine paar Zeilen kommentieren, Autoit war ja glaubich zum Kommentieren ";" oder?

  • So kann geclosed werden hab die Lösung ^^, das Array war zu voll, mit 4002 Zeichen kann ich das auch irgendwie nachvollziehen das Autoit da streickt.

    Grüße

  • Doch das schon ich hab es wie folgt gelöst:

    [autoit]


    ;Autoit V3 Protabel Vorhaben Auftragseingangsdatum hochsetzen.
    #include <Array.au3>
    Dim $i1 = "0"
    Dim $i2 = "0"
    Dim $i3 = "0"
    Dim $i4 = "0"
    Dim $i5 = "0"
    Dim $i6 = "0"
    Dim $i7 = "0"
    Dim $i8 = "0"
    Dim $1 = "25.11.2010"
    Dim $2 = "02.12.2010"
    Global $Array1[10] = ["]
    Global $Array2[10] = ["]
    Global $Array3[10] = ["]
    Global $Array4[10] = ["]
    Global $Array5[10] = ["]
    Global $Array6[10] = ["]
    Global $Array7[10] = ["]
    Global $Array8[11] = ["]

    msgbox(0, "Auf ein neues", "und los gehts")

    [/autoit][autoit][/autoit][autoit]

    Sleep(10000) ;Fensteranwahl

    For $i1 = 0 To UBound($Array1) - 1 ;1
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array1[$i1]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i2 = 0 To UBound($Array2) - 1 ;2
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array2[$i2]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i3 = 0 To UBound($Array3) - 1 ;3
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array3[$i3]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i4 = 0 To UBound($Array4) - 1 ;4
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array4[$i4]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i5 = 0 To UBound($Array5) - 1 ;5
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array5[$i5]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i6 = 0 To UBound($Array6) - 1 ;6
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array6[$i6]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i7 = 0 To UBound($Array7) - 1 ;3
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array7[$i7]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next

    For $i8 = 0 To UBound($Array8) - 1 ;4
    MouseClick ("left", 320, 303, 1) ;Vorhabennummer
    Sleep (2500)
    Send ($Array8[$i8]) ;Vorhabennummer eingeben aus Array
    Sleep (2500)
    MouseClick ("left", 97, 254, 1) ;Suche Starten
    Sleep (5000)
    MouseClick ("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep (4500)
    Send ($1) ;Datum für Auftragseingang Hochsetzen
    Sleep (2500)
    Mouseclick("left", 948,596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    Mouseclick("left", 126,251, 1) ;auf ein neues
    Sleep(2500)
    Next


    msgbox(0, "Fertig", "Fertig mit den restlichen Datensätzen ^^")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    Ist zwar nicht schön gelöst, man hätte es mit Func machen können aber da hatte ich keine lust zu

  • Du brauchst aber nicht die Zählvariable von der For-Schleife ($i...) vorher deklarieren, die wird ja automatisch innerhalb der Schleife deklariert. Und du brauchst sie nicht hochzählen ($i1, $i2, $i3, ...), du kannst immer $i verwenden. Und wenn du ein Array deklarierst, brauchst du nicht die Werte hinschreiben wenn du keine hast., also das = ["] kannste weglassen, zumal das sowieso falsch ist, da müsste es eigentlich einen Error geben.

    Einmal editiert, zuletzt von m-obi (4. November 2010 um 13:08)

  • Schau mal ob das funzt.

    Spoiler anzeigen
    [autoit]

    ;Autoit V3 Protabel Vorhaben Auftragseingangsdatum hochsetzen.
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $1 = "25.11.2010"
    Global $2 = "02.12.2010"
    Global $Array1[10], $Array2[10], $Array3[10], $Array4[10], $Array5[10], $Array6[10], $Array7[10], $Array8[11], $aTemp

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Auf ein neues", "und los gehts")

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10000) ;Fensteranwahl

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To 8
    For $k = 0 To UBound(Eval("Array" & $i)) - 1 ;1
    $aTemp = Eval("Array" & $i)
    MouseClick("left", 320, 303, 1) ;Vorhabennummer
    Sleep(2500)
    Send($aTemp[$k]) ;Vorhabennummer eingeben aus Array
    Sleep(2500)
    MouseClick("left", 97, 254, 1) ;Suche Starten
    Sleep(5000)
    MouseClick("left", 955, 554, 2) ;Auftragseingang auswählen
    Sleep(4500)
    Send($1) ;Datum für Auftragseingang Hochsetzen
    Sleep(2500)
    MouseClick("left", 948, 596, 2) ;Abnahmedatum
    Sleep(2500)
    Send($2) ;Annahmedatum Hochsetzen
    Sleep(2500)
    MouseClick("left", 126, 251, 1) ;auf ein neues
    Sleep(2500)
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "Fertig", "Fertig mit den restlichen Datensätzen ^^")

    [/autoit]