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

Beiträge von MadCatz

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. April 2014 um 15:12

    ich hab jetzt mal den Quelltext von gmmg mir zur hilfe genommen und mal versucht das ganze auf meine Datenbank anzuwenden.

    Dazu hab ich halt nur ein paar Dinge ausgetauscht:

    [autoit]

    $dbname = "C:\Users\michflos\Documents\AutoIt\USB-Station\USB-Sticks-DB - Kopie.accdb"
    $tblname = "Stickübersicht : Tabelle"
    $fldname01 = "ID"
    ;~ $format = "Text(50)"
    $fldname02 = "Stickgröße-Hardware"
    ;~ $format = "Text(50)"

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

    $query = "SELECT * FROM "& $tblname & " WHERE Stickgröße-Hardware = '2GB'"
    $strData1 = _ReadOneFld($query, $dbname, $fldname01)

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

    ConsoleWrite( $query & @crlf & $strData1)
    MsgBox(0,"",$query & @crlf & "ergebnis: " & $strData1)

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

    Func _ReadOneFld($_sql, $_dbname, $_field)

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

    Dim $_output
    $adoCon = ObjCreate("ADODB.Connection")
    $adoCon.Open("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & $dbname & ";")
    $adoRs = ObjCreate("ADODB.Recordset")
    $adoRs.CursorType = 1
    $adoRs.LockType = 3
    $adoRs.Open($_sql, $adoCon)

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

    With $adoRs
    If .RecordCount Then
    While Not .EOF
    $_output = $_output & .Fields($_field).Value & @CRLF
    .MoveNext
    WEnd
    EndIf
    EndWith
    $adoCon.Close
    Return $_output
    EndFunc ;==>_ReadOneFld

    [/autoit]


    leider hab ich nicht das gefühl, dass ich es richtig mache.

    Das ist übrigends das erste mal, dass ich etwas mit Datenbanken zutun habe, und habe in der Materie wirklich keinen Plan =(

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. April 2014 um 14:34

    :)) Also das funktioniert. Das würde heißen, dass ich das bestimmt noch in die UDF einsetzten muss oder?


    Aber leider funktioniert diese UDF ja nicht mit accdb =(

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. April 2014 um 14:20

    --> Access.au3 Error from function _AccessOpen (Access Object Creation Failed)

    dies steht bei mir, hesit es gibt probleme beim erstellen, warum? keine Ahnung.


    Aber wenn ich gmmg richtig verstanden habe, dann kann ich diese Methode sowieso nicht für accdb verwenden

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. April 2014 um 14:09

    Unglücklich getroffen sorry.

    Dateien

    Fehler Test.PNG 159,48 kB – 0 Downloads
  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. April 2014 um 13:51

    Hey gmmg =), also das Beispiel, was du angehängt hattest mit der Test.mdb und Example_Access.au3 funktioniert bei mir nicht wenn ich es aussführe.

    Ich erhalte hierbei nur Fehlermeldungen, dass die Datenbank nicht gefunden wurde (siehe Anhang)

    Dateien

    Fehler Test.PNG 205,03 kB – 0 Downloads
  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 24. April 2014 um 16:03

    Hallo Zusammen.

    Ich hab mich lange nicht mehr mehr gemeldet, da ich momentan ein anderes Projekt habe. Ich habe mich heute nochmal hier ran gesetzt und wollte mit Hilfe der von gmmg's geposteten UDF nochmal anfangen.

    Habe mir alles aus der UDF angesehen und verstehe natürlich nicht alles, aber egal.

    Naja jedenfalls habe ich das Gefühl, dass ich etwas Grundlegend falsch mache, bei meinen Tests eine ".mdb", als auch ein ".accdb" zu öffnen.

    In der UDF ist zum Besipiel dies zum öffnen einer Datenbank zufinden:

    [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _AccessOpen
    ; Description ...: Open Microsoft Office Access File
    ; Parameters ....: $s_FilePath - File path and name
    ; $Options - Sets various options for the database, as specified in Remarks
    ; True Opens the database in exclusive (exclusive: A type of access to data in a database that is shared over a network.
    ; When you open a database in exclusive mode, you prevent others from opening the database.) mode.
    ; False (Default) Opens the database in shared mode.
    ; $ReadOnly - True if you want to open the database with read-only access, or False (default) if you want to open the database with read/write access.
    ; $Connect - Specifies various connection information, including passwords.
    ; Return values .: On Success - Returns database object linked to the opened file
    ; On Failure - Returns 0 and sets @ERROR
    ; @ERROR - 0 ($_AccessStatus_Success) = No Error
    ; - 1 ($_AccessStatus_GeneralError) = General Error
    ; - 3 ($_AccessStatus_InvalidDataType) = Invalid Data Type
    ; - 4 ($_AccessStatus_InvalidObjectType) = Invalid Object Type
    ; Author ........: Ayman Henry
    ; ADO Command ...: expression.OpenDatabase(Name, Options, ReadOnly, Connect)
    ; ===============================================================================================================================
    Func _AccessOpen($s_FilePath = "", $Options = False, $ReadOnly = False, $Connect = ";pwd=")
    Local $o_object, $o_MDBObj

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

    If $s_FilePath = "" Then Return 0 ; There is currently no way of read non existing db.
    If FileExists($s_FilePath) = 0 Then Return 0

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

    Local $result, $f_mustUnlock = 0, $i_ErrorStatusCode = $_AccessStatus_Success

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

    ; Setup internal error handler to Trap COM errors, turn off error notification
    Local $status = __AccessInternalErrorHandlerRegister()
    If Not $status Then __AccessErrorNotify("Warning", "_AccessOpen", _
    "Cannot register internal error handler, cannot trap COM errors", _
    "Use _AccessErrorHandlerRegister() to register a user error handler")
    Local $f_NotifyStatus = _AccessErrorNotify() ; save current error notify status

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

    _AccessErrorNotify(False)
    $o_object = ObjCreate("DAO.DBEngine.36")

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

    If Not IsObj($o_object) Or @error = $_AccessStatus_ComError Then
    $i_ErrorStatusCode = $_AccessStatus_NoMatch
    EndIf

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

    ; restore error notify and error handler status
    _AccessErrorNotify($f_NotifyStatus) ; restore notification status
    __AccessInternalErrorHandlerDeRegister()

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

    If Not $i_ErrorStatusCode = $_AccessStatus_Success Then
    ;$o_object = ObjCreate("Access.Application")
    ;$o_object = ObjCreate("DAO.DBEngine.36")

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

    If Not IsObj($o_object) Then
    __AccessErrorNotify("Error", "_AccessOpen", "", "Access Object Creation Failed")
    Return SetError($_AccessStatus_GeneralError, 0, 0)
    EndIf
    EndIf

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

    $o_MDBObj = __AccessOpenDB($o_object, $s_FilePath, $Options, $ReadOnly, $Connect)

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

    Return SetError(@error, 0, $o_MDBObj)
    EndFunc ;==>_AccessOpen

    [/autoit]

    Dabei sollte ja die Datenbank geöffnet werden, ob jetzt sichtbar oder nicht, wird mir aus der Funktion nicht erkenntlich.


    Jedenfalls denke ich, dass

    [autoit]

    _AccessOpen($s_FilePath = "", $Options = False, $ReadOnly = False, $Connect = ";pwd=")

    [/autoit]

    zeigt, dass es reicht den Ort und den Namen anzugeben, damit es funktioniert. Das sieht dann so bei mir aus.

    [autoit]

    $AccessPath = @ScriptDir&"\USB-Sticks-DB.accdb"
    _AccessOpen($AccessPath)

    [/autoit]


    Danach hab ich noch eine MsgBox, die mir den Pfad, den Namen, sowie den Error ausgibt. Der Pfad und Name wird mir richtig in der MsgBox angezeigt, aber ich bekomme dennoch immer dern Error 1.


    Ich weiß wirklich nicht wo mein Fehler im Verständnis liegt ?(?(?(?(?(?(

  • Combobox Enable

    • MadCatz
    • 10. März 2014 um 14:23

    Entschuldige meine späte Antwort bitte.

    Ich meine auch nicht $ES_ENABLE, sondern $GUI_ENABLE

    Dennoch funktioniert dies hier nicht:

    [autoit]

    GUICtrlSetState($Combobox,$GUI_ENABLE)

    [/autoit]
  • Combobox Enable

    • MadCatz
    • 4. März 2014 um 15:11

    Hallo Zusammen,

    ich hab ein kleines Problem. Ich kann eine Combobox und ein Inputfeld ohne Probleme disablen, aber ich krieg es nicht gebacken diese zu enable =(

    sollte ja mit

    [autoit]

    GUICtrlSetState("",$ES_Enable)

    [/autoit]

    funktionieren, oder nicht?


    Braucht ihr mehr Quellcode zur Hilfe?

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 26. Februar 2014 um 14:34

    seh ich das richtig, dass die UDF nicht mehr zum Download bereits steht?

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 26. Februar 2014 um 09:56

    Danke für den Link =)

    Da ich das ganze mit der 2007 Version mache, sollte das dann ja funktionieren.
    Allerdings wird mir angezeigt, dass der Link nicht funktioniert, da down :(

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 26. Februar 2014 um 07:25

    Schonmal vielen Dank euch beiden =)

    ich denke damit werde ich schonmal recht gut was anfangen können =)

    ich werde sicherlich noch einige Fragen wärend meiner Programmierungsphase haben und mich dann melden müssen ^^

  • Access (.accdb) Datenbank auslesen etc.

    • MadCatz
    • 25. Februar 2014 um 14:26

    Hallo Leute =)

    Mein Quellcode steht zwar noch nicht, da ich grade erst anfange, aber ich habe bereits im Vorfeld eine Frage.

    Wie kann ich mithilfe von Autoit eine Datenbank öffnen, darin eine bestimmte Tabelle auswählen lassen und daraus bestimmte Spalten bzw. Zellen auslesen lassen?

    Geht das in etwa so wie beim Auslesen von Excel-Zellen?

  • GUICtrlCreateInput Problem

    • MadCatz
    • 18. Februar 2014 um 09:47

    Danke für eure Antworten =)

    Heist das ich kann nicht gleichzeitig $ES_Number verwenden?


    Edit:
    Vergesst den Post: Funktioniert =)

  • GUICtrlCreateInput Problem

    • MadCatz
    • 18. Februar 2014 um 07:43

    Hallo Leute,

    ich habe eine kurze Frage. Ich möchte verhindern, dass ein User ein Inputfeld verändern kann. Dazu gibt es ja den Befehl

    [autoit]

    $ES_READONLY

    [/autoit]

    Allerdings habe ich nicht das Gefühl, dass das funktioniert, da ich den vorher eingelesenen Wert in dem Inputfeld immer noch verändern kann, allerdings soll das Feld unveränderbar sein.

    Kann mir einer dabei behilflich sein?

    Quellcode:

    [autoit]

    Case $Entfernen_Stick ; Neben Stick enfernen
    $Index = int (_GUICtrlListView_GetSelectedIndices($Stick_entfernen))
    $Item0 = _GUICtrlListView_GetItemText($Stick_entfernen,$Index, 0)
    $Item1 = _GUICtrlListView_GetItemText($Stick_entfernen,$Index, 1)
    $Item2 = _GUICtrlListView_GetItemText($Stick_entfernen,$Index, 2)
    GUISetState(@SW_SHOW,$Konsole_Stick_entfernen2)
    $Stick_entfernen_SAP_A = GUICtrlCreateInput($Item0, 16, 40, 160, 21, $ES_NUMBER ,$ES_READONLY)
    $Stick_entfernen_BOX_A = GUICtrlCreateInput($Item1, 200, 40, 160, 21, $ES_NUMBER, $ES_READONLY)
    $Stick_entfernen_Stick_Anzahl_Alt_A = GUICtrlCreateInput($Item2, 16, 100, 160, 21, $ES_NUMBER, $ES_READONLY)
    _GUICtrlListView_DeleteAllItems($Stick_entfernen)
    USB_StickBoxen_Vorhanden($Stick_entfernen)

    [/autoit]
  • Problem: Ordnerwechsel inkl. Daten auslesen funktioniert nicht

    • MadCatz
    • 3. Februar 2014 um 12:01

    Lösung nach Tagen erzielt :)

  • Problem: Ordnerwechsel inkl. Daten auslesen funktioniert nicht

    • MadCatz
    • 31. Januar 2014 um 15:23

    Grob gesagt müsste ich sowas haben(hab ich auch ausprobiert aber daran gescheitert):


    Wenn $Tag = 1 ausgelesen und eingefügt, ist, aber $Tag2 noch nicht erreicht ist, dann im Ordner 1Monat davor ($Monat2A) bei der Datei mit der höchsten Zahl im Namen beginnen und solange einlesen bis $Tag2 erreicht ist.

  • Problem: Ordnerwechsel inkl. Daten auslesen funktioniert nicht

    • MadCatz
    • 31. Januar 2014 um 15:00

    Hallo Community =),

    In meinem Script, werden Ini-Dateien nach Tagen angelegt, im jeweiligen Monats Ordner, die wiederum im jeweiligen Jahres Ordner erstellt werden.
    Diese Dateien werden dann in eine ListeView eingetragen.
    Allerdings werden nur solche Dateien eingelesen die nicht älter als 10 Tage sind, also z.b. 11.Februar bis 1.Feb.

    Das klappt auch wunderbar =)

    Jetzt kommt mein Problem dabei.

    Wenn ich jetzt z.B. den 3.Feb angelegt habe, dann sollen ja dementsprechend die Dateien bis zum 25.Jan in die ListView eingetragen werden und das klappt leider nicht, ich hab schon alles probiert, was mir einfällt =(

    Unten findet ihr meine Funktionen für diese Script Aufgabe

    Ich hoffe mir kann einer dabei helfen :S
    ^^

    [autoit]

    ;~ -------ListView Übersicht komplett füllen---------------------------------------
    Func ListView_Uebersicht_fuellen()
    $DateAdd = _DateAdd('D', 0, _NowCalcDate())
    $DateAdd2 = _DateAdd('D', -10, _NowCalcDate())
    $Tag = int(StringRegExpReplace($DateAdd,'(\d{4})/(\d{2})/(\d{2})', ' $3 '))
    $Tag2 =int(StringRegExpReplace($DateAdd2,'(\d{4})/(\d{2})/(\d{2})', ' $3 '))
    $Monat2A = StringRegExpReplace($DateAdd2,'(\d{4})/(\d{2})/(\d{2})', ' $2 ')
    MsgBox(0,"",$DateAdd)
    MsgBox(0,"",$DateAdd2)

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

    If $Tag < 11 Then
    For $x = $Tag To 1 step -1
    ListViewLaden($Pfad_Start&"\Start.ini",0,$x)
    ListViewLaden($Pfad_Stopp&"\Stopp.ini",1,$x)
    ListViewLaden($Pfad_Ende&"\Ende.ini",2,$x)
    MsgBox(0,"","x = "&$x)
    If $Tag < $Tag2 Then
    For $y = 31 To $Tag2 Step -1
    ListViewLaden($Pfad_Start&"\Start.ini",0,$y)
    ListViewLaden($Pfad_Stopp&"\Stopp.ini",1,$y)
    ListViewLaden($Pfad_Ende&"\Ende.ini",2,$y)
    MsgBox(0,"","y = "&$y)
    Next
    EndIf
    Next
    ElseIf $Tag > 10 Then
    For $z = $Tag To $Tag2 step -1
    ListViewLaden($Pfad_Start&"\Start.ini",0,$z)
    ListViewLaden($Pfad_Stopp&"\Stopp.ini",1,$z)
    ListViewLaden($Pfad_Ende&"\Ende.ini",2,$z)
    MsgBox(0,"","z = "&$z)
    Next
    EndIf

    [/autoit][autoit]

    ;~ -------ListView Übersicht Komplett füllen Func----------------------------------
    Func ListViewLaden($Pfad_ListViewLaden,$Auswahl,$h)
    $DateAdd = _DateAdd('D', 0, _NowCalcDate())
    $DateAdd2 = _DateAdd('D', -10, _NowCalcDate())
    $Tag = int(StringRegExpReplace($DateAdd,'(\d{4})/(\d{2})/(\d{2})', ' $3 '))
    $Tag2 =int(StringRegExpReplace($DateAdd2,'(\d{4})/(\d{2})/(\d{2})', ' $3 '))
    $Monat2A = StringRegExpReplace($DateAdd2,'(\d{4})/(\d{2})/(\d{2})', ' $2 ')
    $SectionsCount = IniReadSectionNames($Pfad_ListViewLaden)
    If NOT @error Then
    $Count = $SectionsCount[0]
    For $e = 1 To $Count
    $ArrayStartName = IniReadSection($Pfad_ListViewLaden, $SectionsCount[$e])
    $Name = $ArrayStartName[1][1]
    $Spool = $ArrayStartName[2][1]
    $Stopp = $ArrayStartName[3][1]
    $Time = $ArrayStartName[4][1]
    $Date = $ArrayStartName[5][1]
    ;~ _ArrayDisplay($ArrayStartName)

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

    If $h < 10 Then
    $Kom = IniRead($Pfad_Auftragserfassung_Archiviert&"\0"&$h&".ini", $Spool ,"Kom","")
    $Bemerkung = IniRead($Pfad_Auftragserfassung_Archiviert&"\0"&$h&".ini", $Spool ,"Bemerkung","Fehler")
    $Express = IniRead($Pfad_Auftragserfassung_Archiviert&"\0"&$h&".ini", $Spool ,"Express","Fehler")
    $EndGe = "-"
    Else
    $Kom = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Kom","")
    $Bemerkung = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Bemerkung","Fehler")
    $Express = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Express","Fehler")
    $EndGe = "-"
    EndIf

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

    If $Bemerkung <> "Fehler" AND $Express <> "Fehler" Then
    If $Auswahl = 0 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Start
    ElseIf $Auswahl = 1 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Stopp
    ElseIf $Auswahl = 2 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Ende
    EndIf
    EndIf
    If $Express = "Ja" Then GUICtrlSetBkColor(-1,0xFF0000)
    Next
    EndIf
    EndFunc

    [/autoit]


    Meiner Meinung nach mein bisheriger sinnvollster Versuch zur Problemlösung ohne Erfolg

    [autoit]

    ;~ -------ListView Übersicht Komplett füllen Func----------------------------------
    ;~ ElseIf $Tag < $Tag2 Then
    ;~ $Kom = IniRead($Pfad_Auftragserfassung_ArchiviertA&$Monat2A&""&$h&".ini", $Spool ,"Kom","")
    ;~ $Bemerkung = IniRead($Pfad_Auftragserfassung_ArchiviertA&$Monat2A&""&$h&".ini", $Spool ,"Bemerkung","Fehler")
    ;~ $Express = IniRead($Pfad_Auftragserfassung_ArchiviertA&$Monat2A&""&$h&".ini", $Spool ,"Express","Fehler")
    ;~ $EndGe = "-"

    [/autoit]
  • Tage und Monat minus bestimmte Zahl subtrahieren

    • MadCatz
    • 28. Januar 2014 um 15:15

    Aber ich kann das zurückgegeben Format YYYY/MM/DD nicht in YYYY-MM-DD anpassen, ich denke wenn das gehen würde, und ich den Datei Namen dementsprechend anpasse, dass dann klappen sollte, was ich damit möchte. =)

  • Tage und Monat minus bestimmte Zahl subtrahieren

    • MadCatz
    • 28. Januar 2014 um 14:48

    Okey also ich hätte vermutlich mehr Input geben müssen damit ich eine Lösung bekomme, die auf mein Problem passt. Deine Lösung mit _DateAdd klappt irgendwie nicht mit dem Problem was ich eingetlich habe, naja das lag an mir.

    Das folgede Script ist relativ lang:


    Also ich hab folgendes: Mein Programm erstellt folgende Ordner:

    [autoit]

    DirCreate (@ScriptDir&"\Daten\Archiv\Start"&@YEAR&""&@MON)
    DirCreate (@ScriptDir&"\Daten\Archiv\Ende"&@YEAR&""&@MON)
    DirCreate (@ScriptDir&"\Daten\Archiv\Stopp"&@YEAR&""&@MON)
    DirCreate (@ScriptDir&"\Daten\Aufragaserfassung")
    DirCreate (@ScriptDir&"\Daten\Archiv\Aufragserfassung"&@YEAR&""&@MON)
    $Pfad_Auftragserfassung = @ScriptDir&"\Daten\Aufragaserfassung"
    $Pfad_Stoppgruende = @ScriptDir&"\Daten\Stoppgründe"
    $Stopp = @ScriptDir&"\Daten\Stopp"
    $Pfad_Start = @ScriptDir&"\Daten\Start"
    $Pfad_Ende = @ScriptDir&"\Daten\Ende"
    $Pfad_Stopp = @ScriptDir&"\Daten\Stopp"
    $Pfad_Mitarbeiter = @ScriptDir&"\Daten\Mitarbeiter"
    $Pfad_Stoppgruende = @ScriptDir&"\Daten\Stoppgründe"
    $Pfad_KomBereiche = @ScriptDir&"\Daten\KomBereiche"
    $Pfad_Archierung = @ScriptDir&"\Daten\Archiv"
    $Pfad_Start_Archiv = @ScriptDir&"\Daten\Archiv\Start"&@YEAR&""&@MON
    $Pfad_Ende_Archiv = @ScriptDir&"\Daten\Archiv\Ende"&@YEAR&""&@MON
    $Pfad_Stopp_Archiv = @ScriptDir&"\Daten\Archiv\Stopp"&@YEAR&""&@MON
    $Stoppgruende = GUICtrlRead($Stoppgruende_List)
    $Pfad_Auftragserfassung_Archiviert = @ScriptDir&"\Daten\Archiv\Aufragserfassung"&@YEAR&""&@MON
    $Pfad_Ende_ArchivTC = @ScriptDir&"\Daten\Archiv\Ende"&@YEAR&""&@MON
    $Pfad_Stopp_ArchivTC = @ScriptDir&"\Daten\Archiv\Stopp"&@YEAR&""&@MON
    DirCreate($Pfad_Ende)
    DirCreate($Pfad_Start)
    DirCreate($Stopp)
    DirCreate($Pfad_Stoppgruende)

    [/autoit]

    In meinem Programm werden dann jeweils nach Datum noch halt die Dateien erstellt, also zum Beispiel heute wird dann in allen Ordnern mit

    [autoit]

    @YEAR&@MON

    [/autoit]

    die Datei

    [autoit]

    @MDAY&".ini"

    [/autoit]

    erstellt.

    Anschließend wird irgendwann, falls dies gefordert ist, der Inhalt dieser Datei z.B. von Heute Also Datei 28.ini in eine ListView bzw. 2 ListViews eingetrage, dabei spielen folgende Ini-Dateien eine Rolle:

    [autoit]

    ;~ -------ListView Übersicht komplett füllen---------------------------------------
    Func ListView_Uebersicht_fuellen()
    $Tag = @MDAY
    $Tag2 = $Tag ;- 10
    ;~ $Tag = @YEAR&"-"&@MON&"-"&@MDAY
    ;~ $Tag2 = _DateAdd('D', -10, $Tag);_NowCalcDate())
    MsgBox(0,"","Tag 1 entspricht"&$Tag)
    MsgBox(0,"","Tag nach abzug von 10 Tagen entspricht"&$Tag2)
    For $x= $Tag To $Tag2 step -1
    ListViewLaden($Pfad_Start&"\Start.ini",0,$x)
    ListViewLaden($Pfad_Stopp&"\Stopp.ini",1,$x)
    ListViewLaden($Pfad_Ende&"\Ende.ini",2,$x)
    Next
    EndFunc

    [/autoit][autoit]

    ;~ -------ListView Übersicht Komplett füllen Func----------------------------------
    Func ListViewLaden($Pfad_ListViewLaden,$Auswahl,$h)
    $SectionsCount = IniReadSectionNames($Pfad_ListViewLaden)

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

    If NOT @error Then
    $Count = $SectionsCount[0]
    For $e = 1 To $Count
    $ArrayStartName = IniReadSection($Pfad_ListViewLaden, $SectionsCount[$e])
    $Name = $ArrayStartName[1][1]
    $Spool = $ArrayStartName[2][1]
    $Stopp = $ArrayStartName[3][1]
    $Time = $ArrayStartName[4][1]
    $Date = $ArrayStartName[5][1]
    ;~ _ArrayDisplay($ArrayStartName)

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

    $Kom = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Kom","")
    $Bemerkung = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Bemerkung","Fehler")
    $Express = IniRead($Pfad_Auftragserfassung_Archiviert&""&$h&".ini", $Spool ,"Express","Fehler")
    $EndGe = "-"

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

    If $Bemerkung <> "Fehler" AND $Express <> "Fehler" Then
    If $Auswahl = 0 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Start
    ElseIf $Auswahl = 1 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Stopp
    ElseIf $Auswahl = 2 Then
    GUICtrlCreateListViewItem($Name&"|"&$Kom&"|"&$Spool&"|"&$EndGe&"|"&$EndGe&"|"&$Time&"|"&$Date&"|"&$EndGe&"|"&$EndGe&"|"&$Bemerkung&"|"&$Express,$Voll_Uebersicht_List);Ende
    EndIf
    EndIf
    If $Express = "Ja" Then GUICtrlSetBkColor(-1,0xFF0000)
    Next
    EndIf
    EndFunc

    [/autoit][autoit]

    ;~ -------ListView in Array einfügen-----------------------------------------------
    Func _GUICtrlListView_CreateArray($hListView, $sDelimeter = '|')
    Local $iColumnCount = _GUICtrlListView_GetColumnCount($hListView), $iDim = 0, $iItemCount = _GUICtrlListView_GetItemCount($hListView)
    If $iColumnCount < 3 Then
    $iDim = 3 - $iColumnCount
    EndIf
    If $sDelimeter = Default Then
    $sDelimeter = '|'
    EndIf

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

    Local $aColumns = 0, $aReturn[$iItemCount + 1][$iColumnCount + $iDim] = [[$iItemCount, $iColumnCount, '']]
    For $i = 0 To $iColumnCount - 1
    $aColumns = _GUICtrlListView_GetColumn($hListView, $i)
    $aReturn[0][2] &= $aColumns[5] & $sDelimeter
    Next
    $aReturn[0][2] = StringTrimRight($aReturn[0][2], StringLen($sDelimeter))

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

    For $i = 0 To $iItemCount - 1
    For $j = 0 To $iColumnCount - 1
    $aReturn[$i + 1][$j] = _GUICtrlListView_GetItemText($hListView, $i, $j)
    Next
    Next
    Return SetError(Number($aReturn[0][0] = 0), 0, $aReturn)
    EndFunc

    [/autoit][autoit]

    ;~ --------ListView KomBereiche Summe füllen-------------------------------------
    Func ListView_KomBereich_Summe()
    $sDelimeter = ""
    $ListKom =_GUICtrlListView_CreateArray($Voll_Uebersicht_List, $sDelimeter = '|')
    $k = $ListKom[0][0]
    Dim $KomList[1]
    ReDim $KomList[UBound($ListKom)]
    For $l = 0 To $k Step 1
    $KomList[$l] = $ListKom[$l][1]
    Next
    _ArraySort($KomList)

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

    Dim $ExpressList[10]
    ReDim $ExpressList[UBound($ListKom)]
    For $n = 0 To $k Step 1
    $ExpressList[$n] = $ListKom[$n][10]
    Next
    _ArraySort($ExpressList)
    $ArrayExp = $ExpressList
    $AdditionExp = Express($ArrayExp)
    $CountExpress = UBound($AdditionExp)-1
    ;~ _ArrayDisplay($AdditionExp)
    For $q = 0 To UBound($CountExpress)
    $AddExp = $AdditionExp[$q][1]
    GUICtrlCreateListViewItem("Davon Express"&"|"&$AddExp, $KomBereich_Summe)
    Next

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

    $ArrayKom = $KomList
    $AdditionKom = Addition($ArrayKom)
    _ArraySort($AdditionKom)
    $Counter3 = UBound($AdditionKom)-1
    For $m = 0 to $Counter3
    $AddSum = $AdditionKom[$m][1]
    $KomToAdd = $AdditionKom [$m][0]
    GUICtrlCreateListViewItem($KomToAdd&"|"&$AddSum,$KomBereich_Summe)
    Next
    EndFunc

    [/autoit]

    Wie ich heute Morgen bereits gesagt habe habe ich das Problem mit dem Datum, hab bereits auch denn Tipp von BugFix ausprobiert, aber da scheint doch mehr dahinter zustecken, als ich sehen kann.

    So konkrett zum Problem: Wenn ich jetzt die Daten einlese, z.b vom 31.Jan.2014 bis 10 Tage davor, dann klappt dies auch, und alles wird richtig in die ListView eingetrage, wenn ich jetzt allerdings Daten von 9.Jan - bis 10 Tage davor einlesen will geht das nicht, weil das Datum in den -Tage bereich geht.

    Heißt:

    [autoit]

    9.Jan - 10 Tage = -1.Jan

    [/autoit]

    Das andere Problem ist der Monatswechsel z.B. Am 1.Feb. Datei erstellt und alles auslesen, was davor die 10 Tage angelegt wurde. Klappt natürlich auch nicht :(;(

    Der Fehler wird mir immer hier angezeigt:

    [autoit]

    For $q = 0 To UBound($CountExpress)
    $AddExp = $AdditionExp[$q][1]
    GUICtrlCreateListViewItem("Davon Express"&"|"&$AddExp, $KomBereich_Summe)
    Next

    [/autoit]


    Hab schon herrausbekommen, das er dieses Array überhaupt nicht erstellt, da die ListView nicht gefüllt wird.


    Ich weis, dass das viel verlangt ist, mir da irgendwie zuhelfen, aber ich komm hier überhaupt nicht mehr weiter =(

    Meiner Meinung nach liegt es am Datum auslesen ?(

  • Tage und Monat minus bestimmte Zahl subtrahieren

    • MadCatz
    • 28. Januar 2014 um 12:37

    werd ich gleich mal ausprobieren

    Danke =)


    Edit: Okey das klappt perfekt =)


    Jetzt hab ich allerdings noch ein Problem, was hierzu gehört, aber ich versuchs erstmal selbst, und lasse solange den Threat hier offen.

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™