Avatar billede kane Juniormester
03. marts 2005 - 09:31 Der er 29 kommentarer og
1 løsning

if noget findes så skriv den findes

jeg har en form hvor man kan gemme nogle ting, det virker også fint nok, men nu vil jeg gerne have hvis prodcode allerede findes skal den sige det, så der ikke kommer 2 af samme prodcoder.

  <%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From prodList"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
   

      rs.AddNew
      rs("prodcode") = Request.form("prodcode")
      rs("prodname") = Request.form("prodname")
      rs("proddesc") = Request.form("proddesc")
      rs("prodprice") = Request.form("prodprice")
        rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
%>
Avatar billede jokkejensen Novice
03. marts 2005 - 09:38 #1
er "prodcode" ikke primær nøgle ?? så skulle den jo ikke kunne gode det..
Avatar billede kane Juniormester
03. marts 2005 - 09:39 #2
nej det er den ikke og det skal den heller ikke være.
Avatar billede jokkejensen Novice
03. marts 2005 - 09:43 #3
okay, så må du ind og og lede efter prodcode før du ligger denne ind...

Altså først et DB kald med "Select * From prodList where prodcode =" & Request.form("prodcode")....

også
if(rs == null) // eller hvordan man nu tjekker om der findes noget i det recordset,kan ikke lige huske VB længere, men hvis der ikke er noget i recordsettet går du ind og rs.addNew...
Avatar billede kane Juniormester
03. marts 2005 - 09:54 #4
hmm den må jeg have lidt mere ud i pap (text)
Avatar billede busschou Praktikant
03. marts 2005 - 09:55 #5
det nemmeste er vel at rette feltet til unikt i access...
Avatar billede steffansteffan Nybegynder
03. marts 2005 - 09:57 #6
if not RS.EOF then
    response.write ("Findes allerede")
end if
Avatar billede kane Juniormester
03. marts 2005 - 10:01 #7
steffan ??

hvis jeg skriver en prodcode som findes får jeg en fejl.

De ønskede ændringer af tabellen blev ikke gennemført, fordi de ville give dublerede værdier i indekset, den primære nøgle eller relationen. Rediger dataene i det eller de felter, der indeholder dublerede data, fjern indekset, eller omdefiner indekset, så dublerede indtastninger tillades, og forsøg igen.
Avatar billede jokkejensen Novice
03. marts 2005 - 10:02 #8
<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From prodList where prodcode =" & Request.form("prodcode")    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
   
if RS.EOF then

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From prodList"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
      rs.AddNew
      rs("prodcode") = Request.form("prodcode")
      rs("prodname") = Request.form("prodname")
      rs("proddesc") = Request.form("proddesc")
      rs("prodprice") = Request.form("prodprice")
        rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
else
Response.Write("Findes alledere :)")
end if
%>
Avatar billede kane Juniormester
03. marts 2005 - 10:02 #9
den skal checke om den prodcode som kommer fra formen, findes, hvis den gør, så sig det.
Avatar billede jokkejensen Novice
03. marts 2005 - 10:03 #10
noget i den stil der.. jeg er ikke så skide go til VB
Avatar billede kane Juniormester
03. marts 2005 - 10:04 #11
Slut på sætning var ventet
/flamingo_asp/prodadd1.asp, line 24, column 81
strSQL = "Select * From prodList where prodcode =" & Request.form("prodcode") rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic


linie 24
strSQL = "Select * From prodList where prodcode =" & Request.form("prodcode")    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede jokkejensen Novice
03. marts 2005 - 10:06 #12
ja du skal nok lige klikke enter så den kommer ned på en ny linie....


strSQL = "Select * From prodList where prodcode =" & Request.form("prodcode")

rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede kane Juniormester
03. marts 2005 - 10:08 #13
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.
/flamingo_asp/prodadd1.asp, line 25

linie 25 er rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Avatar billede jokkejensen Novice
03. marts 2005 - 10:15 #14
ja nu står det 2 steder :) ... er prodcode et tal eller tekst ?
Avatar billede kane Juniormester
03. marts 2005 - 10:34 #15
tekst
Avatar billede jokkejensen Novice
03. marts 2005 - 10:36 #16
strSQL = "Select * From prodList where prodcode ='" & Request.form("prodcode") & "'"
Avatar billede kane Juniormester
03. marts 2005 - 10:39 #17
sådan ........nice
Avatar billede jokkejensen Novice
03. marts 2005 - 10:41 #18
dvs det virker ?
Avatar billede kane Juniormester
03. marts 2005 - 10:43 #19
jeg har den samme bare i delete, hvis jeg hæver point, er du så frisk på den også?
Avatar billede kane Juniormester
03. marts 2005 - 10:43 #20
ja, det gjorde
Avatar billede jokkejensen Novice
03. marts 2005 - 10:44 #21
kom bare med den her... sidder her kun for at fordrive tiden... fuck de points :).. men jeg er altså ikke skide godt til asp, arbejder mest med C# asp.net
Avatar billede kane Juniormester
03. marts 2005 - 10:46 #22
ok her kommer en prodcode fra en form, hvor efter den bliver slettet i den kode du ser her.
den skal så sige hvis den koden man har skrevet ikke findes.

<%
  Dim Conn, dbDelete, rs
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"    
    dbDelete= "DELETE from prodlist where prodcode = '" & (Request.Form("prodcode"))& "' "         
    Set rs = Conn.Execute(dbDelete)

%>
Avatar billede jokkejensen Novice
03. marts 2005 - 10:50 #23
hmmm vi gør det bare på samme lidt latterlige måde .. jeg ved nemlig ikke om rs. som en executenonquery i C# har en metode der returnerer rows affected. .... hold on..
Avatar billede jokkejensen Novice
03. marts 2005 - 10:51 #24
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From prodList where prodcode ='" & Request.form("prodcode")&"'"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
   
if RS.EOF then

  Dim Conn, dbDelete, rs
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"   
    dbDelete= "DELETE from prodlist where prodcode = '" & (Request.Form("prodcode"))& "' "         
    Set rs = Conn.Execute(dbDelete)

else
Response.Write("Findes ikke :)")
end if
%>
Avatar billede kane Juniormester
03. marts 2005 - 10:59 #25
tæt på

måtte smide disse i toppen

Const adOpenKeyset = 1
Const adLockOptimistic = 3
dim strSQL

men den gør det ommvendt, hvis den findes, skrive den "Findes ikke :)"
og hvis den ikke findes, så sletter den (ikke noget)
Avatar billede jokkejensen Novice
03. marts 2005 - 11:00 #26
skriv lige den nye kode så..
Avatar billede jokkejensen Novice
03. marts 2005 - 11:04 #27
<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
dim strSQL


Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "Select * From prodList where prodcode ='" & Request.form("prodcode")&"'"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic   
   
if RS.EOF then
Response.Write("Findes ikke :)") 
else
Dim Conn, dbDelete, rs
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../db.mdb") & ";UID=admin;PWD=;"   
    dbDelete= "DELETE from prodlist where prodcode = '" & (Request.Form("prodcode"))& "' "         
    Set rs = Conn.Execute(dbDelete)


end if
%>

ryd selv lidt op i det det :)
Avatar billede kane Juniormester
03. marts 2005 - 11:17 #28
yes yes nice.....virker
Avatar billede kane Juniormester
03. marts 2005 - 11:21 #29
takker for hjælpen
Avatar billede jokkejensen Novice
03. marts 2005 - 11:28 #30
så lidt :)
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