Avatar billede sth Novice
28. december 2000 - 23:58 Der er 26 kommentarer og
1 løsning

Hvis findes ................

Jeg har et problem med denne kode:
Case \"Del\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products\"
Set rs = Conn.Execute (SQL1)
Response.Write Session(\"categoryID\")
Response.Write rs(\"ccategory\")


Do While Not rs.EOF or rs.BOF
rs.movenext


if rs(\"ccategory\") = Session(\"categoryID\") then
Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%

loop
else    

SqlStr = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
conntemp.Execute (SqlStr)
conntemp.Close
Set conntemp = Nothing
response.redirect \"kategoriform.asp\"
end if



som i kan se så har jeg fat i en Session, Session(\"categoryID\") , hvis værdien af denne Session er den samme som det der bliver slået på i Conn.Execute (SQL1), så må den ikke slettes, elles må den godt.

koden se ud tilat være rigtig, dog er det et problem at jeg har en IF-setning inde i en loop, hvordan løses dette ?
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:01 #1
Du kan ikke  lave

do

If ...

loop

else

end if

det dur ikke.
Avatar billede sth Novice
29. december 2000 - 00:04 #2
Ja det var jo også det jeg var kommet frem til, men hvad gør man så ? mit problem er at jeg ikke 2må\" slette hvis den samme findes i en anden tabel, åååhhhh kan man forstå dette ?
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:06 #3
hvad med: ?

Do While Not rs.EOF or rs.BOF
    if rs(\"ccategory\") = Session(\"categoryID\") then
        Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%
    else   
        SqlStr = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
        conntemp.Execute (SqlStr)
        conntemp.Close
        Set conntemp = Nothing
        response.redirect \"kategoriform.asp\"
    end if
   
    rs.movenext
Loop
Avatar billede sth Novice
29. december 2000 - 00:07 #4
jeg prøver lige
er straks tilbage.
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:08 #5
nææ vent!!
Avatar billede sth Novice
29. december 2000 - 00:09 #6
jeg fik denne fejl:
Der opstod en Microsoft VBScript-kørselsfejl fejl \'800a01a8\'

Et objekt er obligatorisk: \'\'

/eposter/kategoriform.asp, linje 172


linie 172 er:Do While Not rs.EOF or rs.BOF

Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:11 #7
Du skal lige huske at have dit RS med ..

Do Until (rs.EOF or rs.BOF)
    if rs(\"ccategory\") = Session(\"categoryID\") then
        Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%
        intDel = 1
        Exit Do
    end if
   
    rs.movenext
Loop

If intDel = 0 then
    SqlStr = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute (SqlStr)
    conntemp.Close
    Set conntemp = Nothing
    response.redirect \"kategoriform.asp\"
End If
Avatar billede sth Novice
29. december 2000 - 00:11 #8
jeg havde lige glemt :
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products\"
Set rs = Conn.Execute (SQL1)



så nu ser min kode sådan ud:

Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products\"
Set rs = Conn.Execute (SQL1)

Do While Not rs.EOF or rs.BOF
    if rs(\"ccategory\") = Session(\"categoryID\") then
        Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%
    else   
        SqlStr = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
        conntemp.Execute (SqlStr)
        conntemp.Close
        Set conntemp = Nothing
        response.redirect \"kategoriform.asp\"
    end if
   
    rs.movenext
Loop



MEN jeg kan få lov at slette selv om den findes !
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:13 #9
prøv at bruge den jeg lige har posted..
Avatar billede sth Novice
29. december 2000 - 00:17 #10
ja ok jeg havde ikkem se at du havde skrevet igen ,
men det var ikke løsningen, koden se nu sådan ud:

Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products\"
Set rs = Conn.Execute (SQL1)

Do Until (rs.EOF or rs.BOF)
    if rs(\"ccategory\") = Session(\"categoryID\") then
        Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%
        intDel = 1
        Exit Do
    end if
   
    rs.movenext
Loop

If intDel = 0 then
    SqlStr = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute (SqlStr)
    conntemp.Close
    Set conntemp = Nothing
    response.redirect \"kategoriform.asp\"
End If
Avatar billede sth Novice
29. december 2000 - 00:25 #11
Er du gået i seng tdaugaard  ? eller er du bare tømt for idér ?

Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:27 #12
sorry .. jeg havde problemer med min forbindelse..
Avatar billede sth Novice
29. december 2000 - 00:28 #13
ok har du en ny idé ?

Avatar billede sth Novice
29. december 2000 - 00:31 #14
efter hvad jeg kan se så bliver \"intDel\" ikke sat til \"1\" hvis den findes !
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:36 #15
Ja...  det kan faktisk gøres med meget lidt kode nu jeg tænker mig om.
jeg laver lige noget der burde virke
Avatar billede sth Novice
29. december 2000 - 00:38 #16
lyder godt

Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:42 #17
<%
Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products WHERE ccategory=\" & Session(\"categoryID\") & \";\"
Set rs = Conn.Execute(SQL1)

If Not (rs.EOF or rs.BOF) Then
    Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"
%>
<a href=\"ny.asp\" target=\"TOC\">Tilbage til Vedligehold</a>
<%
Else
    strSQL = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute(strSQL)
    conntemp.Close
    Set conntemp = Nothing
   
    response.redirect \"kategoriform.asp\"
End If
%>
Avatar billede sth Novice
29. december 2000 - 00:50 #18
UHA nu er vi ved at være der !!

Det virker stort set, men jeg får denne fejl:
kan ikke slette den da kategorien indgår i en varelinie !
Tilbage til Vedligehold
ADODB.Recordset fejl \'800a0cc1\'

Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal.

/eposter/kategoriform.asp, linje 212


det kunne se ud til at jeg ikke får lov til at kalde ny.asp
Avatar billede tdaugaard Nybegynder
29. december 2000 - 00:55 #19
hvad er linierne omkring 212 ?
Avatar billede sth Novice
29. december 2000 - 00:57 #20
koden  er nu:
Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products WHERE ccategory=\" & Session(\"categoryID\") & \";\"
Set rs = Conn.Execute(SQL1)

If Not (rs.EOF or rs.BOF) Then
    Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"

     

%>

<BR>
<a href=\"ny.asp\">Tilbage til Vedligehold</a>


<%
Else
    strSQL = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute(strSQL)
    conntemp.Close
    Set conntemp = Nothing
   
    response.redirect \"kategoriform.asp\"
End If



Case \"Fromlist\"
Session(\"CurRec\") = 1
SqlStr1 = \"SELECT Count(categoryID) As TotalCount From categories;\"
Set Rs1 = conntemp.Execute(SqlStr1)
Session(\"NumOfRecs\") = Rs1(\"TotalCount\")
Rs1.Close
Set Rs1 = Nothing
SqlStr = \"SELECT * FROM categories;\"
Set rs = conntemp.Execute(SqlStr)
rs.MoveFirst
While Trim(Session(\"categoryID\")) <> Trim(CStr(rs(\"categoryID\")))
  Session(\"CurRec\") = Session(\"CurRec\") + 1
  rs.MoveNext
Wend
End Select

linie 212 er:  Session(\"categoryID\") = server.Urlencode(rs(\"categoryID\"))
Avatar billede sth Novice
29. december 2000 - 00:59 #21
det kunne altså se ud til at programmet forsætter ned i en ny case !
Avatar billede sth Novice
29. december 2000 - 01:01 #22
det var noget sluder jeg fik skrevet:
koden er Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products WHERE ccategory=\" & Session(\"categoryID\") & \";\"
Set rs = Conn.Execute(SQL1)

If Not (rs.EOF or rs.BOF) Then
    Response.Write \"kan ikke slette den da kategorien indgår i en varelinie ! \"

     

%>

<BR>
<a href=\"ny.asp\">Tilbage til Vedligehold</a>


<%
Else
    strSQL = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute(strSQL)
    conntemp.Close
    Set conntemp = Nothing
 

    response.redirect \"kategoriform.asp\"
End If


Case \"Fromlist\"
Session(\"CurRec\") = 1
SqlStr1 = \"SELECT Count(categoryID) As TotalCount From categories;\"
Set Rs1 = conntemp.Execute(SqlStr1)
Session(\"NumOfRecs\") = Rs1(\"TotalCount\")
Rs1.Close
Set Rs1 = Nothing
SqlStr = \"SELECT * FROM categories;\"
Set rs = conntemp.Execute(SqlStr)
rs.MoveFirst
While Trim(Session(\"categoryID\")) <> Trim(CStr(rs(\"categoryID\")))
  Session(\"CurRec\") = Session(\"CurRec\") + 1
  rs.MoveNext
Wend
End Select

If cmd <> \"New\" And cmd<>\"Copy\" Then
  Session(\"categoryID\") = server.Urlencode(rs(\"categoryID\"))
Session(\"catdescription\") = FixDbField(rs(\"catdescription\"))
rs.Close
Set rs = Nothing
End if
If cmd=\"New\" Then
  Session(\"categoryID\") = \"\"
  Session(\"catdescription\") = \"\"
End If
conntemp.Close
Set conntemp = Nothing
%>

og den linie der giver fejl er : Session(\"categoryID\") = server.Urlencode(rs(\"categoryID\"))
Avatar billede sth Novice
29. december 2000 - 01:06 #23
det virker nu efter at jeg har rettet lidt i din kode, så du få lige dine point og tak for hjælpen.

Kan i alle her på Ekspeten have et godt nyt år.

mvh sth
Avatar billede tdaugaard Nybegynder
29. december 2000 - 01:07 #24
Jamen er det ikke under Case \"Fromlist\" ?
Avatar billede sth Novice
29. december 2000 - 01:07 #25
nå ja koden blev:
Case \"Del\"
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"admin/scart.mdb\")
SQL1 = \"SELECT * FROM products WHERE ccategory=\" & Session(\"categoryID\") & \";\"
Set rs = Conn.Execute(SQL1)

If Not (rs.EOF or rs.BOF) Then
    Response.Write \"kan ikke slette dennne kategori, da den indgår i en varelinie ! \"

      cmd=\"slet2\"

%>

<BR>



<%
Else
    strSQL = \"DELETE FROM categories WHERE categoryID=\"+ Session(\"categoryID\")+ \";\"
    conntemp.Execute(strSQL)
    conntemp.Close
    Set conntemp = Nothing
 

    response.redirect \"kategoriform.asp\"
End If


Case \"Fromlist\"
Session(\"CurRec\") = 1
SqlStr1 = \"SELECT Count(categoryID) As TotalCount From categories;\"
Set Rs1 = conntemp.Execute(SqlStr1)
Session(\"NumOfRecs\") = Rs1(\"TotalCount\")
Rs1.Close
Set Rs1 = Nothing
SqlStr = \"SELECT * FROM categories;\"
Set rs = conntemp.Execute(SqlStr)
rs.MoveFirst
While Trim(Session(\"categoryID\")) <> Trim(CStr(rs(\"categoryID\")))
  Session(\"CurRec\") = Session(\"CurRec\") + 1
  rs.MoveNext
Wend
End Select

If cmd <> \"New\" And cmd<>\"Copy\" And cmd<>\"slet2\" Then
  Session(\"categoryID\") = server.Urlencode(rs(\"categoryID\"))
Session(\"catdescription\") = FixDbField(rs(\"catdescription\"))
rs.Close
Set rs = Nothing
End if
If cmd=\"New\" Then
  Session(\"categoryID\") = \"\"
  Session(\"catdescription\") = \"\"
End If
conntemp.Close
Set conntemp = Not
Avatar billede sth Novice
29. december 2000 - 01:14 #26
nej det er under
If cmd <> \"New\" And cmd<>\"Copy\" And cmd<>\"slet2\" Then
  Session(\"categoryID\") = server.Urlencode(rs(\"categoryID\"))
Session(\"catdescription\") = FixDbField(rs(\"catdescription\"))
rs.Close
Set rs = Nothing
End if
If cmd=\"New\" Then
  Session(\"categoryID\") = \"\"
  Session(\"catdescription\") = \"\"
End If
conntemp.Close
Set conntemp = Not

her har jeg tilføjet And cmd<>\"slet2\"  og skrevet cmd=\"slet2\"  under case \"del\"

jeg kan ikke lige sige hvorfor det virker men det gør det ?
Avatar billede tdaugaard Nybegynder
29. december 2000 - 01:14 #27
så det virker nu ? fint :-)
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