fK.: Wo fehlt denn in der SELECT-Anweisung das Semikolon?

Ich raffs nicht!
Wo fehlt denn in der SELECT-Anweisung das Semikolon?

So siehts aus:

sql="INSERT INTO Hersteller (HG1,UG1) VALUES ('"& Hauptgruppe&"','"& Untergruppe&"') WHERE Email LIKE '" &Email& "' "
  
response.write(sql)
db2.Execute (sql)

Ich erhalte dann folgende Meldung:

INSERT INTO Hersteller (HG1,UG1) VALUES ('4','4') WHERE Email LIKE '11111111111111111'
Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Fehlendes Semikolon (;) am Ende der SQL-Anweisung.

/haustechnikdialog/herstellerkategorien_hg1.asp, Zeile 33

Ich bitte um Hilfe! Danke

fK

  1. Hallo fK (?),

    [...]

    sql="INSERT INTO Hersteller (HG1,UG1) VALUES ('"& Hauptgruppe&"','"& Untergruppe&"') WHERE Email LIKE '" &Email& "' "
      
    response.write(sql)

    [...]

    im Normalfall ist es eigentlich egal, ob das Semikolon da steht oder
    nicht (über ADO), aber ich denke mal, durch das " " (Leerzeichen) am
    Ende des SQL-Strings wird noch etwas erwartet, was dann aber nicht folgt.
    Daher entferne entweder das Leerzeichen oder schreibe:
    sql="INSERT INTO Hersteller (HG1,UG1) VALUES ('"& Hauptgruppe&"','"& Untergruppe&"') WHERE Email LIKE '" &Email& "';"

    Tschau, Stefan

    1. Hat leider nicht gefruchtet:

      So hab ichs im Quelltext:
      ---------------------------------------------------------------------
      sql=("INSERT INTO Hersteller (HG1,UG1) VALUES ('"& Hauptgruppe&"','"& Untergruppe&"') WHERE Email LIKE '" &Email& "';")

      Hier die Fehlermeldung
      ---------------------------------------------------------------------
      INSERT INTO Hersteller (HG1,UG1) VALUES ('6','6') WHERE Email LIKE '888888888';
      Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'

      [Microsoft][ODBC Microsoft Access Driver] Fehlendes Semikolon (;) am Ende der SQL-Anweisung.

      /haustechnikdialog/herstellerkategorien_hg1.asp, Zeile 33

      Echt zum kotzen, er schreibt dann natürlich auch nichts rein in die DB. Komisch

      Ne Alternative zu bieten. Vielleicht mit Abfragen?

      Danke

  2. Hallo,

    Ich raffs nicht!

    Nette Begrüßung, oder was ist das sonst? ;-)

    Wo fehlt denn in der SELECT-Anweisung das Semikolon?

    So siehts aus:

    sql="INSERT INTO Hersteller (HG1,UG1) VALUES ('"& Hauptgruppe&"','"& Untergruppe&"') WHERE Email LIKE '" &Email& "' "

    ich hab' bisher noch keine DB gefunden, bei der ein Insert-Statement mit einer where-Klausel ausgestattet sein kann.

    Access wird wahrscheinlich davon ausgehen, daß es sich eigentlich um zwei Statements handelt, und da muß halt zwischen erstem und zweitem ein Semikolon hinein.

    aber ich denke es sollte heißen

    sql="INSERT INTO Hersteller (Email,HG1,UG1) VALUES (""&Email&"", '"& Hauptgruppe&"','"& Untergruppe&"')"

    oder sowas in der Art. aber sicher ohne "WHERE" and "ORDER" :-)

    Sieh Dir bitte doch die Dokumentation zu Access durch: Online-Doku aufmachen-> Index auswählen->"insert" eingeben -> suchen -"Insert into"-Anweisung auswählen und lesen.

    Grüße
      Klaus

  3. Sali fK

    Als erstes möchte ich mich bei Stefan Falz für seine Hilfestellung bedanken. Allerdings hätte er es besser bleiben lassen.

    Wie Klaus bereits erwähnt hat ist die WHERE Anweisung in deinem INSERT INTO äusserst fragwürdig. Und selbst Microsoft kennt in seinen SQL Definitionen keine INSERT INTO - WHERE kombinationen.

    Falls Du einen neuen Record anlegen möchtest, benutzt Du die INSERT INTO Anweisung. Wenn aber der Record schon existiert (das scheint er in deinem Fall zu tun) so benötigst Du UPDATE!

    Und so gehts:
    UPDATE tab_name
       SET spalte_1=ausdr_1 [{,spalte_2=ausdr_2}...]
       [FROM tab_name1 [{,tab_name2}..]
       [WHERE bedingung]

    Grüsse
      Thomas

    1. Halllo Thomas,

      [...]

      Als erstes möchte ich mich bei Stefan Falz für seine Hilfestellung bedanken. Allerdings hätte er es besser bleiben lassen.

      [...]

      erstenst musst Du Dich nicht bedanken, da es nicht für Dich bestimmt war
      und zweitens habe ich mal was übersehen (O Gott, wie schlimm). Meine
      Antwort auf das Posting war daher falsch. Ist zwar nicht schön, aber
      auch nicht tödlich (Du hast natürlich noch nie Fehler gemachtm gell?).
      Wenn Klaus ihm nicht die Antwort auf seine Frage gegeben hätte, hätte
      ich es gemacht, nachdem ich meinen Fehler bemerkt habe.
      Daher brauchst Du hier keine ironischen Sprüche über Antworten abzulassen,
      wenn das ganze Dich nichts angeht (Den obigen Spruch von fK hätte ich mir noch gefallen lassenm aber von Dir???).

      [...]

      Tschau, Stefan