Hilfe zum fertigstellen des Programms

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Typhoon.

    Neu

    ErfinderDesRades schrieb:

    `kennzeichen`; '" & FormMain.LabelKFZKennzeichen.Text & "';"


    schau mal du hast nach kennzeichen ein ";" das sollte eigentlich ein "=" sein. denn so denkt dein SQL Query das er nach dem "kennzeichen;" vorbei ist und das ergibt natürlich einen Error.
    Ich empfehle dir deine SQL Querys immer bevor du sie in dein Programm einbaust zu testen. Das kannst du ganz easy im Phpmyadmin machen.

    Dein Select müsste also eigentlich so aussehen:

    Quellcode

    1. "SELECT ROUND((SUM(`tankmanager`.`tbl_tanken`.`liter`) / COUNT(`tankmanager`.`tbl_tanken`.`liter`) * 100) /
    2. (SUM(`tankmanager`.`tbl_tanken`.`gefahren`) / COUNT(`tankmanager`.`tbl_tanken`.`gefahren`)),2) AS DGV
    3. FROM `tankmanager`.`tbl_tanken`
    4. WHERE DATE_FORMAT(`tankmanager`.`tbl_tanken`.`datum`, '%Y') = '" & selectedJahr & "' AND `tankmanager`.`tbl_kfz`.`kennzeichen` = '" & FormMain.LabelKFZKennzeichen.Text & "';"


    Und falls das auch nicht klappt, wie gesagt teste einen Select einmal im phpmyadmin aus. mit deinem Kennzeichen und dem Jahr 2020. Wenn du dort dann das gewünschte Ergebnis raus bekommst
    bau das in dein Programm ein.

    Ausserdem solltest du versuchen anstatt den String zusammen zubauen einfach prepared statements zu nutzen.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Neu

    @xChRoNiKx

    Ich habe jetzt den Code wie vorgeschlagen abgeändert und in phpmyadmin getestet.

    MySQL meldet: #1054 - Unbekanntes Tabellenfeld 'tankmanager.tbl_kfz.kennzeichen' in where clause

    Ich möchte eigendlich, das aus der db alle Daten vom Kennzeichen das im LabelKFZKennzeichen ausgewählt ist in der GridBox ausgegeben werden.
    Mit dem Original Code funktioniert das auch.
    Aber sobald ich die AND Anweisung dazu "Bastle" geht nix mehr.
    Was mache ich falsch?

    Gruss Gebhard

    Neu

    Hi,

    die Fehlermeldung sagt ja alles. Er findet die Spalte nicht. Liegt wohl daran weil er nach mehr sucht als er soll.

    Warum schreibst du überall die Datenbank und den Tabellennamen davor? Da du eh immer in deiner Datenbank bist brauchst du das nicht.
    Und da du hier eine normale kleine Select Abfrage machst und mit dem FROM Teil eh schon sagst aus welcher Tabelle brauchst du den Tabellennamen auch nicht davor.

    Versuchs mal so:

    SQL-Abfrage

    1. SELECT ROUND((SUM(liter) / COUNT(liter) * 100) /
    2. (SUM(gefahren) / COUNT(gefahren)),2) AS DGV
    3. FROM tbl_tanken
    4. WHERE DATE_FORMAT(datum, '%Y') = '2020' AND kennzeichen = 'blablabla';


    Ich war auch noch nie ein Freund von diesen ganzen Qoutes um die Spaltennamen. Im Normalfall braucht man das auch nicht ( Belehrt mich falls es dafür einen größeren Sinn gibt)
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen

    Neu

    Hallo,

    leider funktionierte das auch nicht:

    MySQL meldet: #1046 - Keine Datenbank ausgewählt

    ABER ..... nach langem hin und her hab ich den Fehler gefunden:

    So funktioniert es.

    Quellcode

    1. "SELECT ROUND((SUM(`tankmanager`.`tbl_tanken`.`liter`) / COUNT(`tankmanager`.`tbl_tanken`.`liter`) * 100) /
    2. (SUM(`tankmanager`.`tbl_tanken`.`gefahren`) / COUNT(`tankmanager`.`tbl_tanken`.`gefahren`)),2) AS DGV
    3. FROM `tankmanager`.`tbl_tanken`
    4. WHERE DATE_FORMAT(`tankmanager`.`tbl_tanken`.`datum`, '%Y') = '" & selectedJahr & "' AND `tankmanager`.`tbl_tanken`.`kennzeichen` = '" & FormMain.LabelKFZKennzeichen.Text & "';"


    Ich muss natürlich die tbl_tanken anstatt tbl_kfz verwenden! Den in der tbl_kfz gibt es ja keine tbl_tanken .

    Jetzt macht das Programm, was es machen soll.

    Vielen Dank euch allen für die Ratschläge und die Unterstützung.

    gruss Gebhard