Avatar billede celine Nybegynder
18. juli 2004 - 20:17 Der er 1 kommentar og
1 løsning

tjek om et felt i access er udfyldt

jeg er ved at lave et forum. Når brugeren stiller et sp gemmes dette i db. Når så administratoren skal svare vil jeg gerne være sikker på at han ikke kan komme til at svare på det samme spørgsmål to gange. Altså vil jeg gerne tjekke for om feltet "svar" i min db er udfyldt.
(når sp bliver besvaret gemmes opdateres tabellen og svaret gemmes sammen med sp.)

her er lidt kode

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<% option explicit %>
<% Response.Buffer = true %>
<!-- #include file ="connect.asp" -->
<!-- #include file ="adovbs.inc" -->

<%
Response.Expires = 0

dim svar
dim email
dim svaret
dim objRec
dim objConn
dim strSQL
dim titel
dim strConn
dim spoergsmol

email = Request.Form("email")
titel = Request.Form("titel")
svar = Request.Form("svar")
session("svar") = ""

function tjek_svar(svar)
    tjek_svar= false
        set strConn = Server.CreateObject("ADODB.connection")
        set objRec = Server.CreateObject("ADODB.recordset")
        strConn.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & strPlacering
        strSQL = "SELECT * from spoergsmol"
   
    with objRec
    .Open strSQL, strConn, adOpenForwardOnly, , adCmdText
        while not .EOF
        if .fields("svar") = session("svar") then
            tjek_svar = true       
    end if
        .moveNext
        wend
        .Close
    end with
set objRec = nothing
end function   

er_gemt
sub er_gemt
    if not (tjek_svar(svar)) then
            opret_svar
        else
            Response.Redirect("adm_sp_besvaret.asp")    
        end if
end sub

opret_svar
sub opret_svar
    set objConn = Server.CreateObject("ADODB.connection")
    objConn.open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & strPlacering
    strSQL = "UPDATE spoergsmol SET svar = '" & svar & "' WHERE email = '" & email & "';"
    set objRec = objConn.execute(strSQL)
    Response.Redirect("adm_forside.asp")
   
end sub

objConn.close
set objConn = nothing
%>
Avatar billede ambrass Nybegynder
20. september 2004 - 13:48 #1
Du kunne jo ændre din forespørgsel ned i basen til kun at returnere posten såfremt admin ikke har svaret på den endnu. På denne måde sparer du en roundtrip og heflen frem og tilbage med et svar som måske allerede er ikke skal gemmes, fordi admin HAR svaret.
Tjek ned i din base med:

SELECT * FROM dinTabel WHERE svar=""
eller
SELECT * FROM dinTabel WHERE svar is null

Så kan du tjekke på rs.EOF om der returneres en post, hvis ja, så skal svaret gemmes. Ellers findes der allerede et svar og du kan ignorere svaret.
Avatar billede celine Nybegynder
22. oktober 2004 - 11:10 #2
Jeg har imellem tiden fundet en anden løsning men jeg vil da afprøve dit forslag.
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
Kurser inden for grundlæggende programmering

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