contool
Goto Top

Datentypen in Kriterienausdruck unverträglich

Hallo Zusammen !

Wir haben für unsere Homepage eine Art CMS System das auf einer Access Datenbank basiert, mit welchem wir z.B. Kurse oder sonstige Angaben vereinfacht eintragen können. Möchte ich bei unseren Kursen im CMS System einen neuen Kurs eintragen erhalte ich folgende Fehlermeldung:


Microsoft JET Database Engine- Fehler '80040e07'

Datentypen in Kriterienausdruck unverträglich.

/seminare_dbeintrag.asp, line 11


Wenn ich in dem ASP File nachschaue unter Line 11 ist folgender Code drin:

Set seminare = DB.Execute("INSERT INTO seminare (kursnr, seminarname, beschreibung, zielgruppe_1, zielgruppe_2, zielgruppe_3, zielgruppe_4, zielgruppe_5, zielgruppe_6, dauer, link, kategorie, sortierung, tag, monat, jahr, pdfname, url, urltext, preis, waehrung, kursort, fuehrungskraefte, cfos, controller, mzsg, weka, czsg) VALUES ('" & _


Und unten drunter folgendes:

REPLACE(request.form("kursnr"), "'", "''") & "', '" & _
REPLACE(request.form("seminarname"), "'", "''") & "', '" & _
REPLACE(request.form("beschreibung"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_1"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_2"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_3"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_4"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_5"), "'", "''") & "', '"& _
REPLACE(request.form("zielgruppe_6"), "'", "''") & "', '"& _
REPLACE(request.form("dauer"), "'", "''") & "', '"& _
REPLACE(request.form("link"), "'", "''") & "', '"& _
REPLACE(request.form("kategorie"), "'", "''") & "', '"& _
REPLACE(request.form("sortierung"), "'", "''") & "', '"& _
REPLACE(request.form("tag"), "'", "''")& "', '"& _
REPLACE(request.form("monat"), "'", "''")& "', '"& _
REPLACE(request.form("jahr"), "'", "''") & "', '"& _
REPLACE(request.form("pdfname"), "'", "''") & "', '"& _
REPLACE(request.form("url"), "'", "''") & "', '"& _
REPLACE(request.form("urltext"), "'", "''") & "', '"& _
REPLACE(request.form("preis"), "'", "''") & "', '"& _
REPLACE(request.form("waehrung"), "'", "''") & "', '"& _
REPLACE(request.form("kursort"), "'", "''") & "', '"& _
REPLACE(request.form("fuehrungskraefte"), "'", "''") & "', '"& _
REPLACE(request.form("cfos"), "'", "''") & "', '"& _
REPLACE(request.form("controller"), "'", "''") & "', '"& _
REPLACE(request.form("mzsg"), "'", "''") & "', '"& _
REPLACE(request.form("weka"), "'", "''") & "', '"& _
REPLACE(request.form("czsg"), "'", "''") & "')")


%>


Wo liegt da der Fehler? In der Access Datenbank sind diese Tabellen Spalten mit den entsprechenden ID's/Namen alle vorhanden. Kann mir da jemand weiterhelfen?


Freundliche Grüsse

Contool

Content-ID: 183704

Url: https://administrator.de/contentid/183704

Ausgedruckt am: 25.11.2024 um 16:11 Uhr

SlainteMhath
SlainteMhath 18.04.2012 um 13:08:11 Uhr
Goto Top
Moin,

Der Fehler
Datentypen in Kriterienausdruck unverträglich.
deutet darufhin, das du versiuchst ein String/Text-Feld mit einem Int-Wert zu fülllen, oder anders rum. Int-Werte dürfen nicht in Anführungszeichen stehen, String/Text müssen!

lg,
Slainte
contool
contool 18.04.2012 um 13:11:06 Uhr
Goto Top
Hey !

Besten Dank für deine Antwort. Wie finde ich denn heraus welches Feld ein String und welches ein Int-Werte Feld ist? Bzw. wo genau das Problem liegt?

Greez
MadMax
MadMax 18.04.2012 um 13:12:42 Uhr
Goto Top
Hallo Contool,

Access ist zwar nicht mein Gebiet, aber ich könnte mir vorstellen, daß Du bei einer Kommazahl (z.B. in der Spalte "preis") ein Komma eingetragen hast. Bei Datenbanken wird normalerweise ein Punkt als Dezimaltrennzeichen verwendet. Das könnte man dann also mit einem weiteren replace auf das Feld bereinigen.

Auf jeden Fall solltest Du prüfen, was in die Spalten, die nicht den Datentyp Text haben, eingetragen wird.

Gruß, Mad Max
contool
contool 18.04.2012 um 13:14:26 Uhr
Goto Top
Oh oh...das musst du mir nochmals für "Dummies" erklären face-smile

greez
MadMax
MadMax 18.04.2012 um 13:18:02 Uhr
Goto Top
Wenn Du bei Preis z.B. den Wert "3,50" einträgst, dann ist das für eine Datenbank keine Zahl. Der Wert "3.50" dagegen schon. Wenn das die Ursache wäre, dann könntest Du das mit einem replace (... , ',', '.') beheben.

Gruß, Mad Max
contool
contool 18.04.2012 um 13:24:25 Uhr
Goto Top
Aber beim Preis werden in der Regel nur Gerundete Beträge eingegeben...ich erhalte die Meldung auch ohne , oder .

:S :S
MadMax
MadMax 18.04.2012 um 13:35:12 Uhr
Goto Top
Dann wären mal die Datentypen Deiner Spalten interessant und was Du versuchst einzutragen. Außerdem solltest Du mal prüfen, was Slainte Dir geschrieben hat.

Gruß, Mad Max
contool
contool 18.04.2012 um 13:37:12 Uhr
Goto Top
Wie kann ich die Datentypen der Spalten prüfen?

Es sind Angaben zu Seminare, Titel, Beschreibung, Kosten, Datum, etc...die werden dort eingetragen und auf der Homepage wird ein neues Element mit dem eingetragenen Seminar erstellt.

greez
SlainteMhath
SlainteMhath 18.04.2012 um 13:52:13 Uhr
Goto Top
Wie kann ich die Datentypen der Spalten prüfen?
Mit Access die Access-Datenbank öffnen, und die entsprechende Tabelle in der Entwurfsansicht öffnen.
contool
contool 18.04.2012 um 13:59:18 Uhr
Goto Top
Da steht folgendes drin:

http://img19.imageshack.us/img19/4641/seminare.jpg


Also das komische ist ja..wenn ich die Seminare direkt in die Access Datenbank eintrage geht es ohne Probleme. Nur hald über das CMS System kommt diese Meldung
MadMax
MadMax 18.04.2012 um 14:23:30 Uhr
Goto Top
Statt dieses "Set seminare = DB.Execute("INSERT INTO seminare ...", bei dem Du den Befehl direkt ausführst, weise diesen String doch mal einer Variablen zu. Dann setzt Du dahinter einen Breakpoint und schaust, was in der Variablen steht, das ist es ja dann, wie der Befehl genau aussieht. So solltset Du dem Problem auf die Spur kommen.

Gruß, Mad Max
SlainteMhath
SlainteMhath 18.04.2012 um 14:27:31 Uhr
Goto Top
Genau, und jetzt prüfst du in deinem Code:
- "Zahl"-Felder dürfen nicht in " oder ' eingeschlossen sein
- "Memo" und "Text" Felder müssen in " oder ' eingeschlossen sein
- "JA/Nein" Felder dürfen nur True oder False als wert haben, OHNE " oder '
contool
contool 18.04.2012 um 14:38:33 Uhr
Goto Top
Habe es angepasst. Jetzt kommt folgendes:

Kompilierungsfehler in Microsoft VBScript- Fehler '800a03ee'

')' erwartet

/cms/_training/seminare_dbeintrag.asp, line 39

REPLACE(request.form("czsg"), "'", "''") & "')")
NetWolf
NetWolf 18.04.2012 um 14:47:45 Uhr
Goto Top
Moin Moin,

d.h. irgendwo sind die Anführungsstriche falsch, bzw. er gibt nur ein Anführungszeichen und das zweite fehlt.

Viel Spaß beim Suchen face-smile

Grüße aus Rostock
Wolfgang
(Netwolf)