Du tænker på at opdatere eller indsætte datoer i databasen, ikke?
Det er lidt tricky, for du har to muligheder (mindst)
UPDATE tabel set dtmDato = '01-02-2005' WHERE felt = 34
Det kræver at du formaterer datoen som en tekststreng, der har et format som databasen forstår. Hvis jeg kører ovenstående på min server bliver datoen sat til 2. januar, og det var jo ikke meningen.
Derfor kan du bruge set dateformat, sådan (klar til ASP):
strSQL = "SET DATEFORMAT DMY; UPDATE tabel set dtmDato = '01-02-2005' WHERE felt = 34"
SET DATEFORMAT DMY fortæller at du har tænkt dig at nævne dato, måned, år (Date Month Year) i den rækkefølge.
Den anden mulighed er at bruge ADO, og så lave datoen klar i VBScript
jeg er ikke så god til det så du må undskylde at jeg skal have skåret det ud i pap :) - jeg afsætter 15 point mere så du får 30 jeg tænker på hvis jeg skal indsætte noget i mit smalldatetime eller mit datetime felt - hvordan skal min asp kode så se ud. jeg laver eks et inputfelt som viser brugeren hvordan formatet skal se ud: <input name="datatime" type="text" value="<%=Date()%>">
hvis jeg eksempelvis senere skal kunne sortere et udtræk på DateTime DESC hvordan skal asp koden oppe i feltet som jeg ligger i databasen så se ud ?
Først må du lige vise mig et eksempel på hvordan du plejer at gemme data i databasen, så kan jeg lettere skrive noget kode som du kan finde ud af.
Og så lyder det som om du tænker at det er ASP-kode der skal gemmes i databasen. Det er det ikke. Der skal gemmes tekst i tekstfelter, tal i talfelter og datoer i datofelter.
Datofelter er ret specielle, men du kan godt betragte dem som en slags tekstfelter, blot kan du kun gemme i feltet hvis det du prøver at sætte ind er en gyldig dato. Prøver du at sætte 31. feb 2004 ind i et datofelt, så giver det en fejl.
Ja, og hvordan vil du gøre det? Jeg går udfra at du allerede har fundet ud af at gemme i databasen, hvordan gør du det med et tekstfelt?
Er det her helt sort? Har du overhovedet gemt noget som helst i databasen? Er der noget kode du ikke vil vise mig?
Dette er mit bud på hvordan det kan gøres, men der en MASSE ting der skal på ploads for at det bliver sikkert. Ser dette bekendt ud?:
option explicit Dim Con, Com, Rec, ID
ID = 33 ' eller hvad det nu skal være
call openCon
Com.CommandText = "SELECT dtmDato FROM tabelNavn WHERE ID = " & ID Rec.Open Com, , 3, 3
if not Rec.BOF then Rec("dtmDato") = Cdate(Request.Form("dtmDato")) Rec.Update end if
Rec.Close call closeCon
Sub openCon Set Con = Server.CreateObject("ADODB.Connection") Con.Open = "<din connectionstring>" Set Com = Server.CreateObject("ADODB.Command") Com.ActiveConnection = objCon.Con Set Rec = Server.CreateObject("ADODB.RecordSet") end sub
Sub closeCon Set Rec = Nothing Set Com = Nothing Con.Close Set Con = Nothing end sub
her indsætter jeg 3 felter i databasen: (men igen med dato) <% ' *** Edit Operations: declare variables
Dim MM_editAction Dim MM_abortEdit Dim MM_editQuery Dim MM_editCmd
Dim MM_editConnection Dim MM_editTable Dim MM_editRedirectUrl Dim MM_editColumn Dim MM_recordId
Dim MM_fieldsStr Dim MM_columnsStr Dim MM_fields Dim MM_columns Dim MM_typeArray Dim MM_formVal Dim MM_delim Dim MM_altVal Dim MM_emptyVal Dim MM_i
MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME")) If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString) End If
' boolean to abort record edit MM_abortEdit = false
' query string to execute MM_editQuery = "" %> <% ' *** Insert Record: set variables
' create the MM_fields and MM_columns arrays MM_fields = Split(MM_fieldsStr, "|") MM_columns = Split(MM_columnsStr, "|")
' set the form values For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) Next
' append the query string to the redirect URL If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End If
End If %> <% ' *** Insert Record: construct a sql insert statement and execute it
Dim MM_tableValues Dim MM_dbValues
If (CStr(Request("MM_insert")) <> "") Then
' create the sql insert statement MM_tableValues = "" MM_dbValues = "" For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_formVal = MM_fields(MM_i+1) MM_typeArray = Split(MM_columns(MM_i+1),",") MM_delim = MM_typeArray(0) If (MM_delim = "none") Then MM_delim = "" MM_altVal = MM_typeArray(1) If (MM_altVal = "none") Then MM_altVal = "" MM_emptyVal = MM_typeArray(2) If (MM_emptyVal = "none") Then MM_emptyVal = "" If (MM_formVal = "") Then MM_formVal = MM_emptyVal Else If (MM_altVal <> "") Then MM_formVal = MM_altVal ElseIf (MM_delim = "'") Then ' escape quotes MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" Else MM_formVal = MM_delim + MM_formVal + MM_delim End If End If If (MM_i <> LBound(MM_fields)) Then MM_tableValues = MM_tableValues & "," MM_dbValues = MM_dbValues & "," End If MM_tableValues = MM_tableValues & MM_columns(MM_i) MM_dbValues = MM_dbValues & MM_formVal Next MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"
If (Not MM_abortEdit) Then ' execute the insert Set MM_editCmd = Server.CreateObject("ADODB.Command") MM_editCmd.ActiveConnection = MM_editConnection MM_editCmd.CommandText = MM_editQuery MM_editCmd.Execute MM_editCmd.ActiveConnection.Close
If (MM_editRedirectUrl <> "") Then Response.Redirect(MM_editRedirectUrl) End If End If
Ok, jeg tillader mig at gætte på at du bruger et eller andet program, Dreamweaver eller lignende, til at hjælpe dig. Det betyder sandsynligvis at du ikke har forstand på ASP/Databaser, at du ikke selv har skrevet scriptet herover, og at du heller ikke forstår ret meget af hvad der foregår i det.
Jeg må råde dig til at lære ASP for alvor. Jeg kan ikke hjælpe dig, for ovenstående er overdrevet kompliceret, og hvis vi begynder at pille i det bliver det bare HELT uoverskueligt.
Er der ikke en kategori med folk der arbejder på samme måde som dig, de kan måske hlælpe? Måske er der specielle metoder til at arbejde med datoer, indbygget i dit program.
MS SQL æder formatet: <%=Now()%> til felter med datatype 'smalldatetime' som bliver formatteret som: 04-01-2005 11:56:00
hvis det betyder at jeg kan sammenligne og sige eksempelvis større eller mindre end datoen så er det jo fint. så skal jeg bare formattere den så den ser rigtig ud når jeg viser den til brugeren
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.