Herefter skal det så være muligt at lave ændring af ovenstående data, hvorefter rækken i tabellen skal opdateres. Selvom jeg ikke ændrer formatet på datoen får jeg dog her en fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][SQL Server]The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
Datoen er i tabellen gemt i formatet "datetime". Dette gør det nemt automatisk at få indsat dato og tid, når der oprettes nye inlæg, men giver altså udfordringer når jeg vil opdatere.
Jeg har prøvet at sikre mig at datoen der opdateres er gemt som en dato ved hjælp af CDATE, men dette hjælper heller ikke?
Hvordan sikrer jeg at man kan opdatere dato og tidspunkt?
arne_v >> Jeg er nok nød til at trække endnu en livline her. Hvordan er det du foreslår at jeg skal benytte prameters?
erikjacobsen >> Du har ret - Hvis jeg blot sikrer at formen er som du beskriver, fungerer det. Bare underligt, når jeg trækker datoen ud i et andet format.
Altså output format fra SQL: 26-06-2010 20:37:46 Input format til SQL: 2010-06-26 20:37:46
Gør det lidt mere besværligt at jeg skal skifte sådan frem og tilbage, og ikke "blot" kan smide output i et felt der kan redigeres, og så opdatere med hvad der måtte stå i feltet efterfølgende (forudsat at formatet overholdes)
<% ' open adParamInput = 1 adInteger = 3 adDate = 7 Set con = Server.CreateObject("ADODB.Connection") con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb;;" Set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = con ' lige ud af landevejen con.Execute "INSERT INTO params(id,tid) VALUES(1,'7-JUN-2005')" ' med kommando cmd.CommandText = "INSERT INTO params(id,tid) VALUES(2,'8-JUN-2005')" cmd.Execute ' med kommando og parametre 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 ' close Set cmd = Nothing Set con = Nothing %> OK
"Bare underligt, når jeg trækker datoen ud i et andet format." - jah, joh, det er bare MS der ikke har tænkt sig om. Det har vi vænnet os til.
Du kan trække et helt fast format ud fra databasen ved at bruge T-SQL funktionerne YEAR, MONTH, DAY osv. Dermed fjerner man muligheden for fejlfortolkninger.
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.