14. februar 2005 - 09:47Der er
13 kommentarer og 1 løsning
Hjælp til sql og talberegning.
Hejsa. Jeg ville lige bikse en side sammen hvor jeg kunne gemme data for mine 2 biler og så beregne hvor langt de kørte på literen. Jeg er så løbet ind i lidt problemer med sql og beregning på tallene.
Min kode til at gemme i databasen ser således ud :
<% 'Dimension variables Dim adoCon 'Holds the Database Connection Object Dim rsAddComments 'Holds the recordset for the new record to be added Dim strSQL 'Holds the SQL query to query the database
'Fjerner mellemrum og specille tegn fra felterne. strBil = Trim(Replace(replace(Request.Form("bil"),"'",""),"<","<")) strKilomter = Trim(Replace(replace(Request.Form("kilometer"),"'",""),"<","<")) strLiter = Trim(Replace(replace(Request.Form("liter"),"'",""),"<","<"))
'Create an ADO connection object Set adoCon = Server.CreateObject("ADODB.Connection")
'Set an active connection to the Connection object using a DSN-less connection adoCon.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("bildata.mdb")
'Create an ADO recordset object Set rsAddComments = Server.CreateObject("ADODB.Recordset")
'Initialise the strSQL variable with an SQL statement to query the database strSQL = "SELECT * FROM bildata;"
'Set the cursor type we are using so we can navigate through the recordset rsAddComments.CursorType = 2
'Set the lock type so that the record is locked by ADO when it is updated rsAddComments.LockType = 3
'Open the recordset with the SQL query rsAddComments.Open strSQL, adoCon
'Tell the recordset we are adding a new record to it rsAddComments.AddNew
'Add a new record to the recordset rsAddComments.Fields("bil") = Strbil rsAddComments.Fields("kilometer") = Strkilomter rsAddComments.Fields("liter") = Strliter
'Write the updated recordset to the database rsAddComments.Update
'Reset server objects rsAddComments.Close Set rsAddComments = Nothing Set adoCon = Nothing
'Redirect to the guestbook.asp page Response.Redirect "graf3.asp" %>
Jeg ville jo så gerne have at den først finder den sidste kilomterindtastning for den bil der er valgt og kommer via request.form("bil") og herefter laver en beregning hvor den trækker det nye kilomtertal fra det gamle og divider med liter og herefter gemmer det tal i feltet "forbrug" i basen.
Har du en autonummer kolonne eller noget så man kan være sikker på man får den sidste kilometer indtastning alternativ kan man gøre sådan så den sortere efter kilometer kolonne.
Prøv at rette din SQL fra: strSQL = "SELECT * FROM bildata;"
Til dette: strSQL = "select top 1 * from bildata where bil = '" & strBil & "' order by int(kilometer) desc"
Samt tilføje en udregning og en kolonne hvor de nye data ligges ind:
Jeg har en autonummer der hedder id Gør det at det bliver nemmere ? jeg havde selv forstillet mig noget med max(id) men kunne ikke få syntaksen rigtig!
Nu virker det fint....Men resultatet er ikke helt som jeg foventer.
Hvis jeg nu skriver 150400 i kilometer og den i forvejen har 150000 i basen. Og liter er 37. Så skulle regnestykket være (150400 - 150000)/37 = 10.81 Men i basen er der nu gemt 1081
Hvorfor det ? Jeg kan godt se at tallet er der, men hvor er kommaet :D
Takker for hjælpen..... Dejligt at du gad hjælpe :D
Synes godt om
Ny brugerNybegynder
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.