Avatar billede mini-me Nybegynder
03. december 2004 - 11:29 Der 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.

Håber i forstår hvad jeg mener og har en løsning.
Avatar billede ellebaek Nybegynder
03. december 2004 - 11:39 #1
hvordan gør du når du duplikere ?? (og hvorfor skal du duplikere ?)

For hvis du benytter en sql, så kan jeg da sagtens give dig et fif til hvordan det skal gøres tror jeg..

Men vis lige noget kode, så kan jeg se på det..!
Avatar billede mini-me Nybegynder
03. december 2004 - 12:01 #2
Jeg skal bruge det fordi jeg vil duplikere hele den danske menu til en eng, så jeg har et felt mere som hedder LangCode.

SQL = "SELECT * From xxx Where LangCode = 'DA'"
set rsItems = conn.execute(SQL)

while not rsItems.eof or rsItems.bof    
   
    set rs = server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT * From xxx where id=" & rsItems("Id")
    rs.open strSQL, conn, 1, 3
   
    for each field in rs.fields
        'on error resume next
        rs.addnew
        if field.Name = "id" then
           
        else                
            if field.name = "LangCode" then
               
            else 
                response.Write(Field.Name & " = " & field.value & "<br>")
                rs(field.Name) = rs(field.value)
            End if
        end if
        rs.update   
    next
   
rsItems.movenext
wend
   
   

og der er ingen garanti for at det er korrekt kodet :)
Avatar billede ellebaek Nybegynder
03. december 2004 - 12:23 #3
hmm...

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...!
Avatar billede mini-me Nybegynder
03. december 2004 - 12:27 #4
Men det er da ikke den nye RefID den vil lave en pegning til så ?
Avatar billede ellebaek Nybegynder
03. december 2004 - 12:36 #5
Nej for søren...

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
Avatar billede mini-me Nybegynder
03. december 2004 - 12:43 #6
ADODB.Field error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/admsite/modules/language/show_language.asp, line 60
Avatar billede mini-me Nybegynder
03. december 2004 - 12:43 #7
addId = rs2Items("id") = linie 60
Avatar billede mini-me Nybegynder
03. december 2004 - 12:45 #8
Well anyways så lavede den en række posteringer.... men stadig så referere den tilbage til det org. ID! Det er jo der mit problem ligger ;-)

Jeg skal have den til at finde ud af hvad det nye ID for RefID kommer til at hedde... ellers refererere den tilbage til en dansk underside
Avatar billede ellebaek Nybegynder
03. december 2004 - 12:46 #9
<%
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..!
Avatar billede mini-me Nybegynder
03. december 2004 - 13:04 #10
error '80020009'
show_language.asp, line 62

response.write rs2Items("id") & vbtab & rs2Items("Refpage") & "<br>"
Avatar billede mini-me Nybegynder
03. december 2004 - 13:07 #11
fjerne lige response.write og får bare
ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Men der opretter altså disse i databasen så den er ikke tom !
Avatar billede mini-me Nybegynder
03. december 2004 - 13:12 #12
jeg fandt din fejl... sql = "SELECT id FROM xxx where LangCode = ' EN' order by id asc" ' en' kan den ikke finde men 'en' :)
Avatar billede mini-me Nybegynder
03. december 2004 - 13:14 #13
Dette er outputet :
1013 0
1014 0
Så er der duplikeret i menuen...
MEn der er altså 17 poster i dben :)
Avatar billede ellebaek Nybegynder
03. december 2004 - 15:48 #14
hmm...

mystisk..

Hvad er outputtet af dette..?`

<%
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 16:07 #15
orvs...

Lige en php-fejl...

// skal rettes til ' skulle jeg mene...
Avatar billede mini-me Nybegynder
03. december 2004 - 16:50 #16
Mit output er nu 0 1010
0 1011
0 1012
0 1015
0 1016
0 1017
1011 1018
1011 1019
1011 1020
1013 1022
1014 1023
1014 1024
0 1025
1014 1026
1020 1028
Avatar billede mini-me Nybegynder
03. december 2004 - 16:53 #17
Og idREf henviser stadig til det gamle ID...!!?! Jeg er ved at blive sindssyg
Avatar billede ellebaek Nybegynder
03. december 2004 - 16:58 #18
Okay...

Skal lige være med..

Er det andet tal det tal der hedder id::+?

Altså det unikke tal..?
Avatar billede ellebaek Nybegynder
03. december 2004 - 17:00 #19
ja self...

Okay..
den del virker som den skal...

<%
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

Fandt lige en tastefejl..
Prøv det her...

Det burde altså virke..!
Avatar billede mini-me Nybegynder
03. december 2004 - 17:01 #20
ID = Unikke tal
IdRef = Det tal som referere til et id...(det er dette felt som skal finde den nye hoved ID)

ID | IdRef
1011    0
1012    0
1013    0
1014    1011 = dette er en underside til ID 1011
1015    1012 = dette er så en underside til ID 1012
Avatar billede mini-me Nybegynder
03. december 2004 - 17:03 #21
Microsoft OLE DB Provider for ODBC Drivers error '80040e57'

[Microsoft][ODBC Microsoft Access Driver]Numeric value out of range (null)

/admsite/modules/language/show_language.asp, line 61


Hmmm den tastefejl var det rs2.Items.bof så havde jeg rettet den ;-)
Avatar billede ellebaek Nybegynder
03. december 2004 - 21:53 #22
ja nemlig... det var det..

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

og så skrive output herinde...
Avatar billede mini-me Nybegynder
03. december 2004 - 22:53 #23
1013
1013 1013
1013 1014
1013 1351
1013 1352
1013 1353
1013 1354
1013 1355
1013 1356
1013 1357
1013 1358
1013 1359
1013 1360
1013 1361
1013 1362
1013 1363
1013 1364
1013 1365

hvis du bliver klogere af det :)
Avatar billede ellebaek Nybegynder
03. december 2004 - 22:55 #24
jo en smule..

Skal lige vide..

De tal der er 0 i forvejen i den danske menu..
Skal de også være 0 i den engelske..?
Avatar billede mini-me Nybegynder
03. december 2004 - 22:57 #25
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!
Avatar billede ellebaek Nybegynder
03. december 2004 - 22:59 #26
fino..

prøv sådan her...

<%
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

Og så lad os se hvad den siger...
Avatar billede mini-me Nybegynder
03. december 2004 - 23:01 #27
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:04 #28
Vis mig lige den kode du arbejder med...

For der er nogle problemer i forhold til det jeg har skrevet til dig...!
Avatar billede mini-me Nybegynder
03. december 2004 - 23:04 #29
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
Avatar billede mini-me Nybegynder
03. december 2004 - 23:05 #30
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:05 #31
er der kun de 2 linier nu...????
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:08 #32
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)
Avatar billede mini-me Nybegynder
03. december 2004 - 23:12 #33
Dette er outputtet :

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...!
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:16 #34
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
Avatar billede mini-me Nybegynder
03. december 2004 - 23:18 #35
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:20 #36
jeg tror altså at du rodder rundt i variablene...

Og så forstår jeg altså ikke at du kun får 2 resultater nu når du havde dem alle sammen før..

Hvad var det du ændrede..?
Avatar billede mini-me Nybegynder
03. december 2004 - 23:23 #37
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:25 #38
hmm...

nu er der ikke langt igen skulle jeg mene..

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
Avatar billede mini-me Nybegynder
03. december 2004 - 23:29 #39
output:

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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:31 #40
ja okay..

Min fejl...

Men sådan her..

Så burde den være der..!

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
Avatar billede mini-me Nybegynder
03. december 2004 - 23:31 #41
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
Avatar billede mini-me Nybegynder
03. december 2004 - 23:33 #42
Beklager... men det er stadig det org. danske id den referere til ;-)
Avatar billede mini-me Nybegynder
03. december 2004 - 23:39 #43
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
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:40 #44
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..!
Avatar billede mini-me Nybegynder
03. december 2004 - 23:46 #45
Dette er outputtet:

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...

Så der er noget galt ;)
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:48 #46
hvordan står det i databasen nu..?
Avatar billede mini-me Nybegynder
03. december 2004 - 23:52 #47
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..
Avatar billede ellebaek Nybegynder
03. december 2004 - 23:56 #48
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
Avatar billede mini-me Nybegynder
04. december 2004 - 00:00 #49
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 ;)

Men det er jo ikke hensigtsmæssigt...
Avatar billede mini-me Nybegynder
04. december 2004 - 00:01 #50
rettelse de bliver til 1, 7, 8, 9,9,9,9,10,0,12,8 men så når jeg opdatere kommer de rigtige refPAge numre.
Avatar billede mini-me Nybegynder
04. december 2004 - 00:02 #51
det må være antallet af poster den skriver første gang i databasen... altså poster tilbage til hovedId'et
Avatar billede mini-me Nybegynder
04. december 2004 - 00:05 #52
Hmmm gider ikke mere for i dag,, men du får tak for nu. Jeg vender lige tilbage i morgen så ser jeg også på det med friske øjen.
Avatar billede ellebaek Nybegynder
04. december 2004 - 00:06 #53
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
Avatar billede mini-me Nybegynder
04. december 2004 - 13:11 #54
Hmm det er der noget bug i...

eks.
ID - Refpage
10,
11,
12,
101, 10
102, 10
103, 10

Så virker det ikke da... den nye refpage findes ikke ;)
Avatar billede ellebaek Nybegynder
04. december 2004 - 16:07 #55
hmm..

det er meget svært at se hvad det er den gør forkert..

kan du måske sende databasen til mig..?
jens [@] mail.zix.dk
Avatar billede mini-me Nybegynder
10. december 2004 - 12:54 #56
Modtog du min mail ?!?!
Avatar billede ellebaek Nybegynder
11. december 2004 - 23:40 #57
ja..

har modtaget den, har bare haft travlt.. Beklager :-/
Kigger på det i morgen tidlig...!
Avatar billede mini-me Nybegynder
15. december 2004 - 18:18 #58
Hva så hvordan ser det ud? Er det noget der kan laves?
Avatar billede ellebaek Nybegynder
16. december 2004 - 09:17 #59
jeg har et forslag til hvordan det kan laves i hvert fald..

Var det ikke en ide bare at lave en ekstra kolonne med de engelske navne til menuerne..?

Ville da være en fordel for så kan du på den måde bare vælge enten engelsk eller dansk, så er du også sikker på at iderne passer..!
Avatar billede mini-me Nybegynder
16. december 2004 - 11:28 #60
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.
Avatar billede ellebaek Nybegynder
19. december 2004 - 15:58 #61
hmm..

Kan ikke helt overskue det lige nu..
Bliver nødt til at vende tilbage...!
Avatar billede mini-me Nybegynder
29. december 2004 - 19:31 #62
Her er løsningen ;-)

<%

Response.Buffer = True
session.Timeout = 600
session.LCID = 1030
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../../../../access/Maindatabase.mdb")

Function Main

    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")
       
        Response.Write("Setting RefPage to " & readingRs("RefPage") & "<br>")
        updatingRs("RefPage") = readingRs("RefPage")
        updatingRs.update

        tmpNewId = updatingRs("id")
       
        patches.Add tmpOldId, tmpNewId
'        response.Write("Patch " & tmpOldId & " -> " & tmpNewId & "<br>")
        readingRs.MoveNext
       
'        response.Write("<br>")
    Wend
    updatingRs.Close
    readingRs.Close
   
    ' 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
       
'        Response.Write("Updating " & patchingRs("id") & " with " & tmpNewId & "<br>")
        patchingRs("RefPage") = tmpNewId
        patchingRs.update
       
        patchingRs.MoveNext
    Wend
    patchingRs.Close       
   
End Function

Call Main


%>
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