MySQL und VB 6.0

  • VB6

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Jue.

    MySQL und VB 6.0

    Hallo,

    ich bin wieder mal mit 6.0 unterwegs und habe da einen Fehler, den ich mir nicht erklären kann:

    Ich greife auf MySQL Datenbanken zu. Das geht auch sehr gut, bis auf EIN Befehl. Ich kann folgendes nicht ausführen:

    Quellcode

    1. dbs2.Execute "TRUNCATE TABLE lager"


    Dabei bekomme ich die Fehlermeldung:
    Eine Auswahlabfrage kann nicht ausgeführt werden.

    Wieso nicht? Ich kann sonst alle Befehle benutzen. Ich habe meine MySQL version bis auf 5.0 geupdatet.

    Kann mir jemand helfen?


    Ok habe das schon gemerkt:
    Dafür brauche ich wohl ein RecordSet.
    Wenn ich das jetyt benutze, dann kommt folgender Fehler:
    Laufzeitfehler '3078'

    Das Microsoft Jet-Datenbankmodul findet die Eingangstabelle oder oder Abfrage 'TRUNCATE TABLE lager' nicht. Stellen Sie sicher, dass sie existiert und der Name richtig eingegeben wurde.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lost-Ha[n]f-PHP“ ()

    Hi,

    wenn ich mich nicht irre löscht TRUNCATE TABLE alle Daten aus einer Tabelle. Das geht auch mit diesem SQL Befehl:

    SQL-Abfrage

    1. DELETE FROM lager WHERE x >= 0


    wobei x eine beliebige Spalte mit Zahlenwerten ist die als kleinsten Wert 0 haben.

    Nachteil dieser Operation:
    - die Tabelle wird Zeilenweise gelöscht; dadurch kann es etwas länger dauern als die Tabelle zu löschen und neu zu erstellen (TRUNCATE)


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Original von LaMa5

    SQL-Abfrage

    1. DELETE FROM lager WHERE x >= 0


    wobei x eine beliebige Spalte mit Zahlenwerten ist die als kleinsten Wert 0 haben.


    Ich bin der Meinung es geht auch ohne diesen "WHERE ..."-Anhang. Ich denk mal, dass das hier etwas schneller ist, da mySQL nicht erst (unnötige) Bedingungsabfragen machen muss.

    Jue ;)
    Hi,

    @Jue
    du hast Recht.

    MySQL-Referenzhandbuch :: 7.4.6 DELETE-Syntax
    ...
    mysql> DELETE FROM tabelle WHERE 1>0;

    Beachten Sie, dass das VIEL langsamer als DELETE FROM tabelle ohne WHERE-Klausel ist, weil es Zeilen eine nach der anderen löscht
    ...


    Hab das vorhin aus dem Kopf gemacht und hätte nicht gedacht das er das zulässt. :rolleyes:


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaMa5“ ()

    Das stimmt aber dieser Befhel hat noch einen kleinen Unterschied. Delete löscht nur die einzelnen Zeilen. Die anto_incremented Variablen zählen dann allerdings weiter und werden nicht auf 0 gesetzt. Dies ist leider unbedingt erforderlich.
    Vielleicht hat der Datenbankbenutzer, mit dem du von Vb aus auf die MySQL Datenbank zugreifst, keine Rechte eine Tabelle zu leeren. Man kann in MySQL ja Benutzer einrichten, die nur bestimmte SQL-Befehle ausführen können. Die Standardbefehle, die erlaubt sind: Select,Update,Delete,Insert into,File. Die anderen Befehle kann meistens nur der Admin machen. SQL-Befehle für Rechteverwaltung: Grant bzw Revoke. Wenn du phpMyAdmin oder etwas ähnliches hast, gehts natürlich noch einfacher...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Agent“ ()

    zuerst einmal: ich hab mySQL-Version 3.23.39 und greife mit PHP darauf zu (die letzte Info ist aber irrelevant!)

    ich habe eine tabelle mit 9 Datensätzen. Als nächster Autoindex wird "10" angezeigt. Dann gebe ich den Befehl "DELETE FROM test". Danach ist die Tabelle komplett leer und als Autoindex wird "1" angezeigt.


    Jue ;)
    hmm komisch. Ich habe ds genau so gemacht. Zuerst ist der Wert 10033 dann sage ich "DELETE FROM test" und der Wert ist 10033.

    Ich benutze MySQL 5.0... und greufe da auch mit PHP und VB drauf zu...

    Aber wenn ich schon dabei bin:
    Habe ein neues Thema erstellt. Wegen Datenbank Dateitypen, könntest du / ihr da mal reingucken?

    Thema: Dantenbank Dateitypen

    Danke

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lost-Ha[n]f-PHP“ ()