14. marts 2011 - 22:03
Der er
22 kommentarer og 1 løsning
Dato kommer ikke med i databasen ved SQL Insert
Hey alle ... Jeg er ved at lave en række RS.update om til nogle mere reelle SQL sætninger. Men af en eller anden årsag kan jeg ikke få den til at acceptere mine datoer. Ingen fejlmeddelelser, men databasen registrerer simpelthen ikke inputtet til datofeltet. Min SQL ser således ud: sql = "INSERT INTO tblOrdreStatusHistorik (dato, ordreId, ordreStatus) " & _ "VALUES (" & _ date() & ", " & _ Request.Form("ordreId") & ", " & _ "'" & Request.Form("ordreStatus") & "'" & _ ")" Nogen der kan sige, hvad der er galt?
Annonceindlæg fra Computerworld it-jobbank
14. marts 2011 - 22:21
#1
Det er nok dato formatet som er forkert. To muligheder: - find ud af hvilket dato format din database accepterer og formater din Date() til det format - gør det ordentligt og brug parameters
14. marts 2011 - 22:43
#2
Hey Arne Godt at høre fra dig igen. Så for jeg mulighed for at kaste nogle point din vej, nu hvor jeg snød dig sidste gang :-) Hvad betyder det sidste ... brug parameters. Det må du lige forklare en gang. Vil jo helst gøre det på den rigtige måde ...
14. marts 2011 - 23:00
#3
15. marts 2011 - 07:32
#4
Ok ... Tak ... Ser på deti aften
15. marts 2011 - 12:58
#5
OK ... fik læst artiklen, som er meget interessant. Tror jeg vil prøve anvende parametre og command til mine SQL input. Ser om jeg kan få det til at virke i aften. Men nu viser artiklen jo kun eksempler med tekststrenge og siger ikke noget om datoformater. Har jeg ret i, at jeg skal justere i parameteren her: cmd.Parameters.Append cmd.CreateParameter("@brugernavn", _ adVarChar, adParamInput, 20, brugernavn) Gætter mig til at adVarChar skal erstattes med noget andet?
15. marts 2011 - 14:09
#6
Ja. Snippet: cmd.CommandText = "INSERT INTO params(id,tid) VALUES(@id,@tid)" cmd.Parameters.Append(cmd.CreateParameter("@id", adInteger, adParamInput)) cmd.Parameters.Append(cmd.CreateParameter("@tid", adDate, adParamInput)) cmd.Parameters("@id") = 3 cmd.Parameters("@tid") = CDate("9-JUN-2005") cmd.Execute
15. marts 2011 - 14:09
#7
adParamInput = 1 adInteger = 3 adDate = 7
15. marts 2011 - 14:28
#8
Jeg tror jeg forstår, selv om du skriver det lidt anderledes end i artiklen. Men kan ikke gennemskue hvad du mener med: adParamInput = 1 adInteger = 3 adDate = 7 ???
15. marts 2011 - 21:58
#9
Arghhh ... kan ikke få det til at virke Arne. Har prøvet både med din kode og med følgende kode, som er taget fra artiklen og justeret til mit brug: 'Først opdateres ordreStatus i tblOrdrer sql = "UPDATE tblOrdrer SET " & _ "ordreStatus='" & Request("ordreStatus") & "' " & _ "WHERE ordreId=" & request("ordreID") set conn = CreateObject("ADODB.Connection") conn.open cString conn.execute sql, , 129 'Dernæst opdateres ordreStatusHistorik dato = date() ordreId = Request.Form("ordreId") ordreStatus = request.form("ordreStatus") sql = "INSERT INTO tblOrdreStatusHistorik (dato, ordreId, ordreStatus) VALUES(?,?,?)" set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = conn cmd.CommandText = sql cmd.CommandType = adCmdText cmd.Parameters.Append cmd.CreateParameter("@dato", _ adDate, adParamInput, 20, kodeord) cmd.Parameters.Append cmd.CreateParameter("@ordreId", _ adInteger, adParamInput, 20, brugernavn) cmd.Parameters.Append cmd.CreateParameter("@ordreStatus", _ adVarChar, adParamInput, 255, email) Får fejlen ADODB.Command error '800a0bb9' Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. /admin/fakturaoversigt-vis-detaljer.asp, line 22 Linje 22: cmd.CommandType = adCmdText Er det fordi, jeg har den update af ordreStatus i tblOrdrer først?
16. marts 2011 - 03:23
#10
adParamInput = 1 adInteger = 3 adDate = 7 definerer bare de værdier som skal bruges senere
16. marts 2011 - 08:40
#11
Kan du fortælle mig, hvorfor min kode ikke virker?
16. marts 2011 - 15:38
#12
cmd.Parameters.Append cmd.CreateParameter("@dato", _ adDate, adParamInput, 20, kodeord) ser noget suspekt ud. dato <> kodeord
16. marts 2011 - 20:08
#13
Samme fejlmeddelelse med: sql = "INSERT INTO tblOrdreStatusHistorik (dato, ordreId, ordreStatus) VALUES(?,?,?)" set cmd = Server.CreateObject("ADODB.Command") set cmd.ActiveConnection = conn cmd.CommandText = sql cmd.CommandType = adCmdText cmd.Parameters.Append cmd.CreateParameter("@dato", _ adDate, adParamInput, 20, dato) cmd.Parameters.Append cmd.CreateParameter("@ordreId", _ adInteger, adParamInput, 20, ordreId) cmd.Parameters.Append cmd.CreateParameter("@ordreStatus", _ adVarChar, adParamInput, 255, ordreStatus)
16. marts 2011 - 20:28
#14
Hvad er dato?
16. marts 2011 - 20:48
#15
Dato bliver sat dato = date() Lige ovenfor sql opbygningen ...
16. marts 2011 - 22:38
#16
Jeg er ved at blive vanvittig af det her. Nu har jeg snart prøvet alt. Også været tilbage til den oprindelige sql og prøvet at indsætte med forskellige datoformater ... intet virker. Sjovt nok havde jeg ikke problemer med at indsætte datoer dengang jeg brugte RS.update ... så hvorfor giver det pludselig problemer med SQL UPDATE, når jeg er på samme server og webhotel?
20. marts 2011 - 19:03
#17
Så fik jeg med lidt hjælpe fra en anden tråd min oprindelige SQL UPDATE til at virke. Datolinjen ser nu således ud: "'" & year(date()) & "-" & month(date()) & "-" & day(date()) & "', " & _ Egentlig ville jeg egentlig gerne have det til at virke med parametre, da det åbenbart er mere sikkert og korrekt ... men lad nu det ligge. arne_v ... lægger du ikke lige et svar. Jeg skylder dig jo nogle point fra sidste gang, hvor jeg fik snydt dig. Så kan du passende få dem herfra ...
20. marts 2011 - 19:04
#18
... hvis det er svært at se, så er den grundlæggende forskel i øvrigt en apostrof før og efter datoen ...
21. marts 2011 - 01:33
#19
Med hensyn til parameter fejlen, så ville jeg ikke angive felt længde til integer og date værdier. Og du skal naturligvis sikre dig at ad konstanterne er defineret. Så skal det virke.
21. marts 2011 - 01:33
#20
og et svar
21. marts 2011 - 01:34
#21
rs update er noget tricky noget
21. marts 2011 - 11:48
#22
Kan man bare udelade felt længde sådan her? cmd.Parameters.Append cmd.CreateParameter("@dato", _ adDate, adParamInput, dato) cmd.Parameters.Append cmd.CreateParameter("@ordreId", _ adInteger, adParamInput, ordreId) Eller skal der så være en tom plads som her? cmd.Parameters.Append cmd.CreateParameter("@dato", _ adDate, adParamInput, , dato) cmd.Parameters.Append cmd.CreateParameter("@ordreId", _ adInteger, adParamInput, , ordreId) Virker parametermetoden kun hvis man definerer konstanterne? Bare rolig ... jeg er gået helt bort fra rs.update i alle mine filer. Nu er de lavet som almindelige SQL UPDATE.
27. marts 2011 - 03:14
#23
Se #6 omkring hvordan man definerer parameteren et sted og saetter vaerdien et andet sted.
Kurser inden for grundlæggende programmering