Sqlite + Autoincrement + while Array Problem

  • Hallo,

    Mein Problem ist das autoincrement nicht richtig funktioniert, es wird nur ein Eintrag aufgenommen, aber keine weiteren mehr.

    Pseudocode:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    #include <File.au3>

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

    #RequireAdmin

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

    Local $sSQliteDll
    $sSQliteDll = _SQLite_Startup()
    If @error > 0 Then
    MsgBox(16, "SQLite Fehler", "SQLite.dll konnte nicht geladen werden!")
    Exit -1
    EndIf

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

    $db = _SQLite_Open("Sap.sqlite")

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

    _SQLite_Exec($db, 'CREATE TABLE "tblPdf" ("ID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "SapNummer" INTEGER NOT NULL , "Exist" INTEGER UNIQUE DEFAULT 0)')

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

    While 1
    Sleep(2000)
    $APdf = _FileListToArray($PDFPfad, "*.pdf", 1)
    If @error Then
    Else
    $APdfWhile = $APdf[0]
    While $APdfWhile > 0
    $TrimPdf = StringTrimRight($APdf[$APdfWhile], 4)
    _SQLite_Exec($db, "INSERT INTO tblPdf ('SapNummer') VALUES (" & _SQLite_Escape($TrimPdf) & ");")
    Sleep(500)
    $APdfWhile -= 1
    WEnd
    EndIf
    WEnd
    _SQLite_Close($db)

    [/autoit]

    Wo könnte der Fehler liegen.
    Wie gesagt in die DB wird nur die erste Datei aufgenommen, aber das wars dann auch schon.

    Edit: Exist aus der Inert into entfernt.
    Klappt aber immer noch nicht.

    Einmal editiert, zuletzt von DanielZ86 (19. Oktober 2012 um 13:57)

  • Warum hast du der Exist-Spalte das "Unique"-Attribut verpasst wenn der Wert die Werte der Spalte mehrfach vorkommen sollen (du weißt ja immer 1 als Wert zu was durch Unique ja nur einmal erlaubt ist).

    Edit:

    Edit: Exist aus der Inert into entfernt.
    Klappt aber immer noch nicht.

    Wenn du das Exist aus dem Insert heraus nimmst wird automatisch immer der Wert 0 zugewiesen (Default 0).
    Also immer noch der gleiche Wert für alle Einträge was durch Unique ja verboten ist.

    Warum hast du also Unique verwendet?

    Einmal editiert, zuletzt von AspirinJunkie (19. Oktober 2012 um 14:01)

  • Die Frage die wirklich dahinter steht ist eher warum hast du Unique verwendet?
    Unique muss man nicht "umgehen" sondern du wirst ja deinen Grund gehabt haben warum du es explizit eingebaut hast.
    Was wolltest du denn damit erreichen - vielleicht können wir ja eine Alternative finden für dein Vorhaben.

  • Wollte beim ersten anlegen auf 0 setzen.
    Aber das kann ich auch indem ich in die Scheife einfach $temp = 0 und diese in die Sql anweisung reinpacke.