Avatar billede md_craig Nybegynder
11. oktober 2003 - 12:57 Der er 8 kommentarer og
2 løsninger

SQL datatyper mod DB input ?

Jeg har lidt problemer med mine SQL sætninger mod en Access Database... jeg får fejlen :

No Value given for one or more parameters...

Dette burde indikere at der er nogle ting som mangler i min SQL, altså der er værdier jeg ikke har givet... Men jeg kan ikke lige se hvilke det skulle være...

SQL mm. kommer lige om 5 sec
Avatar billede md_craig Nybegynder
11. oktober 2003 - 12:58 #1
SQL = "INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, "
    SQL = SQL & "Forfatter, IP, BrugerNyhed, VisesAltid) VALUES("
    SQL = SQL & "'" & Request.Form("Overskrift") & "', "
    SQL = SQL & "'" & Request.Form("Indhold") & "', "
    SQL = SQL & "Date(), "
    SQL = SQL & FraDato & ", "
    SQL = SQL & TilDato & ", "
    SQL = SQL & "'" & Forfatter & "', "
    SQL = SQL & "'" & Request.ServerVariables("Remote_ADDR") & "', "
    SQL = SQL & "" & BrugerNyhed & ", "
    SQL = SQL & "" & VisesAltid & ");"
Avatar billede md_craig Nybegynder
11. oktober 2003 - 12:58 #2
INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, Forfatter, IP, BrugerNyhed, VisesAltid) VALUES('test', 'test', Date(), date(), date(), 'Admin', '192.168.1.54', Sand, Sand);
Avatar billede sjap Praktikant
11. oktober 2003 - 16:07 #3
Jeg antager, at du har værdier i variablerne FraDato, TilDato, Forfatter, BrugerNyhed og VisesAltid. De der request kender jeg ikke, så dem ved jeg ikke hvordan virker.

Der kan være problemer med datoer. hvis det er tilfældet, så prøv at skrive:

    SQL = SQL & Date(), #"
    SQL = SQL & FraDato & "#, #"
    SQL = SQL & TilDato & "#, "
Avatar billede terry Ekspert
11. oktober 2003 - 20:25 #4
INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, Forfatter, IP, BrugerNyhed, VisesAltid) VALUES('test', 'test', " & Date() & ", " & date() & ", " & date() & ", 'Admin', '192.168.1.54', 'Sand', 'Sand');
Avatar billede md_craig Nybegynder
11. oktober 2003 - 21:51 #5
terry >>> Der var du vist ikke for skarp...

Den sætning du er bbegyndt at rette i er den der ekxekveres... og hvis du har " & Date() & " så går den 100% AMOK...

-Måske jeg lige skulle oplyse datatyper... det kom jeg jo lige i tanke om...

Overskrift: Text/memo
Indhold: Text/memo
OprettelsesDato: Dato - Short
VisesFraDato: Dato - Short
VisesTilDato: Dato - Short
Forfatter: Text/Memo
IP: Text/Memo
BrugerNyhed: Boolean
VisesAltid: Boolean
Avatar billede terry Ekspert
12. oktober 2003 - 09:50 #6
md_craig>Well the reason why I maybe wasnt as "skarp" as you had hoped for is that I have a feeling that this question is intended for an ASP (web) solution, so the way an SQL is buildt may differ from Access's VBA!
I dont know if there is a function date() in ASP, so you are going to have to replace all the places I have used date() with what ever alternative there is in ASP. And I would NEVER have guessed that sand was aboolean value either.

INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, Forfatter, IP, BrugerNyhed, VisesAltid) VALUES('test', 'test', " & Date() & ", " & date() & ", " & date() & ", 'Admin', '192.168.1.54', -1, -1);

Other than that its up to you!
Avatar billede terry Ekspert
12. oktober 2003 - 09:52 #7
You might also try

INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, Forfatter, IP, BrugerNyhed, VisesAltid) VALUES('test', 'test', date(), date(), date() , 'Admin', '192.168.1.54', -1, -1);
Avatar billede md_craig Nybegynder
12. oktober 2003 - 10:20 #8
terry >>> Hmmm... ikke dansk ??? men kan du forstå dansk ??

Well forklare på dansk først så, så må du lige sige til hvis det er jeg skal oversætte...

Ang den SQL du bliver ved med at rette i, så er det den der exekveres...

DVS. at der er ASP ude af billedet.. Derfor er " &  & " ikke noget der skal ind der, med andre ord, jeg her fromet min SQL, så har jeg Udskrevet den... da det ofte er en god måde at finde fejl på...

Ang det med Boolean, så er Sand og Falsk ikke noget jeg bestemmer, da de værdier jeg faktisk smider i fra min VBScript er True og False,

Så hvis du skal begynde at lege med en af SQL sætningerne er det denne:

SQL = "INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, "
    SQL = SQL & "Forfatter, IP, BrugerNyhed, VisesAltid) VALUES("
    SQL = SQL & "'" & Request.Form("Overskrift") & "', "
    SQL = SQL & "'" & Request.Form("Indhold") & "', "
    SQL = SQL & "Date(), "
    SQL = SQL & FraDato & ", "
    SQL = SQL & TilDato & ", "
    SQL = SQL & "'" & Forfatter & "', "
    SQL = SQL & "'" & Request.ServerVariables("Remote_ADDR") & "', "
    SQL = SQL & "" & BrugerNyhed & ", "
    SQL = SQL & "" & VisesAltid & ");"

Det er der jeg bygger min SQL sætning... desunde er det irellevant om du tilgår din database fra Java, ASP, C++ eller VBA... det er samme komandoer, da det er database bestemt... men når jeg så får formet min SQL, så er det den kommer til at se således ud:

INSERT INTO Nyheder (Overskrift, Indhold, OprettelsesDato, VisesFraDato, VisesTilDato, Forfatter, IP, BrugerNyhed, VisesAltid) VALUES('test', 'test', " & Date() & ", " & date() & ", " & date() & ", 'Admin', '192.168.1.54', 'Sand', 'Sand'); det er altså det der afvikles, det er det jeg køre en CN.Execute på... (Connection.Execute)

Men sjovt nok hentyder fejlen stadig til at der mangler noget i min SQL sætning... men jeg kan ikke lige selv finde fejlen...

Nu håber jeg så du kan forstå det på dansk...
Avatar billede terry Ekspert
12. oktober 2003 - 10:53 #9
md_craig>I understand danish almost perfectly so that isnt the problem!
This is my last attempt at this, after that its up to you. I'm not going to use my time discussing what is relevant or not!

The error "No Value given for one or more parameters..." indicates that you are not including the values for one or more fields, but then you are already aware of that. So these are my suggestions even though they may NOT seem related to the error.

Check your field names.
Check the data types.
Make sure that any fields which are compulsory ARE included in the SQL.
Memo fields may also have something to do with your probem.

If possible copy the SQL into Access query builder and see what you get there!

Thats it, have a great day :o)

1:
Avatar billede md_craig Nybegynder
21. oktober 2003 - 08:42 #10
terry >>>

Selv om du var "helt" ved siden af, så var du alligevel tæt på...
Istedet for at have mine Booleans som Booleans imit ASP, så kunne jeg bare have dem som Strings... dette er Databasen lige glad med da den slet ikke vil opfatte dette... så nu kommer der til at stå True eller False i min SQL, og det har åbenbart været der fejlen lå, den har ikke kunne finde ud af Sand og Falsk... som ASP selv oversatte det til...

Men fordi at du på måde var lidt tæt på i din første besvarelse, så får du lige lidt points... men ikke dem alle
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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