select sum(Preis) in MsgBox ausgeben

  • Ich weiß, ds der letzte Beitrag X-Wochen her ist, aber eine Frage habe ich:

    Was ist daran falsch Ich möchte das ergebnis nicht im Array, sondern in der MsgBox haben.

    AutoIt
    Func _ges_preis()
    ; Berechnung aller Preise
    Local $irows, $icols, $arows
    	_SQLite_GetTable2d(-1, "select sum(Preis) as Result from Buchverwaltung where LfdNr between '10001' and '20000';", $arows, $icols, $icols)
    		MsgBox(64,"Gesamtpreis", $arows[1]); damit geht es NICHT, also mit MsgBox-Ausgabe    *grrrr*
    		_ArrayDisplay($arows) ; damit geht es, also mit Array
    ;  ENDE Berechnung aller Preise
    EndFunc

    Ausgabe der Array:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    2 Mal editiert, zuletzt von Alina (20. Dezember 2015 um 23:47)

  • Naja, Kannst doch einfach auf das Array zugreifen. Du Verwendest ja extra die Methode, die dir zum SQL den Datensatz als Tabelle(Array) ausgibt. (_SQLite_GetTable2d)
    In der ersten Zeile stehen immer die Spaltennamen von dem SELECT, in dem du die Summe aller Werte als Spalte "Result" abspeicherst.
    In allen darauffolgenden Zeilen die Datensätze. Bei nem SUM ist das ein Datensatz mit der Summe.
    Also:
    MsgBox(48,"Result",$arows[1][0])

    Bezug auf die Shoutbox:
    Sieht man sich diese beiden Zeilen an:

    • Local $irows, $icols, $arows
    • _SQLite_GetTable2d(-1, "select sum(Preis) as Result from Buchverwaltung where LfdNr between '10001' and '20000';", $arows, $icols, $icols)

    erst wird iRows und iCols und aRows deklariert, wunderbar, sogar mit Notation, was für nen Typ das ist (i=Integer(Zahl),a=Array)
    Dann wird aRows auch richtig an SQLite übergeben. Danach ist der erste Fehler: Es wird für die Zeilen und Spaltenanzahl das $iCols übergeben. Sollte aber erst $iRows und dann $iCols sein.
    Dann der andere Fehler, der in der Shoutbox war: Du hast versucht auf $iRows als Array zuzugreifen, das ja bekanntlich ein Integer enthalten soll, in diesem Fall aber nichtmail initialisiert wurde, deshalb auch die Fehlermeldung.
    An sich macht man die Namensgebung ja, um solche Fehler zu vermeiden :D

    Falls du das noch nicht gemerkt hast: Die Parameter sind Byref, das heißt, dass das was übergeben wurde sind Pointer, die Funktion arbeitet auf den Variablen direkt, nicht auf Kopien, wie sonst. Deshalb musst du die auch
    vorher erstellen. (Falls dich das noch mehr interessiert kannst du dich über Pointer schlau machen ;) )

  • MAN BIN ICH DOOOOOOF !!!

    Fehler lag einfach daran, das ich die Funktion zu früh aufgerufen habe.
    Erst müssen na klar die Daten aus der Db gelesen werden. Peinlich, aber
    das war einfach nur blöööööde.

    Danke für Eure Hilfe.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl