03. december 2004 - 11:29Der er
61 kommentarer og 1 løsning
Problem med unikke IDer i database
Hej Eksperter,
Jeg er løbet på et problem som jeg håber nogle af jer kan være med til at hjælpe med at få løst.
Mit problem består i, at jeg har en tabel i min database som hedder xxx. I denne tabel har jeg ID | IDref Hvor id'et er et unik id for den enkelte menu, og hvis det er en underside så står der i IDRef hvilken side der er "modersiden" til denne eks.:
ID | IdRef 1 0 2 0 3 0 4 2 ( dette er en underside til ID 2) 5 4 ( dette er så en underside til ID4)
Mit problem er så at jeg ønsker at duplikere alt dette i denne tabel, det går såmend også fint problemet er bare at alle mine IdRef ikke kommer til at pege korrekt, for der bliver jo oprettet et nyt ID til posten og så er RefID jo ikke længere korrekt.
Jeg tror egentlig jeg ville gøre sådan her i stedet...
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA'" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN'" set rs2Items = conn.execute(sql) while not rs2Items.eof OR rs2.Items.bof sql = "UPDATE xxx SET idRef = (id+idRef) where id = " & rs2Items("id") conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Jeg er ret sikker på det vil virke i hvert fald... Som du kan se så bliver der foretaget en redirect, det er blot for at sikre at databasen er opdateret.. Er ikke sikker på det virker uden i hvert fald...! Men prøv, og så se om den melder fejl eller om det virker...!
en lille brøler i min update... Den skal selvfølgelig kun ligge det første id til fra de nye koder...!
sådan her skal det se ud skulle jeg mene..:! Men update delen ligger det første id til, altså det der svarer til 1 i den oprindelige tabel, til det tal der er refId...
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) addId = rs2Items("id") while not rs2Items.eof OR rs2.Items.bof sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where id = " & rs2Items("id") conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) 'addId = rs2Items("id") while not rs2Items.eof OR rs2.Items.bof 'sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where id = " & rs2Items("id") 'conn.execute(sql) response.write rs2Items("id") & vbtab & rs2Items("idRef") & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Prøv lige det her engang, og vis hvad den skriver..!
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof //sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') //conn.execute(sql) response.write rsItems("idRef") & vbtab & rsItems("id") & "<br>" rsItems.movenext wend response.end response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) 'addId = rs2Items("id") while not rs2Items.eof OR rs2.Items.bof 'sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where id = " & rs2Items("id") 'conn.execute(sql) response.write rs2Items("id") & vbtab & rs2Items("idRef") & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) addId = rs2Items("id") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where id = " & rs2Items("id") conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Sys godt nok det er en mærkelig fejl den du får der...
kan ikke helt gennemskue hvorfor den skulle være null...
En lille test...
Prøv det her i stedet så..
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) addId = rs2Items("id") response.write addId & "<br>" while not rs2Items.eof OR rs2Items.bof 'sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where id = " & rs2Items("id") 'conn.execute(sql) response.write (addId + idRef) & vbTab & rs2Items("id") & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Ja hvis refPage = 0 så er det et hovedmenupunkt jo... Hvis refPage id afviger fra nul så betyder det at RefPage skal pege på det menupunkt som har det ID som refPage indeholder!
<% mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From xxx Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into xxx(idRef, LangCode) VALUES("&rsItems("idRef")&",'EN') conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" set rs2Items = conn.execute(sql) addId = rs2Items("id") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE xxx SET idRef = ("&addId&" &+ idRef) where not refId = 0 AND id = " & rs2Items("id") 'conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 0 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1011 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1011 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1011 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1013 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1014 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1014 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1014 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 1020 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 10131013 UPDATE sitesystem SET refpageRef = (0 &+ refpageRef) where not refrefpage = 0 AND refpage = 101310130 Så er der duplikeret i menuen... Tilføj sprog
Hov min fejl... rettede lige noget i koden ser s[dan her ud :
UPDATE sitesystem SET refPage = (1013 &+ refPage) where not refpage = 0 AND refpage = 1013 UPDATE sitesystem SET refPage = (1013 &+ refPage) where not refpage = 0 AND refpage = 1013
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by refpage asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT refpage FROM sitesystem where LangCode = 'EN' order by refpage asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = ("&addrefpage&" &+ refPage) where not refpage = 0 AND refpage = " & rs2Items("refpage") 'conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = ("&addrefpage&" + refPage) where not refpage = 0 AND id = " & rs2Items("id") 'conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Sådan her skal det vidst se ud... Det er vigtigt at variablen id er din unikke nøgle i databasen, mens refpage er den side der refereres til.. i henhold til det du skrev i dit spg, så skal det være sådan her:
ID | refPage 1 0 2 0 3 0 4 2 ( dette er en underside til ID 2) 5 4 ( dette er så en underside til ID4)
UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1013 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1014 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1366 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1367 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1368 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1369 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1370 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1371 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1372 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1373 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1374 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1375 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1376 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1377 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1378 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1379 UPDATE sitesystem SET refPage = (1013 + refPage) where not refpage = 0 AND id = 1380
Men der er stadig det samme som jeg selv først havde lavet... 1013 er jo det gamle id på siden. Det skal det ikke være !
DEn danske version af menuen : ID | refPage 1 0 2 0 3 0 4 2 ( dette er en underside til ID 2) 5 4 ( dette er så en underside til ID4)
Engelsk version skal jo så se ud som dette
ID | refPage 11 0 12 0 13 0 14 12 ( dette er en underside til ID 2) 15 14 ( dette er så en underside til ID4)
For ellers bliver det stadig den danske side den referere til...!
hmm... Det er jeg med på.. Men er ikke sikker på jeg forstår at 1013 er med i den engelske menu, hvis den allerede findes i den danske..
Men prøv lige det her:
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("id"))&" where not refpage = 0 AND id = " & rs2Items("id") 'conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
UPDATE sitesystem SET refPage = 2026 where not refpage = 0 AND id = 1013 UPDATE sitesystem SET refPage = 2027 where not refpage = 0 AND id = 1014 Så er der duplikeret i menuen... Tilføj sprog
Jeg ændrede ingen ting... kopierede det direkte ind det du skrev...! Jeg sender det samme kode med igen..
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("id"))&" where not refpage = 0 AND id = " & rs2Items("id") conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Dette giver :
UPDATE sitesystem SET refPage = 1396 where not refpage = 0 AND id = 1396 UPDATE sitesystem SET refPage = 1397 where not refpage = 0 AND id = 1397 UPDATE sitesystem SET refPage = 1398 where not refpage = 0 AND id = 1398 UPDATE sitesystem SET refPage = 1399 where not refpage = 0 AND id = 1399 UPDATE sitesystem SET refPage = 1400 where not refpage = 0 AND id = 1400 UPDATE sitesystem SET refPage = 1401 where not refpage = 0 AND id = 1401 UPDATE sitesystem SET refPage = 1402 where not refpage = 0 AND id = 1402 UPDATE sitesystem SET refPage = 1403 where not refpage = 0 AND id = 1403 UPDATE sitesystem SET refPage = 1404 where not refpage = 0 AND id = 1404 UPDATE sitesystem SET refPage = 1405 where not refpage = 0 AND id = 1405 UPDATE sitesystem SET refPage = 1406 where not refpage = 0 AND id = 1406 UPDATE sitesystem SET refPage = 1407 where not refpage = 0 AND id = 1407 UPDATE sitesystem SET refPage = 1408 where not refpage = 0 AND id = 1408 UPDATE sitesystem SET refPage = 1409 where not refpage = 0 AND id = 1409 UPDATE sitesystem SET refPage = 1410 where not refpage = 0 AND id = 1410 UPDATE sitesystem SET refPage = 1411 where not refpage = 0 AND id = 1411 UPDATE sitesystem SET refPage = 1412 where not refpage = 0 AND id = 1412 Så er der duplikeret i menuen... Tilføj sprog
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("id"))&" where (not refpage = 0) AND id = " & rs2Items("id") conn.execute(sql) response.write sql & "<br>" rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
UPDATE sitesystem SET refPage = 1430 where not refpage = 0 AND id = 1430 UPDATE sitesystem SET refPage = 1431 where not refpage = 0 AND id = 1431 UPDATE sitesystem SET refPage = 1432 where not refpage = 0 AND id = 1432 UPDATE sitesystem SET refPage = 1433 where not refpage = 0 AND id = 1433 UPDATE sitesystem SET refPage = 1434 where not refpage = 0 AND id = 1434 UPDATE sitesystem SET refPage = 1435 where not refpage = 0 AND id = 1435 UPDATE sitesystem SET refPage = 1436 where not refpage = 0 AND id = 1436 UPDATE sitesystem SET refPage = 1437 where not refpage = 0 AND id = 1437 UPDATE sitesystem SET refPage = 1438 where not refpage = 0 AND id = 1438 UPDATE sitesystem SET refPage = 1439 where not refpage = 0 AND id = 1439 UPDATE sitesystem SET refPage = 1440 where not refpage = 0 AND id = 1440 UPDATE sitesystem SET refPage = 1441 where not refpage = 0 AND id = 1441 UPDATE sitesystem SET refPage = 1442 where not refpage = 0 AND id = 1442 UPDATE sitesystem SET refPage = 1443 where not refpage = 0 AND id = 1443 UPDATE sitesystem SET refPage = 1444 where not refpage = 0 AND id = 1444 UPDATE sitesystem SET refPage = 1445 where not refpage = 0 AND id = 1445 UPDATE sitesystem SET refPage = 1446 where not refpage = 0 AND id = 1446 Så er der duplikeret i menuen... Tilføj sprog
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("refPage"))&" where (not refpage = 0) AND id = " & rs2Items("id") conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Og i databasen er det blot de samme som den skriver
UPDATE sitesystem SET refPage = 1498 where not refpage = 0 AND id = 1498 UPDATE sitesystem SET refPage = 1499 where not refpage = 0 AND id = 1499 UPDATE sitesystem SET refPage = 1500 where not refpage = 0 AND id = 1500 UPDATE sitesystem SET refPage = 1501 where not refpage = 0 AND id = 1501 UPDATE sitesystem SET refPage = 1502 where not refpage = 0 AND id = 1502 UPDATE sitesystem SET refPage = 1503 where not refpage = 0 AND id = 1503 UPDATE sitesystem SET refPage = 1504 where not refpage = 0 AND id = 1504 UPDATE sitesystem SET refPage = 1505 where not refpage = 0 AND id = 1505 UPDATE sitesystem SET refPage = 1506 where not refpage = 0 AND id = 1506 UPDATE sitesystem SET refPage = 1507 where not refpage = 0 AND id = 1507 UPDATE sitesystem SET refPage = 1508 where not refpage = 0 AND id = 1508 UPDATE sitesystem SET refPage = 1509 where not refpage = 0 AND id = 1509 UPDATE sitesystem SET refPage = 1510 where not refpage = 0 AND id = 1510 UPDATE sitesystem SET refPage = 1511 where not refpage = 0 AND id = 1511 UPDATE sitesystem SET refPage = 1512 where not refpage = 0 AND id = 1512 UPDATE sitesystem SET refPage = 1513 where not refpage = 0 AND id = 1513 UPDATE sitesystem SET refPage = 1514 where not refpage = 0 AND id = 1514
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("refpage") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("refPage"))&" where (not refpage = 0) AND id = " & rs2Items("id") conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof sql = "insert into sitesystem(refPage, LangCode) VALUES("&rsItems("refPage")&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) addrefpage = rs2Items("id") while not rs2Items.eof OR rs2Items.bof sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage+rs2Items("refPage"))&" where (not refpage = 0) AND id = " & rs2Items("id") response.write sql & "<br>" conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Så er jeg vidst ved at være færdig med at rodde rundt med variablene... Prøv det her..!
UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1617 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1618 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1619 UPDATE sitesystem SET refPage = 2630 where (not refpage = 0) AND id = 1620 UPDATE sitesystem SET refPage = 2630 where (not refpage = 0) AND id = 1621 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1622 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1623 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1624 UPDATE sitesystem SET refPage = 2628 where (not refpage = 0) AND id = 1625 UPDATE sitesystem SET refPage = 2628 where (not refpage = 0) AND id = 1626 UPDATE sitesystem SET refPage = 2628 where (not refpage = 0) AND id = 1627 UPDATE sitesystem SET refPage = 2630 where (not refpage = 0) AND id = 1628 UPDATE sitesystem SET refPage = 2631 where (not refpage = 0) AND id = 1629 UPDATE sitesystem SET refPage = 2631 where (not refpage = 0) AND id = 1630 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1631 UPDATE sitesystem SET refPage = 2631 where (not refpage = 0) AND id = 1632 UPDATE sitesystem SET refPage = 2637 where (not refpage = 0) AND id = 1633
Og hvis jeg opdatere denne side med f5 får jeg dette
UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1617 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1618 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1619 UPDATE sitesystem SET refPage = 4247 where (not refpage = 0) AND id = 1620 UPDATE sitesystem SET refPage = 4247 where (not refpage = 0) AND id = 1621 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1622 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1623 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1624 UPDATE sitesystem SET refPage = 4245 where (not refpage = 0) AND id = 1625 UPDATE sitesystem SET refPage = 4245 where (not refpage = 0) AND id = 1626 UPDATE sitesystem SET refPage = 4245 where (not refpage = 0) AND id = 1627 UPDATE sitesystem SET refPage = 4247 where (not refpage = 0) AND id = 1628 UPDATE sitesystem SET refPage = 4248 where (not refpage = 0) AND id = 1629 UPDATE sitesystem SET refPage = 4248 where (not refpage = 0) AND id = 1630 UPDATE sitesystem SET refPage = 1617 where (not refpage = 0) AND id = 1631 UPDATE sitesystem SET refPage = 4248 where (not refpage = 0) AND id = 1632 UPDATE sitesystem SET refPage = 4254 where (not refpage = 0) AND id = 1633 Så er der duplikeret i menuen...
Anderledes i det mindste ;-) står som det her output :
eks. kan jeg fortælle at de steder refPage = 1011 i den danske hedder 2645... men det højeste nummer i databasen er 1650, det nummer den skulle have henvist til burde have været 1640..
men der er egentlig ikke rigtig noget i vejen med det for når du trykker f5 er refpage jo blevet opdateret en gang.. Og så bliver der lagt endnu et tal oven i det..
Og det er ikke meningen..
men gør sådan her::
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof count = rsItems("refPage") if not (count = 0) then count = rsItems("id") - count end if sql = "insert into sitesystem(refPage, LangCode) VALUES("&count&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) while not rs2Items.eof OR rs2Items.bof addrefpage = rs2Items("id") sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage-rs2Items("refPage"))&" where (not refpage = 0) AND id = " & rs2Items("id") response.write sql & "<br>" conn.execute(sql) rs2Items.movenext wend response.write "Så er der duplikeret i menuen..." end if
Okay nu virker det... men første gang jeg kører filen så bliver refpage i databasen under EN sproget til 1,2,3 taller henholdsvis efter hvordan det passer. Men så hvis jeg opdatere siden med f5 så virker det sku ;)
første gang skriver den afstanden mellem de forskellige menupunkter (til hovedpunkt)...
Men forstår ikke at der skal trykkes f5.. Burde ikke være nødvendigt..
men hvis du er sikker er der jo råd for det også..
mode = request.querystring("mode") if mode = "" then SQL = "SELECT * From sitesystem Where LangCode = 'DA' order by id asc" set rsItems = conn.execute(SQL) while not rsItems.eof or rsItems.bof count = rsItems("refPage") if not (count = 0) then count = rsItems("id") - count end if sql = "insert into sitesystem(refPage, LangCode) VALUES("&count&",'EN')" conn.execute(sql) rsItems.movenext wend response.redirect(request.servervariables("script_name") & "?mode=duplicate")
elseif mode = "duplicate" then sql = "SELECT id, refpage FROM sitesystem where LangCode = 'EN' order by id asc" set rs2Items = conn.execute(sql) while not rs2Items.eof OR rs2Items.bof addrefpage = rs2Items("id") sql = "UPDATE sitesystem SET refPage = "&CInt(addrefpage-rs2Items("refPage"))&" where (not refpage = 0) AND id = " & rs2Items("id") if request.querystring("tester") <> "" then response.write sql & "<br>" end if conn.execute(sql) rs2Items.movenext wend if not request.querystring("tester") <> "" then response.write "Så er der duplikeret i menuen..."´ else response.redirect(request.servervariables("script_name") & "?mode=duplicate&tester=2") end if end if
Det duer ikke, for der vil ikke kun være dansk og engelsk det skal udbygges. Samtidig så ville det kræve jeg skrev mine andre filer om (lige p.t laver jeg menuen manuelt i databasen) og det er jeg ikke interesseret i. Er det så svært, du har da været med tæt på, bortset fra at hvis id\erne ikke kom som 1, 2 ,3 ,4 så fukkede den lup.
Set patches = Server.CreateObject("Scripting.Dictionary")
' Her skal vi (kun) have fat i alle DE GAMLE! set updatingRs = server.CreateObject("ADODB.Recordset") strSQL = "SELECT * From SiteSystem WHERE id=-1" updatingRs.open strSQL, Conn, 1, 3 set readingRs = server.CreateObject("ADODB.REcordset") strSQL = "SELECT * From SiteSystem WHERE LangCode='DA'" readingRs.open strSQL, conn, 1, 3 While (Not readingRs.EOF And Not readingRs.BOF) tmpOldId = readingRs("id")
' Copy record updatingRs.addnew updatingRs("LangCode") = "EN" updatingRs("title") = readingRs("title")
' Her skal vi (kun) have fat i alle DE NYE! set patchingRs = server.CreateObject("ADODB.REcordset") strSQL = "SELECT * From SiteSystem WHERE LangCode='EN'" patchingRs.open strSQL, conn, 1, 3 While (Not patchingRs.EOF And Not patchingRs.BOF) tmpOldId = patchingRs.Fields("RefPage") If patches.exists(tmpOldId) Then tmpNewId = patches(tmpOldId) Else tmpNewId = 0 End If
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.