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 istlbnr liefererid insert into
11111 liefer1 ja
11111 liefer1 ja
11111 liefer2 nein
22222 liefer1 jablnr 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
aIF 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 istlbnr liefererid insert into
11111 liefer1 ja
11111 liefer1 ja
11111 liefer2 nein
22222 liefer1 jablnr 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.)