Avatar billede dino84 Nybegynder
26. december 2003 - 01:28 Der er 3 kommentarer og
1 løsning

Skriv fejl hvis tal går i minus.

Hey

Jeg har en formular hvor man kan skrive et antal som så trækkes fra i en tabel...

Men hvis man bliver ved med at udfylde formularen går den bare i minus..

Hvordan sætter man en stoppe for det...?

Den må på ingen måde komme under 0.

F.eks der står 3 i den tabel og der så er en der udfylder formularen med 5 skal der komme en fejl der siger det ikke kan lade sig gøre..

Og hvodan sætter man så en "fejl-tekst" ind hvis tabel'en står i 0?
Avatar billede fynbohans Nybegynder
26. december 2003 - 11:08 #1
Nu kender jeg ikke helt konstruktionen af din database, men følgende
skulle virke.

I egenskaberne for feltet du skriver dit nye beløb i [PRIS2] skriver du ved FørOpdatering og EfterOpdatering (Hændelsesprocedure):

Dim P2 As Variant
Private Sub PRIS2_AfterUpdate()
            If [DIFFERENCE] < 0 Then
              MsgBox " Forskellen må ikke blive mindre end 0"
              [PRIS2] = P2
              [PRIS2].SetFocus
            End If
End Sub

Private Sub PRIS2_BeforeUpdate(Cancel As Integer)
            P2 = [PRIS2]
End Sub
Avatar billede dino84 Nybegynder
26. december 2003 - 12:17 #2
Jeg har dette stykke kode hvor jeg trækker antal fra pladser...

MM_conn_STRING = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../database/bustur.mdb")
set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = MM_conn_STRING
cmd.CommandText = "UPDATE bustur SET pladser = pladser - " & Request.Form("antal") & " WHERE id = " & Request.Querystring("id")
cmd.CommandType = 1
cmd.CommandTimeout = 0
cmd.Prepared = true
cmd.Execute()

Den må så bare ikke kunne gå i minus nu...

Kan ikke lige helt se mig ud af din kode hvodan det skal sættes ind...
Avatar billede fynbohans Nybegynder
26. december 2003 - 12:40 #3
Jeg foreslår du laver et ekstra felt til udregningerne og bruger det
felt i din kode, hvor du nu har udregningerne. I eksemplet = [DIFFERENCE].
Avatar billede dino84 Nybegynder
28. december 2003 - 12:15 #4
Jeg har desværre ikke kunne bruge dit forslag da jeg ikke har kunne få det til at virke...

Men har fået denne løsning:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL1 = "Select * from Tabel where ID = " & Request("ID")
Set rs = Conn.Execute(strSQL1)

newPladser = CInt(rs("Kolonne")) - CInt(Request("Pladser"))

If newPladser < 1 Then
    Response.Write("Alle pladser er optaget!")
Else
    strSQL2 = "Update Tabel set Kolonne = '" & newPladser & "' where ID = " & Request("ID")
    Conn.Execute(strSQL2)
    Response.Write("Der er blevet booket " & Request("Pladser") & " pladser!")
End If
%>

Dette script trækker det tal man har indstastet på form-siden fra det tal der står i Kolonne. Kolonne findes i Tabel med ID = det id som ligger i Request.

Fx kunne form-siden se sådan ud:

<form action="asdasd.asp?id=18">
Pladser: <input type="text" name="Pladser" size="10"><br>
<input type="submit" value="Send">
</form>


Som jeg har fået til at virke...
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