Avatar billede mekaniker Nybegynder
11. september 2001 - 22:04 Der er 12 kommentarer og
1 løsning

forspøg . & distination

Hvad er der galt når man får denne fejlmeddelelse

Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'

[Microsoft][ODBC Microsoft Access-driver] Antallet af forespørgselsværdier og destinationsfelter er ikke det samme.

/mekaniker
Avatar billede eagleeye Praktikant
11. september 2001 - 22:08 #1
du har et problem med en SQL sætning.
Der enten mangler parametre eller forkert data type mellem felt definition og data.
Avatar billede tmceu Praktikant
11. september 2001 - 22:09 #2
Mit gæt er at du laver en INSERT INTO XXX SELECT(xx, yy FROM ZZZ), og at der er forskel på altal felter i tabellen du indsætter i og dit select statement
Avatar billede mekaniker Nybegynder
11. september 2001 - 22:30 #3
Jeg har prøvet at downloade dette script med tilhørende db. Og dette kan jeg godt få til at virke.
Det virker enda hvis jeg laver felttypen om til \"tal\" i databasen, men selvfølgelig ikke hvis jeg skriver \"Thomas\" i inputboxen.
Så får jeg fejlmeddelelsen at datatyperne ikke stemmer overens.........KLART NOK

<%
    Name = request.form(\"Name\")
    City = request.form(\"City\")
    State = request.form(\"State\")
    Country = request.form(\"Country\")

    Set myConn = Server.CreateObject(\"ADODB.Connection\")
    myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/Samples.mdb\")

    SQLstmt = \"INSERT INTO Sample (Name,City,State,Country)\"
    SQLstmt = SQLstmt & \" VALUES (\"
    SQLstmt = SQLstmt & \"\'\" & Name & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & City & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & State & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Country & \"\'\"
    SQLstmt = SQLstmt & \")\"

    Set RS = myConn.execute(SQLstmt)

    myConn.Close
%>


Jeg har så prøvet at lave efterfølgende script, som ligner meget det andet, men her får jeg fejlen:
Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'

[Microsoft][ODBC Microsoft Access-driver] Antallet af forespørgselsværdier og destinationsfelter er ikke det samme.

I dette tilfælde skal felttypen i db\'en være tal
<%

    Tur_nr = request.form(\"Tur_nr\")
    Aborre = request.form(\"Aborre\")
    Barbe = request.form(\"Barbe\")
    Brasen = request.form(\"Brasen\")
    Doebel = request.form(\"Doebel\")
    Fuldskaellet_spejlkarpe = request.form(\"Fuldskaellet_spejlkarpe\")
    Gedde = request.form(\"Gedde\")
    Graeskarpe = request.form(\"Graeskarpe\")
    Guldkarusse = request.form(\"Guldkarusse\")
    Karusse = request.form(\"Karusse\")
    Koi_karpe = request.form(\"Koi_karpe\")
    Knude = request.form(\"Knude\")
    Malle = request.form(\"Malle\")
    Rimte = request.form(\"Rimte\")
    Rudskalle = request.form(\"Rudskalle\")
    Sandart = request.form(\"Sandart\")
    Skalle = request.form(\"Skalle\")
    Skaelkarpe = request.form(\"Skaelkarpe\")
    Spejlkarpe = request.form(\"Spejlkarpe\")
    Suder = request.form(\"Suder\")
    Aal = request.form(\"Aal\")
    Anden_art_1 = request.form(\"Anden_art_1\")
    Anden_art_antal_1 = request.form(\"Anden_art_antal_1\")
    Anden_art_2 = request.form(\"Anden_art_2\")
    Anden_art_antal_2 = request.form(\"Anden_art_antal_2\")
    Anden_art_3 = request.form(\"Anden_art_3\")
    Anden_art_antal_3 = request.form(\"Anden_art_antal_3\")
       
    Set myConn = Server.CreateObject(\"ADODB.Connection\")
    myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"../db/fisk.mdb\")


    SQLstmt = \"INSERT INTO Antal_fangster (Tur_nr,Aborre,Barbe,Brasen,Doebel,Fuldskaellet_spejlkarpe,Gedde,Graeskarpe,Guldkarusse,Karusse,Koi_karpe,Knude,Malle,Rimte,Rudskalle,Sandart,Skalle,Skaelkarpe,Spejlkarpe,Suder,Aal,Anden_art_1,Anden_art_antal_1,Anden_art_2,Anden_art_antal_2,Anden_art_3,Anden_art_antal_3)\"
    SQLstmt = SQLstmt & \" VALUES (\"
    SQLstmt = SQLstmt & \"\'\" & Tur_nr & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Aborre & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Barbe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Brasen & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Doebel & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Fuldskaellet_spejlkarpe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Gedde & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Graeskarpe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Guldkarusse & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Karusse & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Koi_karpe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Knude & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Malle & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Rimte & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Rudskalle & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Sandart & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Skalle & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Skaelkarpe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Spejlkarpe & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Suder & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Aal & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_1 & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_antal_1 & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_2 & \"\'\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_antal_2 & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_3 & \"\',\"
    SQLstmt = SQLstmt & \"\'\" & Anden_art_antal_3 & \"\'\"
    SQLstmt = SQLstmt & \")\"

Set RS = myConn.execute(SQLstmt)

myConn.Execute(SQLstmt)

myConn.Close
Set myConn = nothing
Set SQLstmt = nothing


%>

Jeg kan ikke forstå hvorfor jeg får denne fejl.
Nu har jeg talt felter 10000 gange og det er det samme.
Avatar billede eagleeye Praktikant
11. september 2001 - 22:32 #4
Alle felter som er defineret som tal skal ikke hvade \' omkring.
Det er kun felter som er defineret som tekst.
Avatar billede mekaniker Nybegynder
11. september 2001 - 22:37 #5
Jeg har prøvet at fjerne apostrofferne, men får den samme fejl.
scriptet jeg downloadet med tilhørende db virker
enda hvis jeg laver felttypen om til \"tal\" i databasen.

/mekaniker
Avatar billede eagleeye Praktikant
11. september 2001 - 22:43 #6
Er der nogle data variable som er tomme?
Avatar billede mekaniker Nybegynder
11. september 2001 - 22:46 #7
Jeg får samme fejl uanset om jeg udfylder alle inputfelterne eller kun nogle af dem.

/Mekaniker
Avatar billede torbenkoch Nybegynder
11. september 2001 - 22:52 #8
Prøv at lave en Response.Write(SQLstmt) lige inden din Execute, så kan du se, hvordan din SQL sætning ser ud. Post den evt. her, så er det noget nemmere at gennemskue, hvad der går galt.
Avatar billede mekaniker Nybegynder
11. september 2001 - 23:14 #9
Det var en god ide det med Response.Write(SQLstmt).
Jeg har fjernet variablen Tur_nr og den er også fjernet i sql sætningen.

Nu får jeg denne fejl:

INSERT INTO Antal_fangster (Aborre,Barbe,Brasen,Doebel,Fuldskaellet_spejlkarpe,Gedde,Graeskarpe,Guldkarusse,Karusse,Koi_karpe,Knude,Malle,Rimte,Rudskalle,Sandart,Skalle,Skaelkarpe,Spejlkarpe,Suder,Aal,Anden_art_1,Anden_art_antal_1,Anden_art_2,Anden_art_antal_2,Anden_art_3,Anden_art_antal_3) VALUES (\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'3\',\'3\',\'3\',\'3\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\')
Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e07\'

[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.

Jeg har prøvet at fjerne apostrofferne, men får så af vide at der er syntaks fej i sql sætningen.

En anden ting, er at dette er en db til at registrere fangster på mine fisketure, så er der noget jeg skal lave om hvis der skal tillades en null-værdi i felterne i db\'en.

På forhånd tak

/Mekaniker

Avatar billede nordclc Nybegynder
12. september 2001 - 08:04 #10
Din insert sætning er rigtig nok, men der må være nogle af dine felter i databasen som ikke er defineret som tekstfelter, og dermed ikke skal have apostroffer omkring! Du bør nok også definere \"antal fangst felterne\" som tal felter og resten som tekst felter!

I access skal du på hvert felt tillade null værdi (design mode på tabel, næsten nederst i egenskaber for feltet).

Men som sagt, den fejl du får nu (Datatyperne stemmer ikke overens i kriterieudtrykket.) skyldes at du har apostroffer omkring et ikke tekstfelt!

//Claus
Avatar billede eagleeye Praktikant
12. september 2001 - 08:12 #11
Hvis du har tal felter slal nu altså ikke havde \' omkring værdierne du indsætter.

Hvis et tal ikke er defineret så skal du selv sætte 0 ind.

if isNumeric(tal_variable) = false then tal_variable = 0
if isNumeric(tal_variable2) = false then tal_variable2 = 0
Avatar billede mekaniker Nybegynder
12. september 2001 - 10:20 #12
Alle felterne skal være tal undtagen følgende:
Anden_art_1
Anden_art_2
Anden_art_3

Til eagleeye:
Det med selv at sætte 0 ind, ved jeg ikke pm jeg har fattet helt.

Vil det ikke i mit tilfælde være følgende:

if isNumeric(Aborre) = false then Aborre = 0

osv......osv......osv.

Jeg kan desværre ikke prøve det nu, fordi jeg er på arbejde. Jeg vender tilbage i aften og fortæller om det virker.

/Mekaniker
Avatar billede mekaniker Nybegynder
17. september 2001 - 10:47 #13
Hej eagleeye
Mange tak for hjælpen, mit problem var helt sikkert at, talvariablerne ikke var defineret.

/Mekaniker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester