bedingtes INSERT TO



  • Hallo ich habe folgendes Problem und hoffe das mir jemand helfen kann

    Ich will in meine Access DB einen eintrag machen aber nur wenn eine bedingung erfüllt ist. Ich habe bereits vergeblich mit hilfe von iff() und where versucht

    ich hoffe jemand wiess wie es richtig geht
    MFG Jakula



  • ich habe eine Tabelle in der unter anderem das feld blnr und liefererid enthalten sind
    wenn ich jetzt einen neuen datensatz anlege soll die blnr immer einen anderen wert haben
    aus wenn die lieferid die selbe ist

    lbnr liefererid insert into
    11111 liefer1 ja
    11111 liefer1 ja
    11111 liefer2 nein
    22222 liefer1 ja

    blnr und liefererid werden durch ein programm übergegeben



  • Jakula schrieb:

    Ich will in meine Access DB einen eintrag machen aber nur wenn eine bedingung erfüllt ist. Ich habe bereits vergeblich mit hilfe von iff() und where versucht
    a

    IF gibt es so nicht in SQL.

    WHERE ist richtig.

    Welchen Fehler bekommst du damit?



  • Jakula schrieb:

    ich habe eine Tabelle in der unter anderem das feld blnr und liefererid enthalten sind
    wenn ich jetzt einen neuen datensatz anlege soll die blnr immer einen anderen wert haben
    aus wenn die lieferid die selbe ist

    lbnr liefererid insert into
    11111 liefer1 ja
    11111 liefer1 ja
    11111 liefer2 nein
    22222 liefer1 ja

    blnr und liefererid werden durch ein programm übergegeben

    verstehe kein Wort. Wenn du die Werte übergibst dann fügt Access sie ein. Wenn du eine anderen haben willst dann chekce dies.
    Du könntest aber mal sagen wie du auf die DB zugreifst, ODBC,etc.



  • 1. Bei dem Befehl:
    INSERT INTO bestellung(blnr,liefererID,offen,datbest,liefertermin) VALUES ( BLNR, LIEFERERID ) WHERE COUNT( blnr = BLNR AND liefererID != LIEFERERID = 0;

    (Ich habe zur vereinfachung hier die übergabe Werte groß geschrieben)
    Erhalte ich die Fehlermeldung das am Ende der SQL - Anweisung ein Semikolon fehlt. (Ich glaube weil INSERT INTO keine WHERE bedingung hat)

    2. Die Anweisung IIF(Bedingung, WAHR , FALSCH) gibt es bei Access

    3. Ich benutze den C++Builder und greife über ADO auf die DB zu

    Ich weiss das ich das ganze mit zwei befehlen machen könnte die ich dann im Programm mit einem If verknüpfe aber ich hab gehofft ich könnte das in einer anweisung machen

    zur Erklärung:
    also es geht darum, dass ich eine Tabelle mit bestellungen habe und die jeweiligen Lieferanten. Normalerweis hat jede bestellung seine eigene bestellnr, aber es gibt auch teilbestellungen und die haben eben die selbe bestellnr.



  • Warum verwendest du dann eine WHERE bei Insert INTO wenn du weißt das es nicht geht weil INSERT INTO kein WHERE haben darf.

    Was Du willst geht so nicht mit SQL. Zumindest auf den ersten Blick nicht. Und selbst wenn. Ob du rechnest oder das DBMS den Query analysieren muss ist von der Zeit her egal. MAche vergleiche mit C++ in deinem Programm und übergib die eigentlichen Werte dann der DB.



  • Ich wusste ja nicht genau ob WHERE bei INSERT TO nicht funzt

    trotzdem danke 🤡
    MFG Jakula



  • Nur der Vollständigkeit halber: Auf echten SQL-Servern verwendet man für so etwas StoredProcedures oder besser noch Trigger. Da ich kein Access verwende, kann ich nicht sagen, ob es StoredProcedures unterstützt. Trigger gibt es nicht, meine ich mal gelesen zu haben.



  • Bei Access würd ich einen WorkAround bilden der über VBA auswertet.
    Allerdings ist das nich umbedingt ein klacks, wenn man keine AHnung davon hat (so wie ich... xD Ich müsst mir das auch erst erarbeiten.)


Log in to reply